##// END OF EJS Templates
Merge r9870 from trunk...
Toshi MARUYAMA -
r9691:34df573ec204
parent child
Show More
@@ -1,535 +1,535
1 1 # encoding: utf-8
2 2
3 3 require File.expand_path('../../../../../../test_helper', __FILE__)
4 4 begin
5 5 require 'mocha'
6 6
7 7 class GitAdapterTest < ActiveSupport::TestCase
8 8 REPOSITORY_PATH = Rails.root.join('tmp/test/git_repository').to_s
9 9
10 10 FELIX_HEX = "Felix Sch\xC3\xA4fer"
11 11 CHAR_1_HEX = "\xc3\x9c"
12 12
13 ## Ruby uses ANSI api to fork a process on Windows.
14 ## Japanese Shift_JIS and Traditional Chinese Big5 have 0x5c(backslash) problem
15 ## and these are incompatible with ASCII.
16 ## Git for Windows (msysGit) changed internal API from ANSI to Unicode in 1.7.10
17 ## http://code.google.com/p/msysgit/issues/detail?id=80
18 ## So, Latin-1 path tests fail on Japanese Windows
19 WINDOWS_PASS = (Redmine::Platform.mswin? &&
20 Redmine::Scm::Adapters::GitAdapter.client_version_above?([1, 7, 10]))
21 WINDOWS_SKIP_STR = "TODO: This test fails in Git for Windows above 1.7.10"
22
23 13 ## Git, Mercurial and CVS path encodings are binary.
24 14 ## Subversion supports URL encoding for path.
25 15 ## Redmine Mercurial adapter and extension use URL encoding.
26 16 ## Git accepts only binary path in command line parameter.
27 17 ## So, there is no way to use binary command line parameter in JRuby.
28 18 JRUBY_SKIP = (RUBY_PLATFORM == 'java')
29 19 JRUBY_SKIP_STR = "TODO: This test fails in JRuby"
30 20
31 21 if File.directory?(REPOSITORY_PATH)
22 ## Ruby uses ANSI api to fork a process on Windows.
23 ## Japanese Shift_JIS and Traditional Chinese Big5 have 0x5c(backslash) problem
24 ## and these are incompatible with ASCII.
25 ## Git for Windows (msysGit) changed internal API from ANSI to Unicode in 1.7.10
26 ## http://code.google.com/p/msysgit/issues/detail?id=80
27 ## So, Latin-1 path tests fail on Japanese Windows
28 WINDOWS_PASS = (Redmine::Platform.mswin? &&
29 Redmine::Scm::Adapters::GitAdapter.client_version_above?([1, 7, 10]))
30 WINDOWS_SKIP_STR = "TODO: This test fails in Git for Windows above 1.7.10"
31
32 32 def setup
33 33 adapter_class = Redmine::Scm::Adapters::GitAdapter
34 34 assert adapter_class
35 35 assert adapter_class.client_command
36 36 assert_equal true, adapter_class.client_available
37 37 assert_equal true, adapter_class.client_version_above?([1])
38 38 assert_equal true, adapter_class.client_version_above?([1, 0])
39 39
40 40 @adapter = Redmine::Scm::Adapters::GitAdapter.new(
41 41 REPOSITORY_PATH,
42 42 nil,
43 43 nil,
44 44 nil,
45 45 'ISO-8859-1'
46 46 )
47 47 assert @adapter
48 48 @char_1 = CHAR_1_HEX.dup
49 49 if @char_1.respond_to?(:force_encoding)
50 50 @char_1.force_encoding('UTF-8')
51 51 end
52 52 end
53 53
54 54 def test_scm_version
55 55 to_test = { "git version 1.7.3.4\n" => [1,7,3,4],
56 56 "1.6.1\n1.7\n1.8" => [1,6,1],
57 57 "1.6.2\r\n1.8.1\r\n1.9.1" => [1,6,2]}
58 58 to_test.each do |s, v|
59 59 test_scm_version_for(s, v)
60 60 end
61 61 end
62 62
63 63 def test_branches
64 64 brs = []
65 65 @adapter.branches.each do |b|
66 66 brs << b
67 67 end
68 68 assert_equal 6, brs.length
69 69 br_issue_8857 = brs[0]
70 70 assert_equal 'issue-8857', br_issue_8857.to_s
71 71 assert_equal '2a682156a3b6e77a8bf9cd4590e8db757f3c6c78', br_issue_8857.revision
72 72 assert_equal br_issue_8857.scmid, br_issue_8857.revision
73 73 assert_equal false, br_issue_8857.is_default
74 74 br_latin_1_path = brs[1]
75 75 assert_equal 'latin-1-path-encoding', br_latin_1_path.to_s
76 76 assert_equal '1ca7f5ed374f3cb31a93ae5215c2e25cc6ec5127', br_latin_1_path.revision
77 77 assert_equal br_latin_1_path.scmid, br_latin_1_path.revision
78 78 assert_equal false, br_latin_1_path.is_default
79 79 br_master = brs[2]
80 80 assert_equal 'master', br_master.to_s
81 81 assert_equal '83ca5fd546063a3c7dc2e568ba3355661a9e2b2c', br_master.revision
82 82 assert_equal br_master.scmid, br_master.revision
83 83 assert_equal false, br_master.is_default
84 84 br_master_20120212 = brs[3]
85 85 assert_equal 'master-20120212', br_master_20120212.to_s
86 86 assert_equal '83ca5fd546063a3c7dc2e568ba3355661a9e2b2c', br_master_20120212.revision
87 87 assert_equal br_master_20120212.scmid, br_master_20120212.revision
88 88 assert_equal true, br_master_20120212.is_default
89 89 br_latin_1 = brs[-2]
90 90 assert_equal 'test-latin-1', br_latin_1.to_s
91 91 assert_equal '67e7792ce20ccae2e4bb73eed09bb397819c8834', br_latin_1.revision
92 92 assert_equal br_latin_1.scmid, br_latin_1.revision
93 93 assert_equal false, br_latin_1.is_default
94 94 br_test = brs[-1]
95 95 assert_equal 'test_branch', br_test.to_s
96 96 assert_equal 'fba357b886984ee71185ad2065e65fc0417d9b92', br_test.revision
97 97 assert_equal br_test.scmid, br_test.revision
98 98 assert_equal false, br_test.is_default
99 99 end
100 100
101 101 def test_default_branch
102 102 assert_equal 'master-20120212', @adapter.default_branch
103 103 end
104 104
105 105 def test_tags
106 106 assert_equal [
107 107 "tag00.lightweight",
108 108 "tag01.annotated",
109 109 ], @adapter.tags
110 110 end
111 111
112 112 def test_revisions_master_all
113 113 revs1 = []
114 114 @adapter.revisions('', nil, "master",{}) do |rev|
115 115 revs1 << rev
116 116 end
117 117 assert_equal 15, revs1.length
118 118 assert_equal '83ca5fd546063a3c7dc2e568ba3355661a9e2b2c', revs1[ 0].identifier
119 119 assert_equal '7234cb2750b63f47bff735edc50a1c0a433c2518', revs1[-1].identifier
120 120
121 121 revs2 = []
122 122 @adapter.revisions('', nil, "master",
123 123 {:reverse => true}) do |rev|
124 124 revs2 << rev
125 125 end
126 126 assert_equal 15, revs2.length
127 127 assert_equal '83ca5fd546063a3c7dc2e568ba3355661a9e2b2c', revs2[-1].identifier
128 128 assert_equal '7234cb2750b63f47bff735edc50a1c0a433c2518', revs2[ 0].identifier
129 129 end
130 130
131 131 def test_revisions_master_merged_rev
132 132 revs1 = []
133 133 @adapter.revisions('',
134 134 "713f4944648826f558cf548222f813dabe7cbb04",
135 135 "master",
136 136 {:reverse => true}) do |rev|
137 137 revs1 << rev
138 138 end
139 139 assert_equal 8, revs1.length
140 140 assert_equal 'fba357b886984ee71185ad2065e65fc0417d9b92', revs1[ 0].identifier
141 141 assert_equal '7e61ac704deecde634b51e59daa8110435dcb3da', revs1[ 1].identifier
142 142 # 4a07fe31b is not a child of 713f49446
143 143 assert_equal '4a07fe31bffcf2888791f3e6cbc9c4545cefe3e8', revs1[ 2].identifier
144 144 # Merged revision
145 145 assert_equal '32ae898b720c2f7eec2723d5bdd558b4cb2d3ddf', revs1[ 3].identifier
146 146 assert_equal '83ca5fd546063a3c7dc2e568ba3355661a9e2b2c', revs1[-1].identifier
147 147
148 148 revs2 = []
149 149 @adapter.revisions('',
150 150 "fba357b886984ee71185ad2065e65fc0417d9b92",
151 151 "master",
152 152 {:reverse => true}) do |rev|
153 153 revs2 << rev
154 154 end
155 155 assert_equal 7, revs2.length
156 156 assert_equal '7e61ac704deecde634b51e59daa8110435dcb3da', revs2[ 0].identifier
157 157 # 4a07fe31b is not a child of fba357b8869
158 158 assert_equal '4a07fe31bffcf2888791f3e6cbc9c4545cefe3e8', revs2[ 1].identifier
159 159 # Merged revision
160 160 assert_equal '32ae898b720c2f7eec2723d5bdd558b4cb2d3ddf', revs2[ 2].identifier
161 161 assert_equal '83ca5fd546063a3c7dc2e568ba3355661a9e2b2c', revs2[-1].identifier
162 162 end
163 163
164 164 def test_revisions_branch_latin_1_path_encoding_all
165 165 revs1 = []
166 166 @adapter.revisions('', nil, "latin-1-path-encoding",{}) do |rev|
167 167 revs1 << rev
168 168 end
169 169 assert_equal 8, revs1.length
170 170 assert_equal '1ca7f5ed374f3cb31a93ae5215c2e25cc6ec5127', revs1[ 0].identifier
171 171 assert_equal '7234cb2750b63f47bff735edc50a1c0a433c2518', revs1[-1].identifier
172 172
173 173 revs2 = []
174 174 @adapter.revisions('', nil, "latin-1-path-encoding",
175 175 {:reverse => true}) do |rev|
176 176 revs2 << rev
177 177 end
178 178 assert_equal 8, revs2.length
179 179 assert_equal '1ca7f5ed374f3cb31a93ae5215c2e25cc6ec5127', revs2[-1].identifier
180 180 assert_equal '7234cb2750b63f47bff735edc50a1c0a433c2518', revs2[ 0].identifier
181 181 end
182 182
183 183 def test_revisions_branch_latin_1_path_encoding_with_rev
184 184 revs1 = []
185 185 @adapter.revisions('',
186 186 '7234cb2750b63f47bff735edc50a1c0a433c2518',
187 187 "latin-1-path-encoding",
188 188 {:reverse => true}) do |rev|
189 189 revs1 << rev
190 190 end
191 191 assert_equal 7, revs1.length
192 192 assert_equal '899a15dba03a3b350b89c3f537e4bbe02a03cdc9', revs1[ 0].identifier
193 193 assert_equal '1ca7f5ed374f3cb31a93ae5215c2e25cc6ec5127', revs1[-1].identifier
194 194
195 195 revs2 = []
196 196 @adapter.revisions('',
197 197 '57ca437c0acbbcb749821fdf3726a1367056d364',
198 198 "latin-1-path-encoding",
199 199 {:reverse => true}) do |rev|
200 200 revs2 << rev
201 201 end
202 202 assert_equal 3, revs2.length
203 203 assert_equal '4fc55c43bf3d3dc2efb66145365ddc17639ce81e', revs2[ 0].identifier
204 204 assert_equal '1ca7f5ed374f3cb31a93ae5215c2e25cc6ec5127', revs2[-1].identifier
205 205 end
206 206
207 207 def test_revisions_invalid_rev
208 208 assert_equal [], @adapter.revisions('', '1234abcd', "master")
209 209 assert_raise Redmine::Scm::Adapters::CommandFailed do
210 210 revs1 = []
211 211 @adapter.revisions('',
212 212 '1234abcd',
213 213 "master",
214 214 {:reverse => true}) do |rev|
215 215 revs1 << rev
216 216 end
217 217 end
218 218 end
219 219
220 220 def test_revisions_includes_master_two_revs
221 221 revs1 = []
222 222 @adapter.revisions('', nil, nil,
223 223 {:reverse => true,
224 224 :includes => ['83ca5fd546063a3c7dc2e568ba3355661a9e2b2c'],
225 225 :excludes => ['4f26664364207fa8b1af9f8722647ab2d4ac5d43']}) do |rev|
226 226 revs1 << rev
227 227 end
228 228 assert_equal 2, revs1.length
229 229 assert_equal 'ed5bb786bbda2dee66a2d50faf51429dbc043a7b', revs1[ 0].identifier
230 230 assert_equal '83ca5fd546063a3c7dc2e568ba3355661a9e2b2c', revs1[-1].identifier
231 231 end
232 232
233 233 def test_revisions_includes_master_two_revs_from_origin
234 234 revs1 = []
235 235 @adapter.revisions('', nil, nil,
236 236 {:reverse => true,
237 237 :includes => ['899a15dba03a3b350b89c3f537e4bbe02a03cdc9'],
238 238 :excludes => []}) do |rev|
239 239 revs1 << rev
240 240 end
241 241 assert_equal 2, revs1.length
242 242 assert_equal '7234cb2750b63f47bff735edc50a1c0a433c2518', revs1[ 0].identifier
243 243 assert_equal '899a15dba03a3b350b89c3f537e4bbe02a03cdc9', revs1[ 1].identifier
244 244 end
245 245
246 246 def test_revisions_includes_merged_revs
247 247 revs1 = []
248 248 @adapter.revisions('', nil, nil,
249 249 {:reverse => true,
250 250 :includes => ['83ca5fd546063a3c7dc2e568ba3355661a9e2b2c'],
251 251 :excludes => ['fba357b886984ee71185ad2065e65fc0417d9b92']}) do |rev|
252 252 revs1 << rev
253 253 end
254 254 assert_equal 7, revs1.length
255 255 assert_equal '7e61ac704deecde634b51e59daa8110435dcb3da', revs1[ 0].identifier
256 256 assert_equal '4a07fe31bffcf2888791f3e6cbc9c4545cefe3e8', revs1[ 1].identifier
257 257 assert_equal '32ae898b720c2f7eec2723d5bdd558b4cb2d3ddf', revs1[ 2].identifier
258 258 assert_equal '83ca5fd546063a3c7dc2e568ba3355661a9e2b2c', revs1[-1].identifier
259 259 end
260 260
261 261 def test_revisions_includes_two_heads
262 262 revs1 = []
263 263 @adapter.revisions('', nil, nil,
264 264 {:reverse => true,
265 265 :includes => ['83ca5fd546063a3c7dc2e568ba3355661a9e2b2c',
266 266 '1ca7f5ed374f3cb31a93ae5215c2e25cc6ec5127'],
267 267 :excludes => ['4f26664364207fa8b1af9f8722647ab2d4ac5d43',
268 268 '4fc55c43bf3d3dc2efb66145365ddc17639ce81e']}) do |rev|
269 269 revs1 << rev
270 270 end
271 271 assert_equal 4, revs1.length
272 272 assert_equal 'ed5bb786bbda2dee66a2d50faf51429dbc043a7b', revs1[ 0].identifier
273 273 assert_equal '83ca5fd546063a3c7dc2e568ba3355661a9e2b2c', revs1[ 1].identifier
274 274 assert_equal '64f1f3e89ad1cb57976ff0ad99a107012ba3481d', revs1[-2].identifier
275 275 assert_equal '1ca7f5ed374f3cb31a93ae5215c2e25cc6ec5127', revs1[-1].identifier
276 276 end
277 277
278 278 def test_revisions_disjointed_histories_revisions
279 279 revs1 = []
280 280 @adapter.revisions('', nil, nil,
281 281 {:reverse => true,
282 282 :includes => ['83ca5fd546063a3c7dc2e568ba3355661a9e2b2c',
283 283 '92397af84d22f27389c822848ecd5b463c181583'],
284 284 :excludes => ['95488a44bc25f7d1f97d775a31359539ff333a63',
285 285 '4f26664364207fa8b1af9f8722647ab2d4ac5d43'] }) do |rev|
286 286 revs1 << rev
287 287 end
288 288 assert_equal 4, revs1.length
289 289 assert_equal 'ed5bb786bbda2dee66a2d50faf51429dbc043a7b', revs1[ 0].identifier
290 290 assert_equal '83ca5fd546063a3c7dc2e568ba3355661a9e2b2c', revs1[ 1].identifier
291 291 assert_equal 'bc201c95999c4f10d018b0aa03b541cd6a2ff0ee', revs1[-2].identifier
292 292 assert_equal '92397af84d22f27389c822848ecd5b463c181583', revs1[-1].identifier
293 293 end
294 294
295 295 def test_revisions_invalid_rev_excludes
296 296 assert_equal [],
297 297 @adapter.revisions('', nil, nil,
298 298 {:reverse => true,
299 299 :includes => ['83ca5fd546063a3c7dc2e568ba3355661a9e2b2c'],
300 300 :excludes => ['0123abcd4567']})
301 301 assert_raise Redmine::Scm::Adapters::CommandFailed do
302 302 revs1 = []
303 303 @adapter.revisions('', nil, nil,
304 304 {:reverse => true,
305 305 :includes => ['83ca5fd546063a3c7dc2e568ba3355661a9e2b2c'],
306 306 :excludes => ['0123abcd4567']}) do |rev|
307 307 revs1 << rev
308 308 end
309 309 end
310 310 end
311 311
312 312 def test_getting_revisions_with_spaces_in_filename
313 313 assert_equal 1, @adapter.revisions("filemane with spaces.txt",
314 314 nil, "master").length
315 315 end
316 316
317 317 def test_parents
318 318 revs1 = []
319 319 @adapter.revisions('',
320 320 nil,
321 321 "master",
322 322 {:reverse => true}) do |rev|
323 323 revs1 << rev
324 324 end
325 325 assert_equal 15, revs1.length
326 326 assert_equal "7234cb2750b63f47bff735edc50a1c0a433c2518",
327 327 revs1[0].identifier
328 328 assert_equal nil, revs1[0].parents
329 329 assert_equal "899a15dba03a3b350b89c3f537e4bbe02a03cdc9",
330 330 revs1[1].identifier
331 331 assert_equal 1, revs1[1].parents.length
332 332 assert_equal "7234cb2750b63f47bff735edc50a1c0a433c2518",
333 333 revs1[1].parents[0]
334 334 assert_equal "32ae898b720c2f7eec2723d5bdd558b4cb2d3ddf",
335 335 revs1[10].identifier
336 336 assert_equal 2, revs1[10].parents.length
337 337 assert_equal "4a07fe31bffcf2888791f3e6cbc9c4545cefe3e8",
338 338 revs1[10].parents[0]
339 339 assert_equal "7e61ac704deecde634b51e59daa8110435dcb3da",
340 340 revs1[10].parents[1]
341 341 end
342 342
343 343 def test_getting_revisions_with_leading_and_trailing_spaces_in_filename
344 344 assert_equal " filename with a leading space.txt ",
345 345 @adapter.revisions(" filename with a leading space.txt ",
346 346 nil, "master")[0].paths[0][:path]
347 347 end
348 348
349 349 def test_getting_entries_with_leading_and_trailing_spaces_in_filename
350 350 assert_equal " filename with a leading space.txt ",
351 351 @adapter.entries('',
352 352 '83ca5fd546063a3c7dc2e568ba3355661a9e2b2c')[3].name
353 353 end
354 354
355 355 def test_annotate
356 356 annotate = @adapter.annotate('sources/watchers_controller.rb')
357 357 assert_kind_of Redmine::Scm::Adapters::Annotate, annotate
358 358 assert_equal 41, annotate.lines.size
359 359 assert_equal "# This program is free software; you can redistribute it and/or",
360 360 annotate.lines[4].strip
361 361 assert_equal "7234cb2750b63f47bff735edc50a1c0a433c2518",
362 362 annotate.revisions[4].identifier
363 363 assert_equal "jsmith", annotate.revisions[4].author
364 364 end
365 365
366 366 def test_annotate_moved_file
367 367 annotate = @adapter.annotate('renamed_test.txt')
368 368 assert_kind_of Redmine::Scm::Adapters::Annotate, annotate
369 369 assert_equal 2, annotate.lines.size
370 370 end
371 371
372 372 def test_last_rev
373 373 last_rev = @adapter.lastrev("README",
374 374 "4f26664364207fa8b1af9f8722647ab2d4ac5d43")
375 375 assert_equal "4a07fe31bffcf2888791f3e6cbc9c4545cefe3e8", last_rev.scmid
376 376 assert_equal "4a07fe31bffcf2888791f3e6cbc9c4545cefe3e8", last_rev.identifier
377 377 assert_equal "Adam Soltys <asoltys@gmail.com>", last_rev.author
378 378 assert_equal "2009-06-24 05:27:38".to_time, last_rev.time
379 379 end
380 380
381 381 def test_last_rev_with_spaces_in_filename
382 382 last_rev = @adapter.lastrev("filemane with spaces.txt",
383 383 "ed5bb786bbda2dee66a2d50faf51429dbc043a7b")
384 384 str_felix_hex = FELIX_HEX.dup
385 385 last_rev_author = last_rev.author
386 386 if last_rev_author.respond_to?(:force_encoding)
387 387 last_rev_author.force_encoding('UTF-8')
388 388 end
389 389 assert_equal "ed5bb786bbda2dee66a2d50faf51429dbc043a7b", last_rev.scmid
390 390 assert_equal "ed5bb786bbda2dee66a2d50faf51429dbc043a7b", last_rev.identifier
391 391 assert_equal "#{str_felix_hex} <felix@fachschaften.org>",
392 392 last_rev.author
393 393 assert_equal "2010-09-18 19:59:46".to_time, last_rev.time
394 394 end
395 395
396 396 def test_latin_1_path
397 397 if WINDOWS_PASS
398 398 puts WINDOWS_SKIP_STR
399 399 elsif JRUBY_SKIP
400 400 puts JRUBY_SKIP_STR
401 401 else
402 402 p2 = "latin-1-dir/test-#{@char_1}-2.txt"
403 403 ['4fc55c43bf3d3dc2efb66145365ddc17639ce81e', '4fc55c43bf3'].each do |r1|
404 404 assert @adapter.diff(p2, r1)
405 405 assert @adapter.cat(p2, r1)
406 406 assert_equal 1, @adapter.annotate(p2, r1).lines.length
407 407 ['64f1f3e89ad1cb57976ff0ad99a107012ba3481d', '64f1f3e89ad1cb5797'].each do |r2|
408 408 assert @adapter.diff(p2, r1, r2)
409 409 end
410 410 end
411 411 end
412 412 end
413 413
414 414 def test_entries_tag
415 415 entries1 = @adapter.entries(nil, 'tag01.annotated',
416 416 options = {:report_last_commit => true})
417 417 assert entries1
418 418 assert_equal 3, entries1.size
419 419 assert_equal 'sources', entries1[1].name
420 420 assert_equal 'sources', entries1[1].path
421 421 assert_equal 'dir', entries1[1].kind
422 422 readme = entries1[2]
423 423 assert_equal 'README', readme.name
424 424 assert_equal 'README', readme.path
425 425 assert_equal 'file', readme.kind
426 426 assert_equal 27, readme.size
427 427 assert_equal '899a15dba03a3b350b89c3f537e4bbe02a03cdc9', readme.lastrev.identifier
428 428 assert_equal Time.gm(2007, 12, 14, 9, 24, 1), readme.lastrev.time
429 429 end
430 430
431 431 def test_entries_branch
432 432 entries1 = @adapter.entries(nil, 'test_branch',
433 433 options = {:report_last_commit => true})
434 434 assert entries1
435 435 assert_equal 4, entries1.size
436 436 assert_equal 'sources', entries1[1].name
437 437 assert_equal 'sources', entries1[1].path
438 438 assert_equal 'dir', entries1[1].kind
439 439 readme = entries1[2]
440 440 assert_equal 'README', readme.name
441 441 assert_equal 'README', readme.path
442 442 assert_equal 'file', readme.kind
443 443 assert_equal 159, readme.size
444 444 assert_equal '713f4944648826f558cf548222f813dabe7cbb04', readme.lastrev.identifier
445 445 assert_equal Time.gm(2009, 6, 19, 4, 37, 23), readme.lastrev.time
446 446 end
447 447
448 448 def test_entries_latin_1_files
449 449 entries1 = @adapter.entries('latin-1-dir', '64f1f3e8')
450 450 assert entries1
451 451 assert_equal 3, entries1.size
452 452 f1 = entries1[1]
453 453 assert_equal "test-#{@char_1}-2.txt", f1.name
454 454 assert_equal "latin-1-dir/test-#{@char_1}-2.txt", f1.path
455 455 assert_equal 'file', f1.kind
456 456 end
457 457
458 458 def test_entries_latin_1_dir
459 459 if WINDOWS_PASS
460 460 puts WINDOWS_SKIP_STR
461 461 elsif JRUBY_SKIP
462 462 puts JRUBY_SKIP_STR
463 463 else
464 464 entries1 = @adapter.entries("latin-1-dir/test-#{@char_1}-subdir",
465 465 '1ca7f5ed')
466 466 assert entries1
467 467 assert_equal 3, entries1.size
468 468 f1 = entries1[1]
469 469 assert_equal "test-#{@char_1}-2.txt", f1.name
470 470 assert_equal "latin-1-dir/test-#{@char_1}-subdir/test-#{@char_1}-2.txt", f1.path
471 471 assert_equal 'file', f1.kind
472 472 end
473 473 end
474 474
475 475 def test_path_encoding_default_utf8
476 476 adpt1 = Redmine::Scm::Adapters::GitAdapter.new(
477 477 REPOSITORY_PATH
478 478 )
479 479 assert_equal "UTF-8", adpt1.path_encoding
480 480 adpt2 = Redmine::Scm::Adapters::GitAdapter.new(
481 481 REPOSITORY_PATH,
482 482 nil,
483 483 nil,
484 484 nil,
485 485 ""
486 486 )
487 487 assert_equal "UTF-8", adpt2.path_encoding
488 488 end
489 489
490 490 def test_cat_path_invalid
491 491 assert_nil @adapter.cat('invalid')
492 492 end
493 493
494 494 def test_cat_revision_invalid
495 495 assert @adapter.cat('README')
496 496 assert_nil @adapter.cat('README', 'abcd1234efgh')
497 497 end
498 498
499 499 def test_diff_path_invalid
500 500 assert_equal [], @adapter.diff('invalid', '713f4944648826f5')
501 501 end
502 502
503 503 def test_diff_revision_invalid
504 504 assert_nil @adapter.diff(nil, 'abcd1234efgh')
505 505 assert_nil @adapter.diff(nil, '713f4944648826f5', 'abcd1234efgh')
506 506 assert_nil @adapter.diff(nil, 'abcd1234efgh', '713f4944648826f5')
507 507 end
508 508
509 509 def test_annotate_path_invalid
510 510 assert_nil @adapter.annotate('invalid')
511 511 end
512 512
513 513 def test_annotate_revision_invalid
514 514 assert @adapter.annotate('README')
515 515 assert_nil @adapter.annotate('README', 'abcd1234efgh')
516 516 end
517 517
518 518 private
519 519
520 520 def test_scm_version_for(scm_command_version, version)
521 521 @adapter.class.expects(:scm_version_from_command_line).returns(scm_command_version)
522 522 assert_equal version, @adapter.class.scm_command_version
523 523 end
524 524
525 525 else
526 526 puts "Git test repository NOT FOUND. Skipping unit tests !!!"
527 527 def test_fake; assert true end
528 528 end
529 529 end
530 530
531 531 rescue LoadError
532 532 class GitMochaFake < ActiveSupport::TestCase
533 533 def test_fake; assert(false, "Requires mocha to run those tests") end
534 534 end
535 535 end
General Comments 0
You need to be logged in to leave comments. Login now