aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'pym/gentoolkit/test/test_atom.py')
-rw-r--r--pym/gentoolkit/test/test_atom.py250
1 files changed, 128 insertions, 122 deletions
diff --git a/pym/gentoolkit/test/test_atom.py b/pym/gentoolkit/test/test_atom.py
index 6df52a9..f5a2a4b 100644
--- a/pym/gentoolkit/test/test_atom.py
+++ b/pym/gentoolkit/test/test_atom.py
@@ -10,132 +10,138 @@ from gentoolkit.cpv import CPV
"""Atom test suite (verbatim) from pkgcore."""
-class TestGentoolkitAtom(unittest.TestCase):
- def assertEqual2(self, o1, o2):
- # logic bugs hidden behind short circuiting comparisons for metadata
- # is why we test the comparison *both* ways.
- self.assertEqual(o1, o2)
- self.assertEqual(o2, o1)
-
- def assertNotEqual2(self, o1, o2):
- # is why we test the comparison *both* ways.
- self.assertNotEqual(o1, o2)
- self.assertNotEqual(o2, o1)
-
- def test_comparison(self):
- self.assertEqual2(Atom('cat/pkg'), Atom('cat/pkg'))
- self.assertNotEqual2(Atom('cat/pkg'), Atom('cat/pkgb'))
- self.assertNotEqual2(Atom('cata/pkg'), Atom('cat/pkg'))
- self.assertNotEqual2(Atom('cat/pkg'), Atom('!cat/pkg'))
- self.assertEqual2(Atom('!cat/pkg'), Atom('!cat/pkg'))
- self.assertNotEqual2(Atom('=cat/pkg-0.1:0'),
- Atom('=cat/pkg-0.1'))
- self.assertNotEqual2(Atom('=cat/pkg-1[foon]'),
- Atom('=cat/pkg-1'))
- self.assertEqual2(Atom('=cat/pkg-0'), Atom('=cat/pkg-0'))
- self.assertNotEqual2(Atom('<cat/pkg-2'), Atom('>cat/pkg-2'))
- self.assertNotEqual2(Atom('=cat/pkg-2*'), Atom('=cat/pkg-2'))
- # Portage Atom doesn't have 'negate_version' capability
- #self.assertNotEqual2(Atom('=cat/pkg-2', True), Atom('=cat/pkg-2'))
-
- # use...
- self.assertNotEqual2(Atom('cat/pkg[foo]'), Atom('cat/pkg'))
- self.assertNotEqual2(Atom('cat/pkg[foo]'),
- Atom('cat/pkg[-foo]'))
- self.assertEqual2(Atom('cat/pkg[foo,-bar]'),
- Atom('cat/pkg[-bar,foo]'))
-
- # repoid not supported by Portage Atom yet
- ## repoid
- #self.assertEqual2(Atom('cat/pkg::a'), Atom('cat/pkg::a'))
- #self.assertNotEqual2(Atom('cat/pkg::a'), Atom('cat/pkg::b'))
- #self.assertNotEqual2(Atom('cat/pkg::a'), Atom('cat/pkg'))
-
- # slots.
- self.assertNotEqual2(Atom('cat/pkg:1'), Atom('cat/pkg'))
- self.assertEqual2(Atom('cat/pkg:2'), Atom('cat/pkg:2'))
- # http://dev.gentoo.org/~tanderson/pms/eapi-2-approved/pms.html#x1-190002.1.2
- self.assertEqual2(Atom('cat/pkg:AZaz09+_.-'), Atom('cat/pkg:AZaz09+_.-'))
- for lesser, greater in (('0.1', '1'), ('1', '1-r1'), ('1.1', '1.2')):
- self.assertTrue(Atom('=d/b-%s' % lesser) <
- Atom('=d/b-%s' % greater),
- msg="d/b-%s < d/b-%s" % (lesser, greater))
- self.assertFalse(Atom('=d/b-%s' % lesser) >
- Atom('=d/b-%s' % greater),
- msg="!: d/b-%s < d/b-%s" % (lesser, greater))
- self.assertTrue(Atom('=d/b-%s' % greater) >
- Atom('=d/b-%s' % lesser),
- msg="d/b-%s > d/b-%s" % (greater, lesser))
- self.assertFalse(Atom('=d/b-%s' % greater) <
- Atom('=d/b-%s' % lesser),
- msg="!: d/b-%s > d/b-%s" % (greater, lesser))
-
- #self.assertTrue(Atom("!!=d/b-1", eapi=2) > Atom("!=d/b-1"))
- self.assertTrue(Atom("!=d/b-1") < Atom("!!=d/b-1"))
- self.assertEqual(Atom("!=d/b-1"), Atom("!=d/b-1"))
-
- def test_intersects(self):
- for this, that, result in [
- ('cat/pkg', 'pkg/cat', False),
- ('cat/pkg', 'cat/pkg', True),
- ('cat/pkg:1', 'cat/pkg:1', True),
- ('cat/pkg:1', 'cat/pkg:2', False),
- ('cat/pkg:1', 'cat/pkg[foo]', True),
- ('cat/pkg[foo]', 'cat/pkg[-bar]', True),
- ('cat/pkg[foo]', 'cat/pkg[-foo]', False),
- ('>cat/pkg-3', '>cat/pkg-1', True),
- ('>cat/pkg-3', '<cat/pkg-3', False),
- ('>=cat/pkg-3', '<cat/pkg-3', False),
- ('>cat/pkg-2', '=cat/pkg-2*', True),
- # Portage vercmp disagrees with this one:
- #('<cat/pkg-2_alpha1', '=cat/pkg-2*', True),
- ('=cat/pkg-2', '=cat/pkg-2', True),
- ('=cat/pkg-3', '=cat/pkg-2', False),
- ('=cat/pkg-2', '>cat/pkg-2', False),
- ('=cat/pkg-2', '>=cat/pkg-2', True),
- ('~cat/pkg-2', '~cat/pkg-2', True),
- ('~cat/pkg-2', '~cat/pkg-2.1', False),
- ('=cat/pkg-2*', '=cat/pkg-2.3*', True),
- ('>cat/pkg-2.4', '=cat/pkg-2*', True),
- ('<cat/pkg-2.4', '=cat/pkg-2*', True),
- ('<cat/pkg-1', '=cat/pkg-2*', False),
- ('~cat/pkg-2', '>cat/pkg-2-r1', True),
- ('~cat/pkg-2', '<=cat/pkg-2', True),
- ('=cat/pkg-2-r2*', '<=cat/pkg-2-r20', True),
- ('=cat/pkg-2-r2*', '<cat/pkg-2-r20', True),
- ('=cat/pkg-2-r2*', '<=cat/pkg-2-r2', True),
- ('~cat/pkg-2', '<cat/pkg-2', False),
- ('=cat/pkg-1-r10*', '~cat/pkg-1', True),
- ('=cat/pkg-1-r1*', '<cat/pkg-1-r1', False),
- ('=cat/pkg-1*', '>cat/pkg-2', False),
- ('>=cat/pkg-8.4', '=cat/pkg-8.3.4*', False),
- ('cat/pkg::gentoo', 'cat/pkg', True),
- ('cat/pkg::gentoo', 'cat/pkg::foo', False),
- ('=sys-devel/gcc-4.1.1-r3', '=sys-devel/gcc-3.3*', False),
- ('=sys-libs/db-4*', '~sys-libs/db-4.3.29', True),
- ]:
- this_atom = Atom(this)
- that_atom = Atom(that)
- self.assertEqual(
- result, this_atom.intersects(that_atom),
- '%s intersecting %s should be %s' % (this, that, result))
- self.assertEqual(
- result, that_atom.intersects(this_atom),
- '%s intersecting %s should be %s' % (that, this, result))
-
- def test_intersects_nameonly(self):
- atom = Atom('cat/pkg')
- self.assertTrue(atom.intersects(CPV('pkg')))
- self.assertFalse(atom.intersects(CPV('other')))
- self.assertFalse(atom.intersects(CPV('dkg')))
+class TestGentoolkitAtom(unittest.TestCase):
+ def assertEqual2(self, o1, o2):
+ # logic bugs hidden behind short circuiting comparisons for metadata
+ # is why we test the comparison *both* ways.
+ self.assertEqual(o1, o2)
+ self.assertEqual(o2, o1)
+
+ def assertNotEqual2(self, o1, o2):
+ # is why we test the comparison *both* ways.
+ self.assertNotEqual(o1, o2)
+ self.assertNotEqual(o2, o1)
+
+ def test_comparison(self):
+ self.assertEqual2(Atom("cat/pkg"), Atom("cat/pkg"))
+ self.assertNotEqual2(Atom("cat/pkg"), Atom("cat/pkgb"))
+ self.assertNotEqual2(Atom("cata/pkg"), Atom("cat/pkg"))
+ self.assertNotEqual2(Atom("cat/pkg"), Atom("!cat/pkg"))
+ self.assertEqual2(Atom("!cat/pkg"), Atom("!cat/pkg"))
+ self.assertNotEqual2(Atom("=cat/pkg-0.1:0"), Atom("=cat/pkg-0.1"))
+ self.assertNotEqual2(Atom("=cat/pkg-1[foon]"), Atom("=cat/pkg-1"))
+ self.assertEqual2(Atom("=cat/pkg-0"), Atom("=cat/pkg-0"))
+ self.assertNotEqual2(Atom("<cat/pkg-2"), Atom(">cat/pkg-2"))
+ self.assertNotEqual2(Atom("=cat/pkg-2*"), Atom("=cat/pkg-2"))
+ # Portage Atom doesn't have 'negate_version' capability
+ # self.assertNotEqual2(Atom('=cat/pkg-2', True), Atom('=cat/pkg-2'))
+
+ # use...
+ self.assertNotEqual2(Atom("cat/pkg[foo]"), Atom("cat/pkg"))
+ self.assertNotEqual2(Atom("cat/pkg[foo]"), Atom("cat/pkg[-foo]"))
+ self.assertEqual2(Atom("cat/pkg[foo,-bar]"), Atom("cat/pkg[-bar,foo]"))
+
+ # repoid not supported by Portage Atom yet
+ # repoid
+ # self.assertEqual2(Atom('cat/pkg::a'), Atom('cat/pkg::a'))
+ # self.assertNotEqual2(Atom('cat/pkg::a'), Atom('cat/pkg::b'))
+ # self.assertNotEqual2(Atom('cat/pkg::a'), Atom('cat/pkg'))
+
+ # slots.
+ self.assertNotEqual2(Atom("cat/pkg:1"), Atom("cat/pkg"))
+ self.assertEqual2(Atom("cat/pkg:2"), Atom("cat/pkg:2"))
+ # http://dev.gentoo.org/~tanderson/pms/eapi-2-approved/pms.html#x1-190002.1.2
+ self.assertEqual2(Atom("cat/pkg:AZaz09+_.-"), Atom("cat/pkg:AZaz09+_.-"))
+ for lesser, greater in (("0.1", "1"), ("1", "1-r1"), ("1.1", "1.2")):
+ self.assertTrue(
+ Atom("=d/b-%s" % lesser) < Atom("=d/b-%s" % greater),
+ msg="d/b-%s < d/b-%s" % (lesser, greater),
+ )
+ self.assertFalse(
+ Atom("=d/b-%s" % lesser) > Atom("=d/b-%s" % greater),
+ msg="!: d/b-%s < d/b-%s" % (lesser, greater),
+ )
+ self.assertTrue(
+ Atom("=d/b-%s" % greater) > Atom("=d/b-%s" % lesser),
+ msg="d/b-%s > d/b-%s" % (greater, lesser),
+ )
+ self.assertFalse(
+ Atom("=d/b-%s" % greater) < Atom("=d/b-%s" % lesser),
+ msg="!: d/b-%s > d/b-%s" % (greater, lesser),
+ )
+
+ # self.assertTrue(Atom("!!=d/b-1", eapi=2) > Atom("!=d/b-1"))
+ self.assertTrue(Atom("!=d/b-1") < Atom("!!=d/b-1"))
+ self.assertEqual(Atom("!=d/b-1"), Atom("!=d/b-1"))
+
+ def test_intersects(self):
+ for this, that, result in [
+ ("cat/pkg", "pkg/cat", False),
+ ("cat/pkg", "cat/pkg", True),
+ ("cat/pkg:1", "cat/pkg:1", True),
+ ("cat/pkg:1", "cat/pkg:2", False),
+ ("cat/pkg:1", "cat/pkg[foo]", True),
+ ("cat/pkg[foo]", "cat/pkg[-bar]", True),
+ ("cat/pkg[foo]", "cat/pkg[-foo]", False),
+ (">cat/pkg-3", ">cat/pkg-1", True),
+ (">cat/pkg-3", "<cat/pkg-3", False),
+ (">=cat/pkg-3", "<cat/pkg-3", False),
+ (">cat/pkg-2", "=cat/pkg-2*", True),
+ # Portage vercmp disagrees with this one:
+ # ('<cat/pkg-2_alpha1', '=cat/pkg-2*', True),
+ ("=cat/pkg-2", "=cat/pkg-2", True),
+ ("=cat/pkg-3", "=cat/pkg-2", False),
+ ("=cat/pkg-2", ">cat/pkg-2", False),
+ ("=cat/pkg-2", ">=cat/pkg-2", True),
+ ("~cat/pkg-2", "~cat/pkg-2", True),
+ ("~cat/pkg-2", "~cat/pkg-2.1", False),
+ ("=cat/pkg-2*", "=cat/pkg-2.3*", True),
+ (">cat/pkg-2.4", "=cat/pkg-2*", True),
+ ("<cat/pkg-2.4", "=cat/pkg-2*", True),
+ ("<cat/pkg-1", "=cat/pkg-2*", False),
+ ("~cat/pkg-2", ">cat/pkg-2-r1", True),
+ ("~cat/pkg-2", "<=cat/pkg-2", True),
+ ("=cat/pkg-2-r2*", "<=cat/pkg-2-r20", True),
+ ("=cat/pkg-2-r2*", "<cat/pkg-2-r20", True),
+ ("=cat/pkg-2-r2*", "<=cat/pkg-2-r2", True),
+ ("~cat/pkg-2", "<cat/pkg-2", False),
+ ("=cat/pkg-1-r10*", "~cat/pkg-1", True),
+ ("=cat/pkg-1-r1*", "<cat/pkg-1-r1", False),
+ ("=cat/pkg-1*", ">cat/pkg-2", False),
+ (">=cat/pkg-8.4", "=cat/pkg-8.3.4*", False),
+ ("cat/pkg::gentoo", "cat/pkg", True),
+ ("cat/pkg::gentoo", "cat/pkg::foo", False),
+ ("=sys-devel/gcc-4.1.1-r3", "=sys-devel/gcc-3.3*", False),
+ ("=sys-libs/db-4*", "~sys-libs/db-4.3.29", True),
+ ]:
+ this_atom = Atom(this)
+ that_atom = Atom(that)
+ self.assertEqual(
+ result,
+ this_atom.intersects(that_atom),
+ "%s intersecting %s should be %s" % (this, that, result),
+ )
+ self.assertEqual(
+ result,
+ that_atom.intersects(this_atom),
+ "%s intersecting %s should be %s" % (that, this, result),
+ )
+
+ def test_intersects_nameonly(self):
+ atom = Atom("cat/pkg")
+ self.assertTrue(atom.intersects(CPV("pkg")))
+ self.assertFalse(atom.intersects(CPV("other")))
+ self.assertFalse(atom.intersects(CPV("dkg")))
def test_main():
- suite = unittest.TestLoader().loadTestsFromTestCase(TestGentoolkitAtom)
- unittest.TextTestRunner(verbosity=2).run(suite)
+ suite = unittest.TestLoader().loadTestsFromTestCase(TestGentoolkitAtom)
+ unittest.TextTestRunner(verbosity=2).run(suite)
+
+
test_main.__test__ = False
-if __name__ == '__main__':
- test_main()
+if __name__ == "__main__":
+ test_main()