comparison test/unit/.svn/text-base/repository_mercurial_test.rb.svn-base @ 117:af80e5618e9b redmine-1.1

* Update to Redmine 1.1-stable branch (Redmine SVN rev 4707)
author Chris Cannam
date Thu, 13 Jan 2011 12:53:21 +0000
parents 513646585e45
children cd2282d2aa55
comparison
equal deleted inserted replaced
39:150ceac17a8d 117:af80e5618e9b
13 # 13 #
14 # You should have received a copy of the GNU General Public License 14 # You should have received a copy of the GNU General Public License
15 # along with this program; if not, write to the Free Software 15 # along with this program; if not, write to the Free Software
16 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 16 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
17 17
18 require File.dirname(__FILE__) + '/../test_helper' 18 require File.expand_path('../../test_helper', __FILE__)
19 19
20 class RepositoryMercurialTest < ActiveSupport::TestCase 20 class RepositoryMercurialTest < ActiveSupport::TestCase
21 fixtures :projects 21 fixtures :projects
22 22
23 # No '..' in the repository path 23 # No '..' in the repository path
31 if File.directory?(REPOSITORY_PATH) 31 if File.directory?(REPOSITORY_PATH)
32 def test_fetch_changesets_from_scratch 32 def test_fetch_changesets_from_scratch
33 @repository.fetch_changesets 33 @repository.fetch_changesets
34 @repository.reload 34 @repository.reload
35 35
36 assert_equal 6, @repository.changesets.count 36 assert_equal 17, @repository.changesets.count
37 assert_equal 11, @repository.changes.count 37 assert_equal 25, @repository.changes.count
38 assert_equal "Initial import.\nThe repository contains 3 files.", @repository.changesets.find_by_revision('0').comments 38 assert_equal "Initial import.\nThe repository contains 3 files.", @repository.changesets.find_by_revision('0').comments
39 end 39 end
40 40
41 def test_fetch_changesets_incremental 41 def test_fetch_changesets_incremental
42 @repository.fetch_changesets 42 @repository.fetch_changesets
44 @repository.changesets.find(:all).each {|c| c.destroy if c.revision.to_i > 2} 44 @repository.changesets.find(:all).each {|c| c.destroy if c.revision.to_i > 2}
45 @repository.reload 45 @repository.reload
46 assert_equal 3, @repository.changesets.count 46 assert_equal 3, @repository.changesets.count
47 47
48 @repository.fetch_changesets 48 @repository.fetch_changesets
49 assert_equal 6, @repository.changesets.count 49 assert_equal 17, @repository.changesets.count
50 end 50 end
51 51
52 def test_entries 52 def test_entries
53 assert_equal 2, @repository.entries("sources", 2).size 53 assert_equal 2, @repository.entries("sources", 2).size
54 assert_equal 1, @repository.entries("sources", 3).size 54 assert_equal 1, @repository.entries("sources", 3).size
55 end 55 end
56 56
57 def test_locate_on_outdated_repository 57 def test_locate_on_outdated_repository
58 # Change the working dir state
59 %x{hg -R #{REPOSITORY_PATH} up -r 0}
60 assert_equal 1, @repository.entries("images", 0).size 58 assert_equal 1, @repository.entries("images", 0).size
61 assert_equal 2, @repository.entries("images").size 59 assert_equal 2, @repository.entries("images").size
62 assert_equal 2, @repository.entries("images", 2).size 60 assert_equal 2, @repository.entries("images", 2).size
63 end 61 end
64 62
65 63 def test_isodatesec
66 def test_cat 64 # Template keyword 'isodatesec' supported in Mercurial 1.0 and higher
67 assert @repository.scm.cat("sources/welcome_controller.rb", 2) 65 if @repository.scm.class.client_version_above?([1, 0])
68 assert_nil @repository.scm.cat("sources/welcome_controller.rb") 66 @repository.fetch_changesets
67 @repository.reload
68 rev0_committed_on = Time.gm(2007, 12, 14, 9, 22, 52)
69 assert_equal @repository.changesets.find_by_revision('0').committed_on, rev0_committed_on
70 end
69 end 71 end
70 72
73 def test_changeset_order_by_revision
74 @repository.fetch_changesets
75 @repository.reload
76
77 c0 = @repository.latest_changeset
78 c1 = @repository.changesets.find_by_revision('0')
79 # sorted by revision (id), not by date
80 assert c0.revision.to_i > c1.revision.to_i
81 assert c0.committed_on < c1.committed_on
82 end
83
84 def test_latest_changesets
85 @repository.fetch_changesets
86 @repository.reload
87
88 # with_limit
89 changesets = @repository.latest_changesets('', nil, 2)
90 assert_equal @repository.latest_changesets('', nil)[0, 2], changesets
91
92 # with_filepath
93 changesets = @repository.latest_changesets('/sql_escape/percent%dir/percent%file1.txt', nil)
94 assert_equal %w|11 10 9|, changesets.collect(&:revision)
95
96 changesets = @repository.latest_changesets('/sql_escape/underscore_dir/understrike_file.txt', nil)
97 assert_equal %w|12 9|, changesets.collect(&:revision)
98 end
99
100 def test_copied_files
101 @repository.fetch_changesets
102 @repository.reload
103
104 cs1 = @repository.changesets.find_by_revision('13')
105 assert_not_nil cs1
106 c1 = cs1.changes.sort_by(&:path)
107 assert_equal 2, c1.size
108
109 assert_equal 'A', c1[0].action
110 assert_equal '/sql_escape/percent%dir/percentfile1.txt', c1[0].path
111 assert_equal '/sql_escape/percent%dir/percent%file1.txt', c1[0].from_path
112
113 assert_equal 'A', c1[1].action
114 assert_equal '/sql_escape/underscore_dir/understrike-file.txt', c1[1].path
115 assert_equal '/sql_escape/underscore_dir/understrike_file.txt', c1[1].from_path
116
117 cs2 = @repository.changesets.find_by_revision('15')
118 c2 = cs2.changes
119 assert_equal 1, c2.size
120
121 assert_equal 'A', c2[0].action
122 assert_equal '/README (1)[2]&,%.-3_4', c2[0].path
123 assert_equal '/README', c2[0].from_path
124 end
71 else 125 else
72 puts "Mercurial test repository NOT FOUND. Skipping unit tests !!!" 126 puts "Mercurial test repository NOT FOUND. Skipping unit tests !!!"
73 def test_fake; assert true end 127 def test_fake; assert true end
74 end 128 end
75 end 129 end