[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