##// END OF EJS Templates
scm: mercurial: add check scmid to RepositoryMercurialTest#test_fetch_changesets_from_scratch (#14361)...
Toshi MARUYAMA -
r12475:28fbc270fae8
parent child
Show More
@@ -1,400 +1,402
1 # Redmine - project management software
1 # Redmine - project management software
2 # Copyright (C) 2006-2014 Jean-Philippe Lang
2 # Copyright (C) 2006-2014 Jean-Philippe Lang
3 #
3 #
4 # This program is free software; you can redistribute it and/or
4 # This program is free software; you can redistribute it and/or
5 # modify it under the terms of the GNU General Public License
5 # modify it under the terms of the GNU General Public License
6 # as published by the Free Software Foundation; either version 2
6 # as published by the Free Software Foundation; either version 2
7 # of the License, or (at your option) any later version.
7 # of the License, or (at your option) any later version.
8 #
8 #
9 # This program is distributed in the hope that it will be useful,
9 # This program is distributed in the hope that it will be useful,
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 # GNU General Public License for more details.
12 # GNU General Public License for more details.
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.expand_path('../../test_helper', __FILE__)
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 include Redmine::I18n
23 include Redmine::I18n
24
24
25 REPOSITORY_PATH = Rails.root.join('tmp/test/mercurial_repository').to_s
25 REPOSITORY_PATH = Rails.root.join('tmp/test/mercurial_repository').to_s
26 NUM_REV = 32
26 NUM_REV = 32
27 CHAR_1_HEX = "\xc3\x9c"
27 CHAR_1_HEX = "\xc3\x9c"
28
28
29 def setup
29 def setup
30 @project = Project.find(3)
30 @project = Project.find(3)
31 @repository = Repository::Mercurial.create(
31 @repository = Repository::Mercurial.create(
32 :project => @project,
32 :project => @project,
33 :url => REPOSITORY_PATH,
33 :url => REPOSITORY_PATH,
34 :path_encoding => 'ISO-8859-1'
34 :path_encoding => 'ISO-8859-1'
35 )
35 )
36 assert @repository
36 assert @repository
37 @char_1 = CHAR_1_HEX.dup
37 @char_1 = CHAR_1_HEX.dup
38 @tag_char_1 = "tag-#{CHAR_1_HEX}-00"
38 @tag_char_1 = "tag-#{CHAR_1_HEX}-00"
39 @branch_char_0 = "branch-#{CHAR_1_HEX}-00"
39 @branch_char_0 = "branch-#{CHAR_1_HEX}-00"
40 @branch_char_1 = "branch-#{CHAR_1_HEX}-01"
40 @branch_char_1 = "branch-#{CHAR_1_HEX}-01"
41 if @char_1.respond_to?(:force_encoding)
41 if @char_1.respond_to?(:force_encoding)
42 @char_1.force_encoding('UTF-8')
42 @char_1.force_encoding('UTF-8')
43 @tag_char_1.force_encoding('UTF-8')
43 @tag_char_1.force_encoding('UTF-8')
44 @branch_char_0.force_encoding('UTF-8')
44 @branch_char_0.force_encoding('UTF-8')
45 @branch_char_1.force_encoding('UTF-8')
45 @branch_char_1.force_encoding('UTF-8')
46 end
46 end
47 end
47 end
48
48
49 def test_blank_path_to_repository_error_message
49 def test_blank_path_to_repository_error_message
50 set_language_if_valid 'en'
50 set_language_if_valid 'en'
51 repo = Repository::Mercurial.new(
51 repo = Repository::Mercurial.new(
52 :project => @project,
52 :project => @project,
53 :identifier => 'test'
53 :identifier => 'test'
54 )
54 )
55 assert !repo.save
55 assert !repo.save
56 assert_include "Path to repository can't be blank",
56 assert_include "Path to repository can't be blank",
57 repo.errors.full_messages
57 repo.errors.full_messages
58 end
58 end
59
59
60 def test_blank_path_to_repository_error_message_fr
60 def test_blank_path_to_repository_error_message_fr
61 set_language_if_valid 'fr'
61 set_language_if_valid 'fr'
62 str = "Chemin du d\xc3\xa9p\xc3\xb4t doit \xc3\xaatre renseign\xc3\xa9(e)"
62 str = "Chemin du d\xc3\xa9p\xc3\xb4t doit \xc3\xaatre renseign\xc3\xa9(e)"
63 str.force_encoding('UTF-8') if str.respond_to?(:force_encoding)
63 str.force_encoding('UTF-8') if str.respond_to?(:force_encoding)
64 repo = Repository::Mercurial.new(
64 repo = Repository::Mercurial.new(
65 :project => @project,
65 :project => @project,
66 :url => "",
66 :url => "",
67 :identifier => 'test',
67 :identifier => 'test',
68 :path_encoding => ''
68 :path_encoding => ''
69 )
69 )
70 assert !repo.save
70 assert !repo.save
71 assert_include str, repo.errors.full_messages
71 assert_include str, repo.errors.full_messages
72 end
72 end
73
73
74 if File.directory?(REPOSITORY_PATH)
74 if File.directory?(REPOSITORY_PATH)
75 def test_scm_available
75 def test_scm_available
76 klass = Repository::Mercurial
76 klass = Repository::Mercurial
77 assert_equal "Mercurial", klass.scm_name
77 assert_equal "Mercurial", klass.scm_name
78 assert klass.scm_adapter_class
78 assert klass.scm_adapter_class
79 assert_not_equal "", klass.scm_command
79 assert_not_equal "", klass.scm_command
80 assert_equal true, klass.scm_available
80 assert_equal true, klass.scm_available
81 end
81 end
82
82
83 def test_entries
83 def test_entries
84 entries = @repository.entries
84 entries = @repository.entries
85 assert_kind_of Redmine::Scm::Adapters::Entries, entries
85 assert_kind_of Redmine::Scm::Adapters::Entries, entries
86 end
86 end
87
87
88 def test_fetch_changesets_from_scratch
88 def test_fetch_changesets_from_scratch
89 assert_equal 0, @repository.changesets.count
89 assert_equal 0, @repository.changesets.count
90 @repository.fetch_changesets
90 @repository.fetch_changesets
91 @project.reload
91 @project.reload
92 assert_equal NUM_REV, @repository.changesets.count
92 assert_equal NUM_REV, @repository.changesets.count
93 assert_equal 46, @repository.filechanges.count
93 assert_equal 46, @repository.filechanges.count
94 rev0 = @repository.changesets.find_by_revision('0')
94 assert_equal "Initial import.\nThe repository contains 3 files.",
95 assert_equal "Initial import.\nThe repository contains 3 files.",
95 @repository.changesets.find_by_revision('0').comments
96 rev0.comments
97 assert_equal "0885933ad4f6", rev0.scmid
96 end
98 end
97
99
98 def test_fetch_changesets_incremental
100 def test_fetch_changesets_incremental
99 assert_equal 0, @repository.changesets.count
101 assert_equal 0, @repository.changesets.count
100 @repository.fetch_changesets
102 @repository.fetch_changesets
101 @project.reload
103 @project.reload
102 assert_equal NUM_REV, @repository.changesets.count
104 assert_equal NUM_REV, @repository.changesets.count
103 # Remove changesets with revision > 2
105 # Remove changesets with revision > 2
104 @repository.changesets.each {|c| c.destroy if c.revision.to_i > 2}
106 @repository.changesets.each {|c| c.destroy if c.revision.to_i > 2}
105 @project.reload
107 @project.reload
106 @repository.reload
108 @repository.reload
107 assert_equal 3, @repository.changesets.count
109 assert_equal 3, @repository.changesets.count
108
110
109 @repository.fetch_changesets
111 @repository.fetch_changesets
110 @project.reload
112 @project.reload
111 assert_equal NUM_REV, @repository.changesets.count
113 assert_equal NUM_REV, @repository.changesets.count
112 end
114 end
113
115
114 def test_isodatesec
116 def test_isodatesec
115 # Template keyword 'isodatesec' supported in Mercurial 1.0 and higher
117 # Template keyword 'isodatesec' supported in Mercurial 1.0 and higher
116 if @repository.scm.class.client_version_above?([1, 0])
118 if @repository.scm.class.client_version_above?([1, 0])
117 assert_equal 0, @repository.changesets.count
119 assert_equal 0, @repository.changesets.count
118 @repository.fetch_changesets
120 @repository.fetch_changesets
119 @project.reload
121 @project.reload
120 assert_equal NUM_REV, @repository.changesets.count
122 assert_equal NUM_REV, @repository.changesets.count
121 rev0_committed_on = Time.gm(2007, 12, 14, 9, 22, 52)
123 rev0_committed_on = Time.gm(2007, 12, 14, 9, 22, 52)
122 assert_equal @repository.changesets.find_by_revision('0').committed_on, rev0_committed_on
124 assert_equal @repository.changesets.find_by_revision('0').committed_on, rev0_committed_on
123 end
125 end
124 end
126 end
125
127
126 def test_changeset_order_by_revision
128 def test_changeset_order_by_revision
127 assert_equal 0, @repository.changesets.count
129 assert_equal 0, @repository.changesets.count
128 @repository.fetch_changesets
130 @repository.fetch_changesets
129 @project.reload
131 @project.reload
130 assert_equal NUM_REV, @repository.changesets.count
132 assert_equal NUM_REV, @repository.changesets.count
131
133
132 c0 = @repository.latest_changeset
134 c0 = @repository.latest_changeset
133 c1 = @repository.changesets.find_by_revision('0')
135 c1 = @repository.changesets.find_by_revision('0')
134 # sorted by revision (id), not by date
136 # sorted by revision (id), not by date
135 assert c0.revision.to_i > c1.revision.to_i
137 assert c0.revision.to_i > c1.revision.to_i
136 assert c0.committed_on < c1.committed_on
138 assert c0.committed_on < c1.committed_on
137 end
139 end
138
140
139 def test_latest_changesets
141 def test_latest_changesets
140 assert_equal 0, @repository.changesets.count
142 assert_equal 0, @repository.changesets.count
141 @repository.fetch_changesets
143 @repository.fetch_changesets
142 @project.reload
144 @project.reload
143 assert_equal NUM_REV, @repository.changesets.count
145 assert_equal NUM_REV, @repository.changesets.count
144
146
145 # with_limit
147 # with_limit
146 changesets = @repository.latest_changesets('', nil, 2)
148 changesets = @repository.latest_changesets('', nil, 2)
147 assert_equal %w|31 30|, changesets.collect(&:revision)
149 assert_equal %w|31 30|, changesets.collect(&:revision)
148
150
149 # with_filepath
151 # with_filepath
150 changesets = @repository.latest_changesets(
152 changesets = @repository.latest_changesets(
151 '/sql_escape/percent%dir/percent%file1.txt', nil)
153 '/sql_escape/percent%dir/percent%file1.txt', nil)
152 assert_equal %w|30 11 10 9|, changesets.collect(&:revision)
154 assert_equal %w|30 11 10 9|, changesets.collect(&:revision)
153
155
154 changesets = @repository.latest_changesets(
156 changesets = @repository.latest_changesets(
155 '/sql_escape/underscore_dir/understrike_file.txt', nil)
157 '/sql_escape/underscore_dir/understrike_file.txt', nil)
156 assert_equal %w|30 12 9|, changesets.collect(&:revision)
158 assert_equal %w|30 12 9|, changesets.collect(&:revision)
157
159
158 changesets = @repository.latest_changesets('README', nil)
160 changesets = @repository.latest_changesets('README', nil)
159 assert_equal %w|31 30 28 17 8 6 1 0|, changesets.collect(&:revision)
161 assert_equal %w|31 30 28 17 8 6 1 0|, changesets.collect(&:revision)
160
162
161 changesets = @repository.latest_changesets('README','8')
163 changesets = @repository.latest_changesets('README','8')
162 assert_equal %w|8 6 1 0|, changesets.collect(&:revision)
164 assert_equal %w|8 6 1 0|, changesets.collect(&:revision)
163
165
164 changesets = @repository.latest_changesets('README','8', 2)
166 changesets = @repository.latest_changesets('README','8', 2)
165 assert_equal %w|8 6|, changesets.collect(&:revision)
167 assert_equal %w|8 6|, changesets.collect(&:revision)
166
168
167 # with_dirpath
169 # with_dirpath
168 changesets = @repository.latest_changesets('images', nil)
170 changesets = @repository.latest_changesets('images', nil)
169 assert_equal %w|1 0|, changesets.collect(&:revision)
171 assert_equal %w|1 0|, changesets.collect(&:revision)
170
172
171 path = 'sql_escape/percent%dir'
173 path = 'sql_escape/percent%dir'
172 changesets = @repository.latest_changesets(path, nil)
174 changesets = @repository.latest_changesets(path, nil)
173 assert_equal %w|30 13 11 10 9|, changesets.collect(&:revision)
175 assert_equal %w|30 13 11 10 9|, changesets.collect(&:revision)
174
176
175 changesets = @repository.latest_changesets(path, '11')
177 changesets = @repository.latest_changesets(path, '11')
176 assert_equal %w|11 10 9|, changesets.collect(&:revision)
178 assert_equal %w|11 10 9|, changesets.collect(&:revision)
177
179
178 changesets = @repository.latest_changesets(path, '11', 2)
180 changesets = @repository.latest_changesets(path, '11', 2)
179 assert_equal %w|11 10|, changesets.collect(&:revision)
181 assert_equal %w|11 10|, changesets.collect(&:revision)
180
182
181 path = 'sql_escape/underscore_dir'
183 path = 'sql_escape/underscore_dir'
182 changesets = @repository.latest_changesets(path, nil)
184 changesets = @repository.latest_changesets(path, nil)
183 assert_equal %w|30 13 12 9|, changesets.collect(&:revision)
185 assert_equal %w|30 13 12 9|, changesets.collect(&:revision)
184
186
185 changesets = @repository.latest_changesets(path, '12')
187 changesets = @repository.latest_changesets(path, '12')
186 assert_equal %w|12 9|, changesets.collect(&:revision)
188 assert_equal %w|12 9|, changesets.collect(&:revision)
187
189
188 changesets = @repository.latest_changesets(path, '12', 1)
190 changesets = @repository.latest_changesets(path, '12', 1)
189 assert_equal %w|12|, changesets.collect(&:revision)
191 assert_equal %w|12|, changesets.collect(&:revision)
190 end
192 end
191
193
192 def test_latest_changesets_tag
194 def test_latest_changesets_tag
193 assert_equal 0, @repository.changesets.count
195 assert_equal 0, @repository.changesets.count
194 @repository.fetch_changesets
196 @repository.fetch_changesets
195 @project.reload
197 @project.reload
196 assert_equal NUM_REV, @repository.changesets.count
198 assert_equal NUM_REV, @repository.changesets.count
197
199
198 changesets = @repository.latest_changesets('', 'tag_test.00')
200 changesets = @repository.latest_changesets('', 'tag_test.00')
199 assert_equal %w|5 4 3 2 1 0|, changesets.collect(&:revision)
201 assert_equal %w|5 4 3 2 1 0|, changesets.collect(&:revision)
200
202
201 changesets = @repository.latest_changesets('', 'tag_test.00', 2)
203 changesets = @repository.latest_changesets('', 'tag_test.00', 2)
202 assert_equal %w|5 4|, changesets.collect(&:revision)
204 assert_equal %w|5 4|, changesets.collect(&:revision)
203
205
204 changesets = @repository.latest_changesets('sources', 'tag_test.00')
206 changesets = @repository.latest_changesets('sources', 'tag_test.00')
205 assert_equal %w|4 3 2 1 0|, changesets.collect(&:revision)
207 assert_equal %w|4 3 2 1 0|, changesets.collect(&:revision)
206
208
207 changesets = @repository.latest_changesets('sources', 'tag_test.00', 2)
209 changesets = @repository.latest_changesets('sources', 'tag_test.00', 2)
208 assert_equal %w|4 3|, changesets.collect(&:revision)
210 assert_equal %w|4 3|, changesets.collect(&:revision)
209 end
211 end
210
212
211 def test_latest_changesets_branch
213 def test_latest_changesets_branch
212 assert_equal 0, @repository.changesets.count
214 assert_equal 0, @repository.changesets.count
213 @repository.fetch_changesets
215 @repository.fetch_changesets
214 @project.reload
216 @project.reload
215 assert_equal NUM_REV, @repository.changesets.count
217 assert_equal NUM_REV, @repository.changesets.count
216
218
217 if @repository.scm.class.client_version_above?([1, 6])
219 if @repository.scm.class.client_version_above?([1, 6])
218 changesets = @repository.latest_changesets('', @branch_char_1)
220 changesets = @repository.latest_changesets('', @branch_char_1)
219 assert_equal %w|27 26|, changesets.collect(&:revision)
221 assert_equal %w|27 26|, changesets.collect(&:revision)
220 end
222 end
221
223
222 changesets = @repository.latest_changesets("latin-1-dir/test-#{@char_1}-subdir", @branch_char_1)
224 changesets = @repository.latest_changesets("latin-1-dir/test-#{@char_1}-subdir", @branch_char_1)
223 assert_equal %w|27|, changesets.collect(&:revision)
225 assert_equal %w|27|, changesets.collect(&:revision)
224 end
226 end
225
227
226 def test_copied_files
228 def test_copied_files
227 assert_equal 0, @repository.changesets.count
229 assert_equal 0, @repository.changesets.count
228 @repository.fetch_changesets
230 @repository.fetch_changesets
229 @project.reload
231 @project.reload
230 assert_equal NUM_REV, @repository.changesets.count
232 assert_equal NUM_REV, @repository.changesets.count
231
233
232 cs1 = @repository.changesets.find_by_revision('13')
234 cs1 = @repository.changesets.find_by_revision('13')
233 assert_not_nil cs1
235 assert_not_nil cs1
234 c1 = cs1.filechanges.sort_by(&:path)
236 c1 = cs1.filechanges.sort_by(&:path)
235 assert_equal 2, c1.size
237 assert_equal 2, c1.size
236
238
237 assert_equal 'A', c1[0].action
239 assert_equal 'A', c1[0].action
238 assert_equal '/sql_escape/percent%dir/percentfile1.txt', c1[0].path
240 assert_equal '/sql_escape/percent%dir/percentfile1.txt', c1[0].path
239 assert_equal '/sql_escape/percent%dir/percent%file1.txt', c1[0].from_path
241 assert_equal '/sql_escape/percent%dir/percent%file1.txt', c1[0].from_path
240 assert_equal '3a330eb32958', c1[0].from_revision
242 assert_equal '3a330eb32958', c1[0].from_revision
241
243
242 assert_equal 'A', c1[1].action
244 assert_equal 'A', c1[1].action
243 assert_equal '/sql_escape/underscore_dir/understrike-file.txt', c1[1].path
245 assert_equal '/sql_escape/underscore_dir/understrike-file.txt', c1[1].path
244 assert_equal '/sql_escape/underscore_dir/understrike_file.txt', c1[1].from_path
246 assert_equal '/sql_escape/underscore_dir/understrike_file.txt', c1[1].from_path
245
247
246 cs2 = @repository.changesets.find_by_revision('15')
248 cs2 = @repository.changesets.find_by_revision('15')
247 c2 = cs2.filechanges
249 c2 = cs2.filechanges
248 assert_equal 1, c2.size
250 assert_equal 1, c2.size
249
251
250 assert_equal 'A', c2[0].action
252 assert_equal 'A', c2[0].action
251 assert_equal '/README (1)[2]&,%.-3_4', c2[0].path
253 assert_equal '/README (1)[2]&,%.-3_4', c2[0].path
252 assert_equal '/README', c2[0].from_path
254 assert_equal '/README', c2[0].from_path
253 assert_equal '933ca60293d7', c2[0].from_revision
255 assert_equal '933ca60293d7', c2[0].from_revision
254
256
255 cs3 = @repository.changesets.find_by_revision('19')
257 cs3 = @repository.changesets.find_by_revision('19')
256 c3 = cs3.filechanges
258 c3 = cs3.filechanges
257 assert_equal 1, c3.size
259 assert_equal 1, c3.size
258 assert_equal 'A', c3[0].action
260 assert_equal 'A', c3[0].action
259 assert_equal "/latin-1-dir/test-#{@char_1}-1.txt", c3[0].path
261 assert_equal "/latin-1-dir/test-#{@char_1}-1.txt", c3[0].path
260 assert_equal "/latin-1-dir/test-#{@char_1}.txt", c3[0].from_path
262 assert_equal "/latin-1-dir/test-#{@char_1}.txt", c3[0].from_path
261 assert_equal '5d9891a1b425', c3[0].from_revision
263 assert_equal '5d9891a1b425', c3[0].from_revision
262 end
264 end
263
265
264 def test_find_changeset_by_name
266 def test_find_changeset_by_name
265 assert_equal 0, @repository.changesets.count
267 assert_equal 0, @repository.changesets.count
266 @repository.fetch_changesets
268 @repository.fetch_changesets
267 @project.reload
269 @project.reload
268 assert_equal NUM_REV, @repository.changesets.count
270 assert_equal NUM_REV, @repository.changesets.count
269 %w|2 400bb8672109 400|.each do |r|
271 %w|2 400bb8672109 400|.each do |r|
270 assert_equal '2', @repository.find_changeset_by_name(r).revision
272 assert_equal '2', @repository.find_changeset_by_name(r).revision
271 end
273 end
272 end
274 end
273
275
274 def test_find_changeset_by_invalid_name
276 def test_find_changeset_by_invalid_name
275 assert_equal 0, @repository.changesets.count
277 assert_equal 0, @repository.changesets.count
276 @repository.fetch_changesets
278 @repository.fetch_changesets
277 @project.reload
279 @project.reload
278 assert_equal NUM_REV, @repository.changesets.count
280 assert_equal NUM_REV, @repository.changesets.count
279 assert_nil @repository.find_changeset_by_name('100000')
281 assert_nil @repository.find_changeset_by_name('100000')
280 end
282 end
281
283
282 def test_identifier
284 def test_identifier
283 assert_equal 0, @repository.changesets.count
285 assert_equal 0, @repository.changesets.count
284 @repository.fetch_changesets
286 @repository.fetch_changesets
285 @project.reload
287 @project.reload
286 assert_equal NUM_REV, @repository.changesets.count
288 assert_equal NUM_REV, @repository.changesets.count
287 c = @repository.changesets.find_by_revision('2')
289 c = @repository.changesets.find_by_revision('2')
288 assert_equal c.scmid, c.identifier
290 assert_equal c.scmid, c.identifier
289 end
291 end
290
292
291 def test_format_identifier
293 def test_format_identifier
292 assert_equal 0, @repository.changesets.count
294 assert_equal 0, @repository.changesets.count
293 @repository.fetch_changesets
295 @repository.fetch_changesets
294 @project.reload
296 @project.reload
295 assert_equal NUM_REV, @repository.changesets.count
297 assert_equal NUM_REV, @repository.changesets.count
296 c = @repository.changesets.find_by_revision('2')
298 c = @repository.changesets.find_by_revision('2')
297 assert_equal '2:400bb8672109', c.format_identifier
299 assert_equal '2:400bb8672109', c.format_identifier
298 end
300 end
299
301
300 def test_format_identifier_long_id
302 def test_format_identifier_long_id
301 assert_equal 0, @repository.changesets.count
303 assert_equal 0, @repository.changesets.count
302 Changeset.create!(:repository => @repository,
304 Changeset.create!(:repository => @repository,
303 :committed_on => Time.now,
305 :committed_on => Time.now,
304 :revision => '0',
306 :revision => '0',
305 :scmid => '0885933ad4f68d77c2649cd11f8311276e7ef7ce',
307 :scmid => '0885933ad4f68d77c2649cd11f8311276e7ef7ce',
306 :comments => 'test')
308 :comments => 'test')
307 c = @repository.changesets.find_by_revision('0')
309 c = @repository.changesets.find_by_revision('0')
308 assert_equal '0:0885933ad4f6', c.format_identifier
310 assert_equal '0:0885933ad4f6', c.format_identifier
309 end
311 end
310
312
311 def test_find_changeset_by_empty_name
313 def test_find_changeset_by_empty_name
312 assert_equal 0, @repository.changesets.count
314 assert_equal 0, @repository.changesets.count
313 @repository.fetch_changesets
315 @repository.fetch_changesets
314 @project.reload
316 @project.reload
315 assert_equal NUM_REV, @repository.changesets.count
317 assert_equal NUM_REV, @repository.changesets.count
316 ['', ' ', nil].each do |r|
318 ['', ' ', nil].each do |r|
317 assert_nil @repository.find_changeset_by_name(r)
319 assert_nil @repository.find_changeset_by_name(r)
318 end
320 end
319 end
321 end
320
322
321 def test_parents
323 def test_parents
322 assert_equal 0, @repository.changesets.count
324 assert_equal 0, @repository.changesets.count
323 @repository.fetch_changesets
325 @repository.fetch_changesets
324 @project.reload
326 @project.reload
325 assert_equal NUM_REV, @repository.changesets.count
327 assert_equal NUM_REV, @repository.changesets.count
326 r1 = @repository.changesets.find_by_revision('0')
328 r1 = @repository.changesets.find_by_revision('0')
327 assert_equal [], r1.parents
329 assert_equal [], r1.parents
328 r2 = @repository.changesets.find_by_revision('1')
330 r2 = @repository.changesets.find_by_revision('1')
329 assert_equal 1, r2.parents.length
331 assert_equal 1, r2.parents.length
330 assert_equal "0885933ad4f6",
332 assert_equal "0885933ad4f6",
331 r2.parents[0].identifier
333 r2.parents[0].identifier
332 r3 = @repository.changesets.find_by_revision('30')
334 r3 = @repository.changesets.find_by_revision('30')
333 assert_equal 2, r3.parents.length
335 assert_equal 2, r3.parents.length
334 r4 = [r3.parents[0].identifier, r3.parents[1].identifier].sort
336 r4 = [r3.parents[0].identifier, r3.parents[1].identifier].sort
335 assert_equal "3a330eb32958", r4[0]
337 assert_equal "3a330eb32958", r4[0]
336 assert_equal "a94b0528f24f", r4[1]
338 assert_equal "a94b0528f24f", r4[1]
337 end
339 end
338
340
339 def test_activities
341 def test_activities
340 c = Changeset.new(:repository => @repository,
342 c = Changeset.new(:repository => @repository,
341 :committed_on => Time.now,
343 :committed_on => Time.now,
342 :revision => '123',
344 :revision => '123',
343 :scmid => 'abc400bb8672',
345 :scmid => 'abc400bb8672',
344 :comments => 'test')
346 :comments => 'test')
345 assert c.event_title.include?('123:abc400bb8672:')
347 assert c.event_title.include?('123:abc400bb8672:')
346 assert_equal 'abc400bb8672', c.event_url[:rev]
348 assert_equal 'abc400bb8672', c.event_url[:rev]
347 end
349 end
348
350
349 def test_previous
351 def test_previous
350 assert_equal 0, @repository.changesets.count
352 assert_equal 0, @repository.changesets.count
351 @repository.fetch_changesets
353 @repository.fetch_changesets
352 @project.reload
354 @project.reload
353 assert_equal NUM_REV, @repository.changesets.count
355 assert_equal NUM_REV, @repository.changesets.count
354 %w|28 3ae45e2d177d 3ae45|.each do |r1|
356 %w|28 3ae45e2d177d 3ae45|.each do |r1|
355 changeset = @repository.find_changeset_by_name(r1)
357 changeset = @repository.find_changeset_by_name(r1)
356 %w|27 7bbf4c738e71 7bbf|.each do |r2|
358 %w|27 7bbf4c738e71 7bbf|.each do |r2|
357 assert_equal @repository.find_changeset_by_name(r2), changeset.previous
359 assert_equal @repository.find_changeset_by_name(r2), changeset.previous
358 end
360 end
359 end
361 end
360 end
362 end
361
363
362 def test_previous_nil
364 def test_previous_nil
363 assert_equal 0, @repository.changesets.count
365 assert_equal 0, @repository.changesets.count
364 @repository.fetch_changesets
366 @repository.fetch_changesets
365 @project.reload
367 @project.reload
366 assert_equal NUM_REV, @repository.changesets.count
368 assert_equal NUM_REV, @repository.changesets.count
367 %w|0 0885933ad4f6 0885|.each do |r1|
369 %w|0 0885933ad4f6 0885|.each do |r1|
368 changeset = @repository.find_changeset_by_name(r1)
370 changeset = @repository.find_changeset_by_name(r1)
369 assert_nil changeset.previous
371 assert_nil changeset.previous
370 end
372 end
371 end
373 end
372
374
373 def test_next
375 def test_next
374 assert_equal 0, @repository.changesets.count
376 assert_equal 0, @repository.changesets.count
375 @repository.fetch_changesets
377 @repository.fetch_changesets
376 @project.reload
378 @project.reload
377 assert_equal NUM_REV, @repository.changesets.count
379 assert_equal NUM_REV, @repository.changesets.count
378 %w|27 7bbf4c738e71 7bbf|.each do |r2|
380 %w|27 7bbf4c738e71 7bbf|.each do |r2|
379 changeset = @repository.find_changeset_by_name(r2)
381 changeset = @repository.find_changeset_by_name(r2)
380 %w|28 3ae45e2d177d 3ae45|.each do |r1|
382 %w|28 3ae45e2d177d 3ae45|.each do |r1|
381 assert_equal @repository.find_changeset_by_name(r1), changeset.next
383 assert_equal @repository.find_changeset_by_name(r1), changeset.next
382 end
384 end
383 end
385 end
384 end
386 end
385
387
386 def test_next_nil
388 def test_next_nil
387 assert_equal 0, @repository.changesets.count
389 assert_equal 0, @repository.changesets.count
388 @repository.fetch_changesets
390 @repository.fetch_changesets
389 @project.reload
391 @project.reload
390 assert_equal NUM_REV, @repository.changesets.count
392 assert_equal NUM_REV, @repository.changesets.count
391 %w|31 31eeee7395c8 31eee|.each do |r1|
393 %w|31 31eeee7395c8 31eee|.each do |r1|
392 changeset = @repository.find_changeset_by_name(r1)
394 changeset = @repository.find_changeset_by_name(r1)
393 assert_nil changeset.next
395 assert_nil changeset.next
394 end
396 end
395 end
397 end
396 else
398 else
397 puts "Mercurial test repository NOT FOUND. Skipping unit tests !!!"
399 puts "Mercurial test repository NOT FOUND. Skipping unit tests !!!"
398 def test_fake; assert true end
400 def test_fake; assert true end
399 end
401 end
400 end
402 end
General Comments 0
You need to be logged in to leave comments. Login now