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
@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