##// END OF EJS Templates
scm: mercurial: insert long id to DB unless existing id in DB is not short id (#14361)...
Toshi MARUYAMA -
r12502:b87a7b8984b3
parent child
Show More
@@ -122,9 +122,15 class Repository::Mercurial < Repository
122 122 all
123 123 end
124 124
125 def is_short_id_in_db?
126 return @is_short_id_in_db unless @is_short_id_in_db.nil?
127 cs = changesets.first
128 @is_short_id_in_db = (!cs.nil? && cs.scmid.length != 40)
129 end
130 private :is_short_id_in_db?
131
125 132 def scmid_for_inserting_db(scmid)
126 # TODO: switch short or long by existing value in DB
127 scmid[0, 12]
133 is_short_id_in_db? ? scmid[0, 12] : scmid
128 134 end
129 135
130 136 def nodes_in_branch(rev, branch_limit)
@@ -104,12 +104,22 class RepositoryMercurialTest < ActiveSupport::TestCase
104 104
105 105 def test_entries_short_id
106 106 assert_equal 0, @repository.changesets.count
107 create_rev0_short_id
108 assert_equal 1, @repository.changesets.count
107 109 @repository.fetch_changesets
108 110 @project.reload
109 111 assert_equal NUM_REV, @repository.changesets.count
110 112 assert_entries(true)
111 113 end
112 114
115 def test_entries_long_id
116 assert_equal 0, @repository.changesets.count
117 @repository.fetch_changesets
118 @project.reload
119 assert_equal NUM_REV, @repository.changesets.count
120 assert_entries(false)
121 end
122
113 123 def test_entry_on_tip
114 124 entry = @repository.entry
115 125 assert_kind_of Redmine::Scm::Adapters::Entry, entry
@@ -152,9 +162,16 class RepositoryMercurialTest < ActiveSupport::TestCase
152 162 private :assert_entry
153 163
154 164 def test_entry_short_id
165 assert_equal 0, @repository.changesets.count
166 create_rev0_short_id
167 assert_equal 1, @repository.changesets.count
155 168 assert_entry(true)
156 169 end
157 170
171 def test_entry_long_id
172 assert_entry(false)
173 end
174
158 175 def test_fetch_changesets_from_scratch
159 176 assert_equal 0, @repository.changesets.count
160 177 @repository.fetch_changesets
@@ -164,13 +181,39 class RepositoryMercurialTest < ActiveSupport::TestCase
164 181 rev0 = @repository.changesets.find_by_revision('0')
165 182 assert_equal "Initial import.\nThe repository contains 3 files.",
166 183 rev0.comments
167 assert_equal "0885933ad4f6", rev0.scmid
184 assert_equal "0885933ad4f68d77c2649cd11f8311276e7ef7ce", rev0.scmid
168 185 first_rev = @repository.changesets.first
169 186 last_rev = @repository.changesets.last
170 187 assert_equal "#{NUM_REV - 1}", first_rev.revision
171 188 assert_equal "0", last_rev.revision
172 189 end
173 190
191 def test_fetch_changesets_keep_short_id
192 assert_equal 0, @repository.changesets.count
193 create_rev0_short_id
194 assert_equal 1, @repository.changesets.count
195 @repository.fetch_changesets
196 @project.reload
197 assert_equal NUM_REV, @repository.changesets.count
198 rev1 = @repository.changesets.find_by_revision('1')
199 assert_equal "9d5b5b004199", rev1.scmid
200 end
201
202 def test_fetch_changesets_keep_long_id
203 assert_equal 0, @repository.changesets.count
204 Changeset.create!(:repository => @repository,
205 :committed_on => Time.now,
206 :revision => '0',
207 :scmid => '0885933ad4f68d77c2649cd11f8311276e7ef7ce',
208 :comments => 'test')
209 assert_equal 1, @repository.changesets.count
210 @repository.fetch_changesets
211 @project.reload
212 assert_equal NUM_REV, @repository.changesets.count
213 rev1 = @repository.changesets.find_by_revision('1')
214 assert_equal "9d5b5b00419901478496242e0768deba1ce8c51e", rev1.scmid
215 end
216
174 217 def test_fetch_changesets_incremental
175 218 assert_equal 0, @repository.changesets.count
176 219 @repository.fetch_changesets
@@ -279,6 +322,16 class RepositoryMercurialTest < ActiveSupport::TestCase
279 322 assert_latest_changesets_tag
280 323 end
281 324
325 def test_latest_changesets_tag_short_id
326 assert_equal 0, @repository.changesets.count
327 create_rev0_short_id
328 assert_equal 1, @repository.changesets.count
329 @repository.fetch_changesets
330 @project.reload
331 assert_equal NUM_REV, @repository.changesets.count
332 assert_latest_changesets_tag
333 end
334
282 335 def test_latest_changesets_tag_with_path
283 336 assert_equal 0, @repository.changesets.count
284 337 @repository.fetch_changesets
@@ -331,6 +384,16 class RepositoryMercurialTest < ActiveSupport::TestCase
331 384 assert_latest_changesets_default_branch
332 385 end
333 386
387 def test_latest_changesets_default_branch_short_id
388 assert_equal 0, @repository.changesets.count
389 create_rev0_short_id
390 assert_equal 1, @repository.changesets.count
391 @repository.fetch_changesets
392 @project.reload
393 assert_equal NUM_REV, @repository.changesets.count
394 assert_latest_changesets_default_branch
395 end
396
334 397 def assert_copied_files(is_short_scmid=true)
335 398 cs1 = @repository.changesets.find_by_revision('13')
336 399 assert_not_nil cs1
@@ -374,12 +437,22 class RepositoryMercurialTest < ActiveSupport::TestCase
374 437
375 438 def test_copied_files_short_id
376 439 assert_equal 0, @repository.changesets.count
440 create_rev0_short_id
441 assert_equal 1, @repository.changesets.count
377 442 @repository.fetch_changesets
378 443 @project.reload
379 444 assert_equal NUM_REV, @repository.changesets.count
380 445 assert_copied_files(true)
381 446 end
382 447
448 def test_copied_files_long_id
449 assert_equal 0, @repository.changesets.count
450 @repository.fetch_changesets
451 @project.reload
452 assert_equal NUM_REV, @repository.changesets.count
453 assert_copied_files(false)
454 end
455
383 456 def test_find_changeset_by_name
384 457 assert_equal 0, @repository.changesets.count
385 458 @repository.fetch_changesets
@@ -459,12 +532,22 class RepositoryMercurialTest < ActiveSupport::TestCase
459 532
460 533 def test_parents_short_id
461 534 assert_equal 0, @repository.changesets.count
535 create_rev0_short_id
536 assert_equal 1, @repository.changesets.count
462 537 @repository.fetch_changesets
463 538 @project.reload
464 539 assert_equal NUM_REV, @repository.changesets.count
465 540 assert_parents(true)
466 541 end
467 542
543 def test_parents_long_id
544 assert_equal 0, @repository.changesets.count
545 @repository.fetch_changesets
546 @project.reload
547 assert_equal NUM_REV, @repository.changesets.count
548 assert_parents(false)
549 end
550
468 551 def test_activities
469 552 c = Changeset.new(:repository => @repository,
470 553 :committed_on => Time.now,
@@ -523,6 +606,27 class RepositoryMercurialTest < ActiveSupport::TestCase
523 606 end
524 607 end
525 608
609 def test_scmid_for_inserting_db_short_id
610 assert_equal 0, @repository.changesets.count
611 create_rev0_short_id
612 assert_equal 1, @repository.changesets.count
613 rev = "0123456789012345678901234567890123456789"
614 assert_equal 12, @repository.scmid_for_inserting_db(rev).length
615 end
616
617 def test_scmid_for_inserting_db_long_id
618 rev = "0123456789012345678901234567890123456789"
619 assert_equal 0, @repository.changesets.count
620 assert_equal 40, @repository.scmid_for_inserting_db(rev).length
621 Changeset.create!(:repository => @repository,
622 :committed_on => Time.now,
623 :revision => '0',
624 :scmid => rev,
625 :comments => 'test')
626 assert_equal 1, @repository.changesets.count
627 assert_equal 40, @repository.scmid_for_inserting_db(rev).length
628 end
629
526 630 def test_scmid_for_assert
527 631 rev = "0123456789012345678901234567890123456789"
528 632 assert_equal rev, scmid_for_assert(rev, false)
@@ -534,6 +638,14 class RepositoryMercurialTest < ActiveSupport::TestCase
534 638 def scmid_for_assert(hex, is_short=true)
535 639 is_short ? hex[0, 12] : hex
536 640 end
641
642 def create_rev0_short_id
643 Changeset.create!(:repository => @repository,
644 :committed_on => Time.now,
645 :revision => '0',
646 :scmid => '0885933ad4f6',
647 :comments => 'test')
648 end
537 649 else
538 650 puts "Mercurial test repository NOT FOUND. Skipping unit tests !!!"
539 651 def test_fake; assert true end
General Comments 0
You need to be logged in to leave comments. Login now