diff test/unit/repository_mercurial_test.rb @ 909:cbb26bc654de redmine-1.3

Update to Redmine 1.3-stable branch (Redmine SVN rev 8964)
author Chris Cannam
date Fri, 24 Feb 2012 19:09:32 +0000
parents cbce1fd3b1b7
children 5e80956cc792 433d4f72a19b
line wrap: on
line diff
--- a/test/unit/repository_mercurial_test.rb	Fri Feb 24 18:36:29 2012 +0000
+++ b/test/unit/repository_mercurial_test.rb	Fri Feb 24 19:09:32 2012 +0000
@@ -20,13 +20,11 @@
 class RepositoryMercurialTest < ActiveSupport::TestCase
   fixtures :projects
 
-  # No '..' in the repository path
-  REPOSITORY_PATH = RAILS_ROOT.gsub(%r{config\/\.\.}, '') + '/tmp/test/mercurial_repository'
-
+  REPOSITORY_PATH = Rails.root.join('tmp/test/mercurial_repository').to_s
+  NUM_REV = 32
   CHAR_1_HEX = "\xc3\x9c"
 
   if File.directory?(REPOSITORY_PATH)
-
     def setup
       klass = Repository::Mercurial
       assert_equal "Mercurial", klass.scm_name
@@ -34,7 +32,7 @@
       assert_not_equal "", klass.scm_command
       assert_equal true, klass.scm_available
 
-      @project = Project.find(3)
+      @project    = Project.find(3)
       @repository = Repository::Mercurial.create(
                       :project => @project,
                       :url     => REPOSITORY_PATH,
@@ -54,38 +52,47 @@
     end
 
     def test_fetch_changesets_from_scratch
+      assert_equal 0, @repository.changesets.count
       @repository.fetch_changesets
-      @repository.reload
-      assert_equal 29, @repository.changesets.count
-      assert_equal 37, @repository.changes.count
+      @project.reload
+      assert_equal NUM_REV, @repository.changesets.count
+      assert_equal 46, @repository.changes.count
       assert_equal "Initial import.\nThe repository contains 3 files.",
                    @repository.changesets.find_by_revision('0').comments
     end
 
     def test_fetch_changesets_incremental
+      assert_equal 0, @repository.changesets.count
       @repository.fetch_changesets
+      @project.reload
+      assert_equal NUM_REV, @repository.changesets.count
       # Remove changesets with revision > 2
       @repository.changesets.find(:all).each {|c| c.destroy if c.revision.to_i > 2}
-      @repository.reload
+      @project.reload
       assert_equal 3, @repository.changesets.count
 
       @repository.fetch_changesets
-      assert_equal 29, @repository.changesets.count
+      @project.reload
+      assert_equal NUM_REV, @repository.changesets.count
     end
 
     def test_isodatesec
       # Template keyword 'isodatesec' supported in Mercurial 1.0 and higher
       if @repository.scm.class.client_version_above?([1, 0])
+        assert_equal 0, @repository.changesets.count
         @repository.fetch_changesets
-        @repository.reload
+        @project.reload
+        assert_equal NUM_REV, @repository.changesets.count
         rev0_committed_on = Time.gm(2007, 12, 14, 9, 22, 52)
         assert_equal @repository.changesets.find_by_revision('0').committed_on, rev0_committed_on
       end
     end
 
     def test_changeset_order_by_revision
+      assert_equal 0, @repository.changesets.count
       @repository.fetch_changesets
-      @repository.reload
+      @project.reload
+      assert_equal NUM_REV, @repository.changesets.count
 
       c0 = @repository.latest_changeset
       c1 = @repository.changesets.find_by_revision('0')
@@ -95,24 +102,26 @@
     end
 
     def test_latest_changesets
+      assert_equal 0, @repository.changesets.count
       @repository.fetch_changesets
-      @repository.reload
+      @project.reload
+      assert_equal NUM_REV, @repository.changesets.count
 
       # with_limit
       changesets = @repository.latest_changesets('', nil, 2)
-      assert_equal %w|28 27|, changesets.collect(&:revision)
+      assert_equal %w|31 30|, changesets.collect(&:revision)
 
       # with_filepath
       changesets = @repository.latest_changesets(
                       '/sql_escape/percent%dir/percent%file1.txt', nil)
-      assert_equal %w|11 10 9|, changesets.collect(&:revision)
+      assert_equal %w|30 11 10 9|, changesets.collect(&:revision)
 
       changesets = @repository.latest_changesets(
                       '/sql_escape/underscore_dir/understrike_file.txt', nil)
-      assert_equal %w|12 9|, changesets.collect(&:revision)
+      assert_equal %w|30 12 9|, changesets.collect(&:revision)
 
       changesets = @repository.latest_changesets('README', nil)
-      assert_equal %w|28 17 8 6 1 0|, changesets.collect(&:revision)
+      assert_equal %w|31 30 28 17 8 6 1 0|, changesets.collect(&:revision)
 
       changesets = @repository.latest_changesets('README','8')
       assert_equal %w|8 6 1 0|, changesets.collect(&:revision)
@@ -126,7 +135,7 @@
 
       path = 'sql_escape/percent%dir'
       changesets = @repository.latest_changesets(path, nil)
-      assert_equal %w|13 11 10 9|, changesets.collect(&:revision)
+      assert_equal %w|30 13 11 10 9|, changesets.collect(&:revision)
 
       changesets = @repository.latest_changesets(path, '11')
       assert_equal %w|11 10 9|, changesets.collect(&:revision)
@@ -136,7 +145,7 @@
 
       path = 'sql_escape/underscore_dir'
       changesets = @repository.latest_changesets(path, nil)
-      assert_equal %w|13 12 9|, changesets.collect(&:revision)
+      assert_equal %w|30 13 12 9|, changesets.collect(&:revision)
 
       changesets = @repository.latest_changesets(path, '12')
       assert_equal %w|12 9|, changesets.collect(&:revision)
@@ -158,16 +167,20 @@
       assert_equal %w|4 3|, changesets.collect(&:revision)
 
       # named branch
-      changesets = @repository.latest_changesets('', @branch_char_1)
-      assert_equal %w|27 26|, changesets.collect(&:revision)
+      if @repository.scm.class.client_version_above?([1, 6])
+        changesets = @repository.latest_changesets('', @branch_char_1)
+        assert_equal %w|27 26|, changesets.collect(&:revision)
+      end
 
       changesets = @repository.latest_changesets("latin-1-dir/test-#{@char_1}-subdir", @branch_char_1)
       assert_equal %w|27|, changesets.collect(&:revision)
     end
 
     def test_copied_files
+      assert_equal 0, @repository.changesets.count
       @repository.fetch_changesets
-      @repository.reload
+      @project.reload
+      assert_equal NUM_REV, @repository.changesets.count
 
       cs1 = @repository.changesets.find_by_revision('13')
       assert_not_nil cs1
@@ -202,41 +215,69 @@
     end
 
     def test_find_changeset_by_name
+      assert_equal 0, @repository.changesets.count
       @repository.fetch_changesets
-      @repository.reload
+      @project.reload
+      assert_equal NUM_REV, @repository.changesets.count
       %w|2 400bb8672109 400|.each do |r|
         assert_equal '2', @repository.find_changeset_by_name(r).revision
       end
     end
 
     def test_find_changeset_by_invalid_name
+      assert_equal 0, @repository.changesets.count
       @repository.fetch_changesets
-      @repository.reload
+      @project.reload
+      assert_equal NUM_REV, @repository.changesets.count
       assert_nil @repository.find_changeset_by_name('100000')
     end
 
     def test_identifier
+      assert_equal 0, @repository.changesets.count
       @repository.fetch_changesets
-      @repository.reload
+      @project.reload
+      assert_equal NUM_REV, @repository.changesets.count
       c = @repository.changesets.find_by_revision('2')
       assert_equal c.scmid, c.identifier
     end
 
     def test_format_identifier
+      assert_equal 0, @repository.changesets.count
       @repository.fetch_changesets
-      @repository.reload
+      @project.reload
+      assert_equal NUM_REV, @repository.changesets.count
       c = @repository.changesets.find_by_revision('2')
       assert_equal '2:400bb8672109', c.format_identifier
     end
 
     def test_find_changeset_by_empty_name
+      assert_equal 0, @repository.changesets.count
       @repository.fetch_changesets
-      @repository.reload
+      @project.reload
+      assert_equal NUM_REV, @repository.changesets.count
       ['', ' ', nil].each do |r|
         assert_nil @repository.find_changeset_by_name(r)
       end
     end
 
+    def test_parents
+      assert_equal 0, @repository.changesets.count
+      @repository.fetch_changesets
+      @project.reload
+      assert_equal NUM_REV, @repository.changesets.count
+      r1 = @repository.changesets.find_by_revision('0')
+      assert_equal [], r1.parents
+      r2 = @repository.changesets.find_by_revision('1')
+      assert_equal 1, r2.parents.length
+      assert_equal "0885933ad4f6",
+                   r2.parents[0].identifier
+      r3 = @repository.changesets.find_by_revision('30')
+      assert_equal 2, r3.parents.length
+      r4 = [r3.parents[0].identifier, r3.parents[1].identifier].sort
+      assert_equal "3a330eb32958", r4[0]
+      assert_equal "a94b0528f24f", r4[1]
+    end
+
     def test_activities
       c = Changeset.new(:repository   => @repository,
                         :committed_on => Time.now,
@@ -248,8 +289,10 @@
     end
 
     def test_previous
+      assert_equal 0, @repository.changesets.count
       @repository.fetch_changesets
-      @repository.reload
+      @project.reload
+      assert_equal NUM_REV, @repository.changesets.count
       %w|28 3ae45e2d177d 3ae45|.each do |r1|
         changeset = @repository.find_changeset_by_name(r1)
         %w|27 7bbf4c738e71 7bbf|.each do |r2|
@@ -259,8 +302,10 @@
     end
 
     def test_previous_nil
+      assert_equal 0, @repository.changesets.count
       @repository.fetch_changesets
-      @repository.reload
+      @project.reload
+      assert_equal NUM_REV, @repository.changesets.count
       %w|0 0885933ad4f6 0885|.each do |r1|
         changeset = @repository.find_changeset_by_name(r1)
         assert_nil changeset.previous
@@ -268,8 +313,10 @@
     end
 
     def test_next
+      assert_equal 0, @repository.changesets.count
       @repository.fetch_changesets
-      @repository.reload
+      @project.reload
+      assert_equal NUM_REV, @repository.changesets.count
       %w|27 7bbf4c738e71 7bbf|.each do |r2|
         changeset = @repository.find_changeset_by_name(r2)
         %w|28 3ae45e2d177d 3ae45|.each do |r1|
@@ -279,9 +326,11 @@
     end
 
     def test_next_nil
+      assert_equal 0, @repository.changesets.count
       @repository.fetch_changesets
-      @repository.reload
-      %w|28 3ae45e2d177d 3ae45|.each do |r1|
+      @project.reload
+      assert_equal NUM_REV, @repository.changesets.count
+      %w|31 31eeee7395c8 31eee|.each do |r1|
         changeset = @repository.find_changeset_by_name(r1)
         assert_nil changeset.next
       end