174
171
def test_has_upstream_version(self):
177
self.assertFalse(db.has_upstream_version(version))
178
self.assertFalse(db.has_upstream_version(version,
174
self.assertFalse(db.has_upstream_version("package", version))
175
self.assertFalse(db.has_upstream_version("package", version,
179
176
[("foo.tar.gz", self.fake_md5_1)]))
180
177
self.do_commit_with_md5(self.up_tree1, "one", self.fake_md5_1)
181
178
db.tag_upstream_version(version)
182
self.assertTrue(db.has_upstream_version(version))
183
self.assertTrue(db.has_upstream_version(
179
self.assertTrue(db.has_upstream_version("package", version))
180
self.assertTrue(db.has_upstream_version("package",
184
181
version, [("foo.tar.gz", self.fake_md5_1)]))
185
self.assertFalse(db.has_upstream_version(version,
182
self.assertFalse(db.has_upstream_version("package", version,
186
183
[("foo.tar.gz", self.fake_md5_2)]))
188
self.assertTrue(db.has_upstream_version(version))
189
self.assertTrue(db.has_upstream_version(version,
185
self.assertTrue(db.has_upstream_version("package", version))
186
self.assertTrue(db.has_upstream_version("package", version,
190
187
[("foo.tar.gz", self.fake_md5_1)]))
191
self.assertFalse(db.has_upstream_version(version,
188
self.assertFalse(db.has_upstream_version("package", version,
192
189
[("foo.tar.gz", self.fake_md5_2)]))
194
self.assertFalse(db.has_upstream_version(version))
195
self.assertFalse(db.has_upstream_version(version,
191
self.assertFalse(db.has_upstream_version("package", version))
192
self.assertFalse(db.has_upstream_version("package", version,
196
193
[("foo.tar.gz", self.fake_md5_1)]))
197
self.assertFalse(db.has_upstream_version(version,
194
self.assertFalse(db.has_upstream_version("package", version,
198
195
[("foo.tar.gz", self.fake_md5_2)]))
200
197
def test_revid_of_version(self):
401
399
version1 = Version("0.1-1")
402
400
up_revid = self.up_tree1.commit("one")
403
401
db.tag_upstream_version(version1.upstream_version)
404
self.assertEqual(db.get_parents_with_upstream(version1, [version1]),
403
db.get_parents_with_upstream("package", version1, [version1]),
407
406
self.up_tree2.pull(self.up_tree1.branch)
408
407
db.tag_upstream_version(version1.upstream_version)
409
self.assertEqual(db.get_parents_with_upstream(version1, [version1]),
409
db.get_parents_with_upstream("package", version1, [version1]),
412
412
def test_get_parents_with_upstream_second_version(self):
435
435
self.db2.tag_upstream_version(version2.upstream_version)
436
436
versions = [version3, version1, version2]
437
437
# No upstream parent
438
self.assertEqual(self.db2.get_parents_with_upstream(version3,
439
versions), [revid2, revid1])
438
self.assertEqual(self.db2.get_parents_with_upstream(
439
"package", version3, versions), [revid2, revid1])
441
441
def test_get_parents_with_upstream_merge_from_greater(self):
442
442
version1 = Version("0.1-1")
452
452
self.db2.tag_upstream_version(version2.upstream_version)
453
453
versions = [version3, version2, version1]
454
454
# No upstream parent
455
self.assertEqual(self.db1.get_parents_with_upstream(version3,
456
versions), [revid1, revid2])
455
self.assertEqual(self.db1.get_parents_with_upstream(
456
"package", version3, versions), [revid1, revid2])
458
458
def test_get_parents_with_upstream_new_upstream_import(self):
459
459
version1 = Version("0.1-1")
468
468
self.db2.tag_upstream_version(version2.upstream_version)
469
469
versions = [version2, version1]
470
470
# Upstream parent as it is new upstream version
471
self.assertEqual(self.db2.get_parents_with_upstream(version2,
472
versions), [revid1, up_revid2])
471
self.assertEqual(self.db2.get_parents_with_upstream(
472
"package", version2, versions), [revid1, up_revid2])
474
474
def test_get_parents_merge_new_upstream_from_lesser(self):
475
475
version1 = Version("0.1-1")
492
492
self.db2.tag_upstream_version(version4.upstream_version)
493
493
versions = [version4, version3, version2, version1]
494
494
# no upstream parent as the lesser branch has already merged it
495
self.assertEqual(self.db2.get_parents_with_upstream(version4,
496
versions), [revid2, revid3])
495
self.assertEqual(self.db2.get_parents_with_upstream(
496
"package", version4, versions), [revid2, revid3])
498
498
def test_get_parents_with_upstream_force_upstream(self):
499
499
version1 = Version("0.1-1")
507
507
versions = [version2, version1]
508
508
# a previous test checked that this wouldn't give an
509
509
# upstream parent, but we are requiring one.
510
self.assertEqual(self.db2.get_parents_with_upstream(version2,
511
versions, force_upstream_parent=True),
510
self.assertEqual(self.db2.get_parents_with_upstream(
511
"package", version2, versions, force_upstream_parent=True),
514
514
def test_get_parents_with_upstream_sync_when_diverged(self):
515
515
version1 = Version("0.1-1")
528
528
versions = [version3, version2, version1]
529
529
# This is a sync but we are diverged so we should get two
531
self.assertEqual(self.db2.get_parents_with_upstream(version3,
532
versions), [revid2, revid3])
531
self.assertEqual(self.db2.get_parents_with_upstream(
532
"package", version3, versions), [revid2, revid3])
534
534
def test_get_parents_with_upstream_sync_new_upstream(self):
535
535
version1 = Version("0.1-1")
551
551
# This a sync, but we are diverged, so we should get two
552
552
# parents. There should be no upstream as the synced
553
553
# version will already have it.
554
self.assertEqual(self.db2.get_parents_with_upstream(version3,
555
versions), [revid2, revid3])
554
self.assertEqual(self.db2.get_parents_with_upstream(
555
"package", version3, versions), [revid2, revid3])
557
557
def test_get_parents_with_upstream_sync_new_upstream_force(self):
558
558
version1 = Version("0.1-1")
578
578
# checks that there is not normally an upstream parent
579
579
# when we fake-sync, but we are forcing one here.
580
580
#TODO: should the upstream parent be second or third?
581
self.assertEqual(self.db2.get_parents_with_upstream(version3,
582
versions, force_upstream_parent=True),
581
self.assertEqual(self.db2.get_parents_with_upstream(
582
"package", version3, versions, force_upstream_parent=True),
583
583
[revid2, up_revid3, revid3])
585
585
def test_branch_to_pull_version_from(self):
639
639
version1 = Version("0.1-1")
640
640
version2 = Version("0.2-1")
641
641
# With no versions tagged everything is None
642
branch = self.db2.branch_to_pull_upstream_from(
642
branch = self.db2.branch_to_pull_upstream_from("package",
643
643
version1.upstream_version, [("foo.tar.gz", self.fake_md5_1)])
644
644
self.assertEqual(branch, None)
645
branch = self.db2.branch_to_pull_upstream_from(
645
branch = self.db2.branch_to_pull_upstream_from("package",
646
646
version1.upstream_version, [("foo.tar.gz", self.fake_md5_2)])
647
647
self.assertEqual(branch, None)
648
branch = self.db1.branch_to_pull_upstream_from(
648
branch = self.db1.branch_to_pull_upstream_from("package",
649
649
version1.upstream_version, [("foo.tar.gz", self.fake_md5_1)])
650
650
self.assertEqual(branch, None)
651
651
self.do_commit_with_md5(self.up_tree1, "one", self.fake_md5_1)
652
652
self.db1.tag_upstream_version(version1.upstream_version)
653
653
# Version and md5 available, so we get the correct branch.
654
branch = self.db2.branch_to_pull_upstream_from(
654
branch = self.db2.branch_to_pull_upstream_from("package",
655
655
version1.upstream_version, [("foo.tar.gz", self.fake_md5_1)])
656
656
self.assertEqual(branch, self.db1)
657
657
# Otherwise (different version or md5) then we get None
658
branch = self.db2.branch_to_pull_upstream_from(
658
branch = self.db2.branch_to_pull_upstream_from("package",
659
659
version1.upstream_version, [("foo.tar.gz", self.fake_md5_2)])
660
660
self.assertEqual(branch, None)
661
branch = self.db2.branch_to_pull_upstream_from(version2.upstream_version,
661
branch = self.db2.branch_to_pull_upstream_from("package",
662
version2.upstream_version,
662
663
[("foo.tar.gz", self.fake_md5_1)])
663
664
self.assertEqual(branch, None)
664
branch = self.db2.branch_to_pull_upstream_from(version2.upstream_version,
665
branch = self.db2.branch_to_pull_upstream_from("package",
666
version2.upstream_version,
665
667
[("foo.tar.gz", self.fake_md5_2)])
666
668
self.assertEqual(branch, None)
667
669
# And we don't get a branch for the one that already has
669
branch = self.db1.branch_to_pull_upstream_from(
671
branch = self.db1.branch_to_pull_upstream_from("package",
670
672
version1.upstream_version, [("foo.tar.gz", self.fake_md5_1)])
671
673
self.assertEqual(branch, None)
672
674
self.up_tree2.pull(self.up_tree1.branch)
673
675
self.db2.tag_upstream_version(version1.upstream_version)
674
676
# And we get the greatest branch when two lesser branches
675
677
# have what we are looking for.
676
branch = self.db3.branch_to_pull_upstream_from(
678
branch = self.db3.branch_to_pull_upstream_from("package",
677
679
version1.upstream_version, [("foo.tar.gz", self.fake_md5_1)])
678
680
self.assertEqual(branch, self.db2)
679
681
# If the branches have diverged then we don't get a branch.
680
682
self.up_tree3.commit("three")
681
branch = self.db3.branch_to_pull_upstream_from(
683
branch = self.db3.branch_to_pull_upstream_from("package",
682
684
version1.upstream_version, [("foo.tar.gz", self.fake_md5_1)])
683
685
self.assertEqual(branch, None)
693
695
revid = self.do_commit_with_md5(self.tree1, "one", self.fake_md5_2)
694
696
self.db1.tag_version(version)
695
697
self.assertNotEqual(self.tree2.branch.last_revision(), revid)
696
self.db2.pull_version_from_branch(self.db1, version)
698
self.db2.pull_version_from_branch(self.db1, "package", version)
697
699
self.assertEqual(self.tree2.branch.last_revision(), revid)
698
700
self.assertEqual(self.up_tree2.branch.last_revision(), up_revid)
699
701
self.assertEqual(self.db2.revid_of_version(version), revid)
700
702
self.assertEqual(self.db2.revid_of_upstream_version(
701
version.upstream_version), up_revid)
703
"package", version.upstream_version), up_revid)
703
705
def test_pull_from_lesser_branch_with_upstream(self):
704
706
version = Version("0.1-1")
709
711
self.db1.tag_version(version)
710
712
self.assertNotEqual(self.tree2.branch.last_revision(), revid)
711
713
self.assertNotEqual(self.up_tree2.branch.last_revision(), up_revid)
712
self.db2.pull_version_from_branch(self.db1, version)
714
self.db2.pull_version_from_branch(self.db1, "package", version)
713
715
self.assertEqual(self.tree2.branch.last_revision(), revid)
714
716
self.assertEqual(self.up_tree2.branch.last_revision(), up_revid)
715
717
self.assertEqual(self.db2.revid_of_version(version), revid)
716
718
self.assertEqual(self.db2.revid_of_upstream_version(
717
version.upstream_version), up_revid)
719
"package", version.upstream_version), up_revid)
719
721
def test_pull_upstream_from_branch(self):
723
725
self.db1.tag_upstream_version(version)
724
726
self.assertNotEqual(self.up_tree2.branch.last_revision(), up_revid)
725
self.db2.pull_upstream_from_branch(self.db1, version)
727
self.db2.pull_upstream_from_branch(self.db1, "package", version)
726
728
self.assertEqual(self.up_tree2.branch.last_revision(), up_revid)
727
self.assertEqual(self.db2.revid_of_upstream_version(version),
729
self.assertEqual(self.db2.revid_of_upstream_version("package", version),
730
732
def check_changes(self, changes, added=[], removed=[], modified=[],
1369
1372
self.assertEqual(self.db1.revid_of_version(version2), rh1[2])
1370
1373
self.assertEqual(self.db1.revid_of_version(version3), rh1[3])
1371
1374
self.assertEqual(
1372
self.db1.revid_of_upstream_version(version1.upstream_version),
1375
self.db1.revid_of_upstream_version("package", version1.upstream_version),
1374
1377
self.assertEqual(
1375
self.db1.revid_of_upstream_version(version3.upstream_version),
1378
self.db1.revid_of_upstream_version("package", version3.upstream_version),
1377
1380
self.tree1.lock_read()
1378
1381
self.addCleanup(self.tree1.unlock)
1379
1382
self.assertFalse(self.db1.is_version_native(version1))
1424
1427
self.assertEqual(self.db1.revid_of_version(version2), rh1[2])
1425
1428
self.assertEqual(self.db1.revid_of_version(version3), rh1[3])
1426
1429
self.assertEqual(
1427
self.db1.revid_of_upstream_version(version1.upstream_version),
1430
self.db1.revid_of_upstream_version("package", version1.upstream_version),
1429
1432
self.assertEqual(
1430
self.db1.revid_of_upstream_version(version3.upstream_version),
1433
self.db1.revid_of_upstream_version("package", version3.upstream_version),
1432
1435
self.tree1.lock_read()
1433
1436
self.addCleanup(self.tree1.unlock)
1434
1437
self.assertFalse(self.db1.is_version_native(version1))