]> source.dussan.org Git - redmine.git/commitdiff
scm: mercurial: refactor mercurial unit test.
authorToshi MARUYAMA <marutosijp2@yahoo.co.jp>
Tue, 4 Jan 2011 16:34:40 +0000 (16:34 +0000)
committerToshi MARUYAMA <marutosijp2@yahoo.co.jp>
Tue, 4 Jan 2011 16:34:40 +0000 (16:34 +0000)
* 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

test/unit/lib/redmine/scm/adapters/mercurial_adapter_test.rb
test/unit/repository_mercurial_test.rb

index 72e0dcc56d7313cef184170da7c7b85644f6ba0f..f7b178c106873fd0ad0fcafd37e565226461bad5 100644 (file)
@@ -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
index 17b72cf6757aab18ad38d2a895d2625fa405fdce..4a51b3d39ba1a4025c3463e85ab6fb8bd48fa1d7 100644 (file)
@@ -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])