[DRE-commits] [SCM] gem2deb.git branch, master, updated. f9dba1422e9fb793fd0778f5d74265ec88250907
Antonio Terceiro
terceiro at softwarelivre.org
Mon Apr 11 18:48:46 UTC 2011
The following commit has been merged in the master branch:
commit f9dba1422e9fb793fd0778f5d74265ec88250907
Author: Antonio Terceiro <terceiro at softwarelivre.org>
Date: Mon Apr 11 11:46:23 2011 -0700
Fix dh-make-ruby for directories without gemspec
Logic for extracting metadata moved to ... metadata class! \o/
diff --git a/lib/gem2deb/dh_make_ruby.rb b/lib/gem2deb/dh_make_ruby.rb
index 5e5a092..6f5a840 100644
--- a/lib/gem2deb/dh_make_ruby.rb
+++ b/lib/gem2deb/dh_make_ruby.rb
@@ -73,8 +73,8 @@ module Gem2Deb
def initialize_from_directory(directory)
self.input_directory = directory
read_metadata(directory)
- self.gem_name = metadata.gemspec.name
- self.gem_version = metadata.gemspec.version.to_s
+ self.gem_name = metadata.name
+ self.gem_version = metadata.version
self.source_package_name ||= gem_name_to_source_package_name(gem_name)
end
diff --git a/lib/gem2deb/metadata.rb b/lib/gem2deb/metadata.rb
index 1b07df6..a3be333 100644
--- a/lib/gem2deb/metadata.rb
+++ b/lib/gem2deb/metadata.rb
@@ -25,6 +25,7 @@ module Gem2Deb
attr_reader :native_extensions
def initialize(directory)
+ @source_dir = File.expand_path(directory)
Dir.chdir(directory) do
load_gemspec
if gemspec
@@ -39,6 +40,14 @@ module Gem2Deb
native_extensions.size > 0
end
+ def name
+ @name ||= gemspec && gemspec.name || read_name_from(source_dir)
+ end
+
+ def version
+ @version ||= gemspec && gemspec.version.to_s || read_version_from(source_dir) || '0.1.0~FIXME'
+ end
+
def homepage
gemspec && gemspec.homepage
end
@@ -61,6 +70,8 @@ module Gem2Deb
protected
+ attr_reader :source_dir
+
def load_gemspec
if File.exists?('metadata.yml')
@gemspec = YAML.load_file('metadata.yml')
@@ -86,5 +97,27 @@ module Gem2Deb
@native_extensions = Dir.glob('**/extconf.rb') + Dir.glob('ext/**/{configure,Rakefile}')
end
+ # FIXME duplicated logic (see below)
+ def read_name_from(directory)
+ return nil if directory.nil?
+ basename = File.basename(directory)
+ if basename =~ /^(.*)-([0-9.]+)$/
+ $1
+ else
+ basename
+ end
+ end
+
+ # FIXME duplicated logic (see above)
+ def read_version_from(directory)
+ return nil if directory.nil?
+ basename = File.basename(directory)
+ if basename =~ /^(.*)-([0-9.]+)$/
+ $2
+ else
+ nil
+ end
+ end
+
end
end
diff --git a/test/.test_helper.rb.swp b/test/.test_helper.rb.swp
new file mode 100644
index 0000000..9900482
Binary files /dev/null and b/test/.test_helper.rb.swp differ
diff --git a/test/integration/dh_make_ruby_integration_test.rb b/test/integration/dh_make_ruby_integration_test.rb
new file mode 100644
index 0000000..9d33c8a
--- /dev/null
+++ b/test/integration/dh_make_ruby_integration_test.rb
@@ -0,0 +1,19 @@
+require 'test_helper'
+
+class DhMakeRubyIntegrationTest < Gem2DebTestCase
+
+ should 'run dh-make against directory with gemspec' do
+ target_dir = File.join(tmpdir, 'withgemspec')
+ FileUtils.cp_r(SIMPLE_GIT, target_dir)
+ run_command("dh-make-ruby #{target_dir}")
+ end
+
+ should 'run dh-make against directory without gemspec' do
+ target_dir = File.join(tmpdir, 'withoutgemspec')
+ FileUtils.cp_r(SIMPLE_GIT, target_dir)
+ FileUtils.rm(File.join(target_dir, 'simplegit.gemspec'))
+ run_command("dh-make-ruby #{target_dir}")
+ end
+
+end
+
diff --git a/test/unit/metadata_test.rb b/test/unit/metadata_test.rb
index 9f629bc..5ed9db3 100644
--- a/test/unit/metadata_test.rb
+++ b/test/unit/metadata_test.rb
@@ -42,6 +42,17 @@ class MetaDataTest < Gem2DebTestCase
should 'have no test files' do
assert_equal [], @metadata.test_files
end
+ should 'provide a gem name from source dir' do
+ assert_equal 'tmp', @metadata.name
+ end
+ should 'provide a fallback version number' do
+ assert_not_nil @metadata.version
+ end
+ should 'read version number from source dir name when available' do
+ @metadata.stubs(:source_dir).returns('/tmp/package-1.2.3')
+ assert_equal 'package', @metadata.name
+ assert_equal '1.2.3', @metadata.version
+ end
end
context 'with gemspec' do
@@ -50,6 +61,16 @@ class MetaDataTest < Gem2DebTestCase
@metadata.stubs(:gemspec).returns(@gemspec)
end
+ should 'obtain gem name from gemspec' do
+ @gemspec.stubs(:name).returns('weird')
+ assert_equal 'weird', @metadata.name
+ end
+
+ should 'obtain gem version from gemspec' do
+ @gemspec.stubs(:version).returns(Gem::Version.new('0.0.1'))
+ assert_equal '0.0.1', @metadata.version
+ end
+
should 'obtain homepage from gemspec' do
@gemspec.stubs(:homepage).returns('http://www.debian.org/')
assert_equal 'http://www.debian.org/', @metadata.homepage
--
gem2deb.git
More information about the Pkg-ruby-extras-commits
mailing list