]> source.dussan.org Git - redmine.git/commitdiff
scm: darcs: change io.gets to io.read and add darcs version unit (#4494, #5404).
authorToshi MARUYAMA <marutosijp2@yahoo.co.jp>
Sat, 22 Jan 2011 15:38:23 +0000 (15:38 +0000)
committerToshi MARUYAMA <marutosijp2@yahoo.co.jp>
Sat, 22 Jan 2011 15:38:23 +0000 (15:38 +0000)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@4743 e93f8b46-1217-0410-a6f0-8f06a7374b81

lib/redmine/scm/adapters/darcs_adapter.rb
test/unit/lib/redmine/scm/adapters/darcs_adapter_test.rb

index ecc69a4e95313d979df4fe3527a33f3258046df8..381f609c004b7cdb5e6f729f26ccdcb28364ecec 100644 (file)
@@ -31,16 +31,14 @@ module Redmine
           end
          
           def darcs_binary_version
-            cmd = "#{DARCS_BIN} --version"
-            version = nil
-            shellout(cmd) do |io|
-              # Read darcs version in first returned line
-              if m = io.gets.match(%r{((\d+\.)+\d+)})
-                version = m[0].scan(%r{\d+}).collect(&:to_i)
-              end
+            darcsversion = darcs_binary_version_from_command_line
+            if m = darcsversion.match(%r{\A(.*?)((\d+\.)+\d+)})
+              m[2].scan(%r{\d+}).collect(&:to_i)
             end
-            return nil if $? && $?.exitstatus != 0
-            version
+          end
+
+          def darcs_binary_version_from_command_line
+            shellout("#{DARCS_BIN} --version") { |io| io.read }.to_s
           end
         end
 
index ddcea89b6d8bd9ab9f93d04f0943e51425b69d3b..820ffdb900988d2abf34242538b88a12abca848c 100644 (file)
@@ -11,6 +11,21 @@ begin
         @adapter = Redmine::Scm::Adapters::DarcsAdapter.new(REPOSITORY_PATH)
       end
 
+      def test_darcsversion
+        to_test = { "1.0.9 (release)\n"  => [1,0,9] ,
+                    "2.2.0 (release)\n"  => [2,2,0] }
+        to_test.each do |s, v|
+          test_darcsversion_for(s, v)
+        end
+      end
+
+      private
+
+      def test_darcsversion_for(darcsversion, version)
+        @adapter.class.expects(:darcs_binary_version_from_command_line).returns(darcsversion)
+        assert_equal version, @adapter.class.darcs_binary_version
+      end
+
     else
       puts "Darcs test repository NOT FOUND. Skipping unit tests !!!"
       def test_fake; assert true end