| 1 | from testbase import *
|
|---|
| 2 |
|
|---|
| 3 | class ComplexRemoveTests(OperationsTests):
|
|---|
| 4 | # Three testcases. A -> B means that B requires A.
|
|---|
| 5 | # 1) 0 -> L1 -> (R1 -> R2, L2 -> L3) where everything but L3 was
|
|---|
| 6 | # dep-installed (removing L3 should remove everything);
|
|---|
| 7 | # 2) 0 -> L1 -> (R1 -> R2, L2 -> L3) where everything but L3 and R2 was
|
|---|
| 8 | # dep-installed (removing L3 should only remove L3 and L2);
|
|---|
| 9 | # 3) C1 <--> C2 -> C3 where C1 and C2 were dep-installed (removing
|
|---|
| 10 | # C3 should remove everything)
|
|---|
| 11 | @staticmethod
|
|---|
| 12 | def buildPkgs(pkgs, *args):
|
|---|
| 13 | pkgs.node0 = FakePackage('foo', '2.5', '1.1', '0', 'noarch')
|
|---|
| 14 | pkgs.node0.addFile('/bin/foo')
|
|---|
| 15 | pkgs.node0.yumdb_info.reason = 'dep'
|
|---|
| 16 |
|
|---|
| 17 | pkgs.lnode1 = FakePackage('bar1', '1.0')
|
|---|
| 18 | pkgs.lnode1.addRequires('foo')
|
|---|
| 19 | pkgs.lnode1.addRequiresPkg(pkgs.node0)
|
|---|
| 20 | pkgs.node0.addRequiringPkg(pkgs.lnode1)
|
|---|
| 21 | pkgs.lnode1.yumdb_info.reason = 'dep'
|
|---|
| 22 |
|
|---|
| 23 | pkgs.lnode2 = FakePackage('bar2', '1.0')
|
|---|
| 24 | pkgs.lnode2.addRequires('bar1')
|
|---|
| 25 | pkgs.lnode2.addRequiresPkg(pkgs.lnode1)
|
|---|
| 26 | pkgs.lnode1.addRequiringPkg(pkgs.lnode2)
|
|---|
| 27 | pkgs.lnode2.yumdb_info.reason = 'dep'
|
|---|
| 28 |
|
|---|
| 29 | pkgs.lnode3 = FakePackage('bar3', '1.0')
|
|---|
| 30 | pkgs.lnode3.addRequires('bar2')
|
|---|
| 31 | pkgs.lnode3.addRequiresPkg(pkgs.lnode2)
|
|---|
| 32 | pkgs.lnode2.addRequiresPkg(pkgs.lnode3)
|
|---|
| 33 | pkgs.lnode3.yumdb_info.reason = 'user'
|
|---|
| 34 |
|
|---|
| 35 | pkgs.rnode1 = FakePackage('baz1', '1.0')
|
|---|
| 36 | pkgs.rnode1.addRequires('bar1')
|
|---|
| 37 | pkgs.rnode1.addRequiresPkg(pkgs.lnode1)
|
|---|
| 38 | pkgs.lnode1.addRequiringPkg(pkgs.rnode1)
|
|---|
| 39 | pkgs.rnode1.yumdb_info.reason = 'dep'
|
|---|
| 40 |
|
|---|
| 41 | pkgs.rnode2 = FakePackage('baz2', '1.0')
|
|---|
| 42 | pkgs.rnode2.addRequires('baz1')
|
|---|
| 43 | pkgs.rnode2.addRequiresPkg(pkgs.rnode1)
|
|---|
| 44 | pkgs.rnode1.addRequiringPkg(pkgs.rnode2)
|
|---|
| 45 | pkgs.rnode2.yumdb_info.reason = 'dep'
|
|---|
| 46 |
|
|---|
| 47 | pkgs.cycle1 = FakePackage('cycle1', '1.0')
|
|---|
| 48 | pkgs.cycle1.yumdb_info.reason = 'dep'
|
|---|
| 49 |
|
|---|
| 50 | pkgs.cycle2 = FakePackage('cycle2', '1.0')
|
|---|
| 51 | pkgs.cycle2.yumdb_info.reason = 'dep'
|
|---|
| 52 |
|
|---|
| 53 | pkgs.cycle3 = FakePackage('cycle3', '1.0')
|
|---|
| 54 | pkgs.cycle3.yumdb_info.reason = 'user'
|
|---|
| 55 |
|
|---|
| 56 |
|
|---|
| 57 | pkgs.cycle1.addRequires('cycle2')
|
|---|
| 58 | pkgs.cycle1.addRequiresPkg(pkgs.cycle2)
|
|---|
| 59 | pkgs.cycle2.addRequiringPkg(pkgs.cycle1)
|
|---|
| 60 |
|
|---|
| 61 | pkgs.cycle2.addRequires('cycle1')
|
|---|
| 62 | pkgs.cycle2.addRequiringPkg(pkgs.cycle1)
|
|---|
| 63 | pkgs.cycle1.addRequiringPkg(pkgs.cycle2)
|
|---|
| 64 |
|
|---|
| 65 | pkgs.cycle3.addRequires('cycle2')
|
|---|
| 66 | pkgs.cycle3.addRequiresPkg(pkgs.cycle2)
|
|---|
| 67 | pkgs.cycle2.addRequiringPkg(pkgs.cycle3)
|
|---|
| 68 |
|
|---|
| 69 | def testRemoveCycle(self):
|
|---|
| 70 | p = self.pkgs
|
|---|
| 71 | res, msg = self.runOperation(['remove', 'cycle3'], [p.cycle1, p.cycle2, p.cycle3], [])
|
|---|
| 72 | self.assertResult( () )
|
|---|
| 73 |
|
|---|
| 74 | def testRemoveTree(self):
|
|---|
| 75 | p = self.pkgs
|
|---|
| 76 | res, msg = self.runOperation(['remove', 'bar3'], [p.node0, p.lnode1, p.lnode2, p.lnode3, p.rnode1, p.rnode2], [])
|
|---|
| 77 | self.assertResult( () )
|
|---|
| 78 |
|
|---|
| 79 | def testRemoveNeededRevdeps(self):
|
|---|
| 80 | p = self.pkgs
|
|---|
| 81 | p.rnode2.yumdb_info.reason = 'user'
|
|---|
| 82 | res, msg = self.runOperation(['remove', 'bar3'], [p.node0, p.lnode1, p.lnode2, p.lnode3, p.rnode1, p.rnode2], [])
|
|---|
| 83 | p.rnode2.yumdb_info.reason = 'dep'
|
|---|
| 84 | self.assertResult( (p.node0, p.lnode1, p.rnode1, p.rnode2) )
|
|---|
| 85 |
|
|---|