From e86b8febdc79626d441d958e56856ae22b7604ae Mon Sep 17 00:00:00 2001 From: Toshi MARUYAMA Date: Tue, 4 Jan 2011 16:34:40 +0000 Subject: [PATCH] scm: mercurial: refactor mercurial unit test. * lib unit test switches if repository exists. * move cat test from app to lib. * no need to run "hg update" in unit test (#3421). git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@4629 e93f8b46-1217-0410-a6f0-8f06a7374b81 --- .../redmine/scm/adapters/mercurial_adapter_test.rb | 91 ++++++++++++---------- test/unit/repository_mercurial_test.rb | 7 -- 2 files changed, 52 insertions(+), 46 deletions(-) diff --git a/test/unit/lib/redmine/scm/adapters/mercurial_adapter_test.rb b/test/unit/lib/redmine/scm/adapters/mercurial_adapter_test.rb index 72e0dcc5..f7b178c1 100644 --- a/test/unit/lib/redmine/scm/adapters/mercurial_adapter_test.rb +++ b/test/unit/lib/redmine/scm/adapters/mercurial_adapter_test.rb @@ -9,49 +9,62 @@ begin TEMPLATE_EXTENSION = Redmine::Scm::Adapters::MercurialAdapter::TEMPLATE_EXTENSION REPOSITORY_PATH = RAILS_ROOT.gsub(%r{config\/\.\.}, '') + '/tmp/test/mercurial_repository' - - def test_hgversion - to_test = { "Mercurial Distributed SCM (version 0.9.5)\n" => [0,9,5], - "Mercurial Distributed SCM (1.0)\n" => [1,0], - "Mercurial Distributed SCM (1e4ddc9ac9f7+20080325)\n" => nil, - "Mercurial Distributed SCM (1.0.1+20080525)\n" => [1,0,1], - "Mercurial Distributed SCM (1916e629a29d)\n" => nil, - "Mercurial SCM Distribuito (versione 0.9.5)\n" => [0,9,5], - "(1.6)\n(1.7)\n(1.8)" => [1,6], - "(1.7.1)\r\n(1.8.1)\r\n(1.9.1)" => [1,7,1]} - - to_test.each do |s, v| - test_hgversion_for(s, v) + + if File.directory?(REPOSITORY_PATH) + def setup + @adapter = Redmine::Scm::Adapters::MercurialAdapter.new(REPOSITORY_PATH) end - end - - def test_template_path - to_test = { [0,9,5] => "0.9.5", - [1,0] => "1.0", - [] => "1.0", - [1,0,1] => "1.0", - [1,7] => "1.0", - [1,7,1] => "1.0"} - to_test.each do |v, template| - test_template_path_for(v, template) + + def test_hgversion + to_test = { "Mercurial Distributed SCM (version 0.9.5)\n" => [0,9,5], + "Mercurial Distributed SCM (1.0)\n" => [1,0], + "Mercurial Distributed SCM (1e4ddc9ac9f7+20080325)\n" => nil, + "Mercurial Distributed SCM (1.0.1+20080525)\n" => [1,0,1], + "Mercurial Distributed SCM (1916e629a29d)\n" => nil, + "Mercurial SCM Distribuito (versione 0.9.5)\n" => [0,9,5], + "(1.6)\n(1.7)\n(1.8)" => [1,6], + "(1.7.1)\r\n(1.8.1)\r\n(1.9.1)" => [1,7,1]} + + to_test.each do |s, v| + test_hgversion_for(s, v) + end end - end - - private - - def test_hgversion_for(hgversion, version) - Redmine::Scm::Adapters::MercurialAdapter.expects(:hgversion_from_command_line).returns(hgversion) - adapter = Redmine::Scm::Adapters::MercurialAdapter - assert_equal version, adapter.hgversion - end - - def test_template_path_for(version, template) - adapter = Redmine::Scm::Adapters::MercurialAdapter - assert_equal "#{TEMPLATES_DIR}/#{TEMPLATE_NAME}-#{template}.#{TEMPLATE_EXTENSION}", adapter.template_path_for(version) - assert File.exist?(adapter.template_path_for(version)) + + def test_template_path + to_test = { [0,9,5] => "0.9.5", + [1,0] => "1.0", + [] => "1.0", + [1,0,1] => "1.0", + [1,7] => "1.0", + [1,7,1] => "1.0"} + to_test.each do |v, template| + test_template_path_for(v, template) + end + end + + def test_cat + assert @adapter.cat("sources/welcome_controller.rb", 2) + assert_nil @adapter.cat("sources/welcome_controller.rb") + end + + private + + def test_hgversion_for(hgversion, version) + @adapter.class.expects(:hgversion_from_command_line).returns(hgversion) + assert_equal version, @adapter.class.hgversion + end + + def test_template_path_for(version, template) + assert_equal "#{TEMPLATES_DIR}/#{TEMPLATE_NAME}-#{template}.#{TEMPLATE_EXTENSION}", + @adapter.class.template_path_for(version) + assert File.exist?(@adapter.class.template_path_for(version)) + end + else + puts "Mercurial test repository NOT FOUND. Skipping unit tests !!!" + def test_fake; assert true end end end - + rescue LoadError class MercurialMochaFake < ActiveSupport::TestCase def test_fake; assert(false, "Requires mocha to run those tests") end diff --git a/test/unit/repository_mercurial_test.rb b/test/unit/repository_mercurial_test.rb index 17b72cf6..4a51b3d3 100644 --- a/test/unit/repository_mercurial_test.rb +++ b/test/unit/repository_mercurial_test.rb @@ -55,18 +55,11 @@ class RepositoryMercurialTest < ActiveSupport::TestCase end def test_locate_on_outdated_repository - # Change the working dir state - %x{hg -R #{REPOSITORY_PATH} up -r 0} assert_equal 1, @repository.entries("images", 0).size assert_equal 2, @repository.entries("images").size assert_equal 2, @repository.entries("images", 2).size end - def test_cat - assert @repository.scm.cat("sources/welcome_controller.rb", 2) - assert_nil @repository.scm.cat("sources/welcome_controller.rb") - end - def test_isodatesec # Template keyword 'isodatesec' supported in Mercurial 1.0 and higher if @repository.scm.class.client_version_above?([1, 0]) -- 2.11.0