Mercurial > hg > soundsoftware-site
comparison test/unit/lib/redmine/scm/adapters/mercurial_adapter_test.rb @ 441:cbce1fd3b1b7 redmine-1.2
Update to Redmine 1.2-stable branch (Redmine SVN rev 6000)
author | Chris Cannam |
---|---|
date | Mon, 06 Jun 2011 14:24:13 +0100 |
parents | 051f544170fe |
children | 753f1380d6bc cbb26bc654de |
comparison
equal
deleted
inserted
replaced
245:051f544170fe | 441:cbce1fd3b1b7 |
---|---|
2 begin | 2 begin |
3 require 'mocha' | 3 require 'mocha' |
4 | 4 |
5 class MercurialAdapterTest < ActiveSupport::TestCase | 5 class MercurialAdapterTest < ActiveSupport::TestCase |
6 | 6 |
7 HELPERS_DIR = Redmine::Scm::Adapters::MercurialAdapter::HELPERS_DIR | 7 HELPERS_DIR = Redmine::Scm::Adapters::MercurialAdapter::HELPERS_DIR |
8 TEMPLATE_NAME = Redmine::Scm::Adapters::MercurialAdapter::TEMPLATE_NAME | 8 TEMPLATE_NAME = Redmine::Scm::Adapters::MercurialAdapter::TEMPLATE_NAME |
9 TEMPLATE_EXTENSION = Redmine::Scm::Adapters::MercurialAdapter::TEMPLATE_EXTENSION | 9 TEMPLATE_EXTENSION = Redmine::Scm::Adapters::MercurialAdapter::TEMPLATE_EXTENSION |
10 | 10 |
11 REPOSITORY_PATH = RAILS_ROOT.gsub(%r{config\/\.\.}, '') + '/tmp/test/mercurial_repository' | 11 REPOSITORY_PATH = RAILS_ROOT.gsub(%r{config\/\.\.}, '') + |
12 '/tmp/test/mercurial_repository' | |
13 | |
14 CHAR_1_HEX = "\xc3\x9c" | |
12 | 15 |
13 if File.directory?(REPOSITORY_PATH) | 16 if File.directory?(REPOSITORY_PATH) |
14 def setup | 17 def setup |
15 @adapter = Redmine::Scm::Adapters::MercurialAdapter.new(REPOSITORY_PATH) | 18 adapter_class = Redmine::Scm::Adapters::MercurialAdapter |
19 assert adapter_class | |
20 assert adapter_class.client_command | |
21 assert_equal true, adapter_class.client_available | |
22 assert_equal true, adapter_class.client_version_above?([0, 9, 5]) | |
23 | |
24 @adapter = Redmine::Scm::Adapters::MercurialAdapter.new( | |
25 REPOSITORY_PATH, | |
26 nil, | |
27 nil, | |
28 nil, | |
29 'ISO-8859-1') | |
16 @diff_c_support = true | 30 @diff_c_support = true |
31 @char_1 = CHAR_1_HEX.dup | |
32 @tag_char_1 = "tag-#{CHAR_1_HEX}-00" | |
33 @branch_char_0 = "branch-#{CHAR_1_HEX}-00" | |
34 @branch_char_1 = "branch-#{CHAR_1_HEX}-01" | |
35 if @tag_char_1.respond_to?(:force_encoding) | |
36 @char_1.force_encoding('UTF-8') | |
37 @tag_char_1.force_encoding('UTF-8') | |
38 @branch_char_0.force_encoding('UTF-8') | |
39 @branch_char_1.force_encoding('UTF-8') | |
40 end | |
17 end | 41 end |
18 | 42 |
19 def test_hgversion | 43 def test_hgversion |
20 to_test = { "Mercurial Distributed SCM (version 0.9.5)\n" => [0,9,5], | 44 to_test = { "Mercurial Distributed SCM (version 0.9.5)\n" => [0,9,5], |
21 "Mercurial Distributed SCM (1.0)\n" => [1,0], | 45 "Mercurial Distributed SCM (1.0)\n" => [1,0], |
47 [REPOSITORY_PATH, REPOSITORY_PATH + "/", | 71 [REPOSITORY_PATH, REPOSITORY_PATH + "/", |
48 REPOSITORY_PATH + "//"].each do |repo| | 72 REPOSITORY_PATH + "//"].each do |repo| |
49 adp = Redmine::Scm::Adapters::MercurialAdapter.new(repo) | 73 adp = Redmine::Scm::Adapters::MercurialAdapter.new(repo) |
50 repo_path = adp.info.root_url.gsub(/\\/, "/") | 74 repo_path = adp.info.root_url.gsub(/\\/, "/") |
51 assert_equal REPOSITORY_PATH, repo_path | 75 assert_equal REPOSITORY_PATH, repo_path |
52 assert_equal '16', adp.info.lastrev.revision | 76 assert_equal '28', adp.info.lastrev.revision |
53 assert_equal '4cddb4e45f52',adp.info.lastrev.scmid | 77 assert_equal '3ae45e2d177d',adp.info.lastrev.scmid |
54 end | 78 end |
55 end | 79 end |
56 | 80 |
57 def test_revisions | 81 def test_revisions |
58 revisions = @adapter.revisions(nil, 2, 4) | 82 revisions = @adapter.revisions(nil, 2, 4) |
95 end | 119 end |
96 end | 120 end |
97 | 121 |
98 def test_diff_made_by_revision | 122 def test_diff_made_by_revision |
99 if @diff_c_support | 123 if @diff_c_support |
100 [16, '16', '4cddb4e45f52'].each do |r1| | 124 [24, '24', '4cddb4e45f52'].each do |r1| |
101 diff1 = @adapter.diff(nil, r1) | 125 diff1 = @adapter.diff(nil, r1) |
102 assert_equal 5, diff1.size | 126 assert_equal 5, diff1.size |
103 buf = diff1[4].gsub(/\r\n|\r|\n/, "") | 127 buf = diff1[4].gsub(/\r\n|\r|\n/, "") |
104 assert_equal '+0885933ad4f68d77c2649cd11f8311276e7ef7ce tag-init-revision', buf | 128 assert_equal '+0885933ad4f68d77c2649cd11f8311276e7ef7ce tag-init-revision', buf |
105 end | 129 end |
217 # falls back to nodeid | 241 # falls back to nodeid |
218 assert_equal @adapter.cat(path, 2), @adapter.cat(path, '400') | 242 assert_equal @adapter.cat(path, 2), @adapter.cat(path, '400') |
219 end | 243 end |
220 | 244 |
221 def test_tags | 245 def test_tags |
222 assert_equal ['tag_test.00', 'tag-init-revision'], @adapter.tags | 246 assert_equal [@tag_char_1, 'tag_test.00', 'tag-init-revision'], @adapter.tags |
223 end | 247 end |
224 | 248 |
225 def test_tagmap | 249 def test_tagmap |
226 tm = { 'tag_test.00' => '6987191f453a', | 250 tm = { |
227 'tag-init-revision' => '0885933ad4f6' } | 251 @tag_char_1 => 'adf805632193', |
252 'tag_test.00' => '6987191f453a', | |
253 'tag-init-revision' => '0885933ad4f6', | |
254 } | |
228 assert_equal tm, @adapter.tagmap | 255 assert_equal tm, @adapter.tagmap |
229 end | 256 end |
230 | 257 |
231 def test_branches | 258 def test_branches |
232 assert_equal ['default', 'branch (1)[2]&,%.-3_4', 'test-branch-00'], | 259 assert_equal [ |
233 @adapter.branches | 260 'default', |
261 @branch_char_1, | |
262 'branch (1)[2]&,%.-3_4', | |
263 @branch_char_0, | |
264 'test_branch.latin-1', | |
265 'test-branch-00', | |
266 ], @adapter.branches | |
234 end | 267 end |
235 | 268 |
236 def test_branchmap | 269 def test_branchmap |
237 bm = { 'default' => '4cddb4e45f52', | 270 bm = { |
238 'branch (1)[2]&,%.-3_4' => '933ca60293d7', | 271 'default' => '3ae45e2d177d', |
239 'test-branch-00' => '3a330eb32958' } | 272 'test_branch.latin-1' => 'c2ffe7da686a', |
273 'branch (1)[2]&,%.-3_4' => 'afc61e85bde7', | |
274 'test-branch-00' => '3a330eb32958', | |
275 @branch_char_0 => 'c8d3e4887474', | |
276 @branch_char_1 => '7bbf4c738e71', | |
277 } | |
240 assert_equal bm, @adapter.branchmap | 278 assert_equal bm, @adapter.branchmap |
279 end | |
280 | |
281 def test_path_space | |
282 p = 'README (1)[2]&,%.-3_4' | |
283 [15, '933ca60293d7'].each do |r1| | |
284 assert @adapter.diff(p, r1) | |
285 assert @adapter.cat(p, r1) | |
286 assert_equal 1, @adapter.annotate(p, r1).lines.length | |
287 [25, 'afc61e85bde7'].each do |r2| | |
288 assert @adapter.diff(p, r1, r2) | |
289 end | |
290 end | |
291 end | |
292 | |
293 def test_tag_non_ascii | |
294 p = "latin-1-dir/test-#{@char_1}-1.txt" | |
295 assert @adapter.cat(p, @tag_char_1) | |
296 assert_equal 1, @adapter.annotate(p, @tag_char_1).lines.length | |
297 end | |
298 | |
299 def test_branch_non_ascii | |
300 p = "latin-1-dir/test-#{@char_1}-subdir/test-#{@char_1}-1.txt" | |
301 assert @adapter.cat(p, @branch_char_1) | |
302 assert_equal 1, @adapter.annotate(p, @branch_char_1).lines.length | |
303 end | |
304 | |
305 def test_nodes_in_branch | |
306 [ | |
307 'default', | |
308 @branch_char_1, | |
309 'branch (1)[2]&,%.-3_4', | |
310 @branch_char_0, | |
311 'test_branch.latin-1', | |
312 'test-branch-00', | |
313 ].each do |bra| | |
314 nib0 = @adapter.nodes_in_branch(bra) | |
315 assert nib0 | |
316 nib1 = @adapter.nodes_in_branch(bra, :limit => 1) | |
317 assert_equal 1, nib1.size | |
318 case bra | |
319 when 'branch (1)[2]&,%.-3_4' | |
320 assert_equal 3, nib0.size | |
321 assert_equal nib0[0], 'afc61e85bde7' | |
322 nib2 = @adapter.nodes_in_branch(bra, :limit => 2) | |
323 assert_equal 2, nib2.size | |
324 assert_equal nib2[1], '933ca60293d7' | |
325 when @branch_char_1 | |
326 assert_equal 2, nib0.size | |
327 assert_equal nib0[1], '08ff3227303e' | |
328 nib2 = @adapter.nodes_in_branch(bra, :limit => 1) | |
329 assert_equal 1, nib2.size | |
330 assert_equal nib2[0], '7bbf4c738e71' | |
331 end | |
332 end | |
333 end | |
334 | |
335 def test_path_encoding_default_utf8 | |
336 adpt1 = Redmine::Scm::Adapters::MercurialAdapter.new( | |
337 REPOSITORY_PATH | |
338 ) | |
339 assert_equal "UTF-8", adpt1.path_encoding | |
340 adpt2 = Redmine::Scm::Adapters::MercurialAdapter.new( | |
341 REPOSITORY_PATH, | |
342 nil, | |
343 nil, | |
344 nil, | |
345 "" | |
346 ) | |
347 assert_equal "UTF-8", adpt2.path_encoding | |
241 end | 348 end |
242 | 349 |
243 private | 350 private |
244 | 351 |
245 def test_hgversion_for(hgversion, version) | 352 def test_hgversion_for(hgversion, version) |
255 else | 362 else |
256 puts "Mercurial test repository NOT FOUND. Skipping unit tests !!!" | 363 puts "Mercurial test repository NOT FOUND. Skipping unit tests !!!" |
257 def test_fake; assert true end | 364 def test_fake; assert true end |
258 end | 365 end |
259 end | 366 end |
260 | |
261 rescue LoadError | 367 rescue LoadError |
262 class MercurialMochaFake < ActiveSupport::TestCase | 368 class MercurialMochaFake < ActiveSupport::TestCase |
263 def test_fake; assert(false, "Requires mocha to run those tests") end | 369 def test_fake; assert(false, "Requires mocha to run those tests") end |
264 end | 370 end |
265 end | 371 end |
266 |