* [gentoo-commits] proj/gentoopm:master commit in: /, gentoopm/tests/
@ 2011-07-14 22:51 Michał Górny
0 siblings, 0 replies; 7+ messages in thread
From: Michał Górny @ 2011-07-14 22:51 UTC (permalink / raw
To: gentoo-commits
commit: 404cf6f20408e9a1cf0a0f2e0c2f12b0f62ca60e
Author: Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Thu Jul 14 22:12:59 2011 +0000
Commit: Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Thu Jul 14 22:13:32 2011 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/gentoopm.git;a=commit;h=404cf6f2
Support loading test suites for all PMs.
---
gentoopm/tests/__init__.py | 38 ++++++++++++++++++++++++++++++++++++++
setup.py | 21 +++++++++++++++++----
2 files changed, 55 insertions(+), 4 deletions(-)
diff --git a/gentoopm/tests/__init__.py b/gentoopm/tests/__init__.py
new file mode 100644
index 0000000..40f0b75
--- /dev/null
+++ b/gentoopm/tests/__init__.py
@@ -0,0 +1,38 @@
+#!/usr/bin/python
+# vim:fileencoding=utf-8
+# (c) 2011 Michał Górny <mgorny@gentoo.org>
+# Released under the terms of the 2-clause BSD license.
+
+import unittest
+
+class PMTestCase(unittest.TestCase):
+ _pm = None
+
+ @property
+ def pm(self):
+ assert(self._pm is not None)
+ return self._pm
+
+ @pm.setter
+ def pm(self, val):
+ assert(self._pm is None)
+ self._pm = val
+
+class PMTestSuiteFactory(object):
+ def __init__(self, pm):
+ self._pm = pm
+
+ def __call__(self, tests):
+ for t in tests:
+ t.pm = self._pm
+ return unittest.TestSuite(tests)
+
+class PMTestLoader(unittest.TestLoader):
+ def __init__(self, pm):
+ self.suiteClass = PMTestSuiteFactory(pm)
+ unittest.TestLoader.__init__(self)
+
+ def loadTestsFromModule(self, mod):
+ if isinstance(mod, basestring):
+ mod = __import__(mod, fromlist=['.'], level=-1)
+ return unittest.TestLoader.loadTestsFromModule(self, mod)
diff --git a/setup.py b/setup.py
index 01f5366..ba0553b 100755
--- a/setup.py
+++ b/setup.py
@@ -39,12 +39,24 @@ class TestCommand(Command):
pass
def run(self):
- import unittest
+ import unittest, doctest
+ import gentoopm.submodules, gentoopm.tests
- tests = unittest.TestSuite()
+ maintestsuite = unittest.TestSuite()
+
+ for pm in gentoopm.submodules._supported_pms:
+ try:
+ pm_inst = gentoopm.submodules.get_pm(pm)
+ except ImportError:
+ print('%s not available, skipping tests.' % pm)
+ else:
+ l = gentoopm.tests.PMTestLoader(pm_inst)
+
+ testsuite = unittest.TestSuite()
+ maintestsuite.addTests(testsuite)
r = unittest.TextTestRunner()
- res = r.run(tests)
+ res = r.run(maintestsuite)
sys.exit(0 if res.wasSuccessful() else 1)
setup(
@@ -60,7 +72,8 @@ setup(
'gentoopm.bash',
'gentoopm.paludispm',
'gentoopm.pkgcorepm',
- 'gentoopm.portagepm'
+ 'gentoopm.portagepm',
+ 'gentoopm.tests'
],
scripts = [
'gentoopmq'
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [gentoo-commits] proj/gentoopm:master commit in: /, gentoopm/tests/
@ 2011-07-14 22:51 Michał Górny
0 siblings, 0 replies; 7+ messages in thread
From: Michał Górny @ 2011-07-14 22:51 UTC (permalink / raw
To: gentoo-commits
commit: 88cb9b5a3f27fec7bbdb5f07d101ac04dddeede5
Author: Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Thu Jul 14 22:50:10 2011 +0000
Commit: Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Thu Jul 14 22:50:10 2011 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/gentoopm.git;a=commit;h=88cb9b5a
Add tests for Atom class impl.
---
gentoopm/tests/atom.py | 57 ++++++++++++++++++++++++++++++++++++++++++++++++
setup.py | 1 +
2 files changed, 58 insertions(+), 0 deletions(-)
diff --git a/gentoopm/tests/atom.py b/gentoopm/tests/atom.py
new file mode 100644
index 0000000..bee882d
--- /dev/null
+++ b/gentoopm/tests/atom.py
@@ -0,0 +1,57 @@
+#!/usr/bin/python
+# vim:fileencoding=utf-8
+# (c) 2011 Michał Górny <mgorny@gentoo.org>
+# Released under the terms of the 2-clause BSD license.
+
+from gentoopm.exceptions import InvalidAtomStringError, AmbiguousPackageSetError
+from gentoopm.tests import PMTestCase
+
+class UserSpecifiedAtomTestCase(PMTestCase):
+ def setUp(self):
+ self._incomplete_atom = self.pm.Atom('portage')
+ self._complete_atom = self.pm.Atom('sys-apps/portage')
+ self._associated_atom = self._complete_atom.get_associated(self.pm.stack)
+
+ def test_invalid_atoms(self):
+ for atstr in ('<>foo', '=bar', '*/*::baz'):
+ self.assertRaises(InvalidAtomStringError, self.pm.Atom, atstr)
+
+ def test_incomplete_atom(self):
+ a = self._incomplete_atom
+ self.assertEqual(a.complete, False)
+ self.assertEqual(a.associated, False)
+
+ def test_complete_atom(self):
+ a = self._complete_atom
+ self.assertEqual(a.complete, True)
+ self.assertEqual(a.associated, False)
+
+ def test_atom_stringification(self):
+ for atstr in ('foo/bar', '>=baz/bar-100', 'foo/baz:10',
+ 'bar/baz::foo', '>=foo/fooz-29.5:bazmania', '~baz/inga-4.1:2::foo'):
+ self.assertEqual(atstr, str(self.pm.Atom(atstr)))
+
+ def test_atom_association(self):
+ a = self._associated_atom
+ self.assertEqual(a.complete, True)
+ self.assertEqual(a.associated, True)
+
+ def test_incomplete_atom_association(self):
+ a = self._incomplete_atom.get_associated(self.pm.stack)
+ self.assertEqual(a.complete, True)
+ self.assertEqual(a.associated, True)
+
+ def test_ambiguous_atom_association(self):
+ # XXX: risky
+ ia = self.pm.Atom('pms')
+ self.assertRaises(AmbiguousPackageSetError, ia.get_associated,
+ self.pm.stack)
+
+ def test_atom_transformations(self):
+ a = self._associated_atom
+ cas = str(self._complete_atom)
+ self.assertEqual(str(a.slotted), '%s:0' % cas)
+ self.assertEqual(str(a.unversioned), cas)
+
+ def tearDown(self):
+ pass
diff --git a/setup.py b/setup.py
index ba0553b..92fc300 100755
--- a/setup.py
+++ b/setup.py
@@ -53,6 +53,7 @@ class TestCommand(Command):
l = gentoopm.tests.PMTestLoader(pm_inst)
testsuite = unittest.TestSuite()
+ testsuite.addTests(l.loadTestsFromModule('gentoopm.tests.atom'))
maintestsuite.addTests(testsuite)
r = unittest.TextTestRunner()
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [gentoo-commits] proj/gentoopm:master commit in: /, gentoopm/tests/
@ 2011-07-15 9:52 Michał Górny
0 siblings, 0 replies; 7+ messages in thread
From: Michał Górny @ 2011-07-15 9:52 UTC (permalink / raw
To: gentoo-commits
commit: 5af231d34b76a38848b95fb7d7212246996edf7b
Author: Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Fri Jul 15 08:54:39 2011 +0000
Commit: Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Fri Jul 15 08:54:39 2011 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/gentoopm.git;a=commit;h=5af231d3
Add tests for config.
---
gentoopm/tests/config.py | 19 +++++++++++++++++++
setup.py | 1 +
2 files changed, 20 insertions(+), 0 deletions(-)
diff --git a/gentoopm/tests/config.py b/gentoopm/tests/config.py
new file mode 100644
index 0000000..599e06d
--- /dev/null
+++ b/gentoopm/tests/config.py
@@ -0,0 +1,19 @@
+#!/usr/bin/python
+# vim:fileencoding=utf-8
+# (c) 2011 Michał Górny <mgorny@gentoo.org>
+# Released under the terms of the 2-clause BSD license.
+
+from gentoopm.tests import PMTestCase
+
+class ConfigTestCase(PMTestCase):
+ def setUp(self):
+ self._conf = self.pm.config
+
+ def test_userpriv(self):
+ if self._conf.userpriv_enabled:
+ # root's no userpriv
+ self.assertNotEqual(self._conf.userpriv_uid, 0)
+ self.assertNotEqual(self._conf.userpriv_gid, 0)
+
+ def tearDown(self):
+ pass
diff --git a/setup.py b/setup.py
index 92fc300..5eac8d5 100755
--- a/setup.py
+++ b/setup.py
@@ -54,6 +54,7 @@ class TestCommand(Command):
testsuite = unittest.TestSuite()
testsuite.addTests(l.loadTestsFromModule('gentoopm.tests.atom'))
+ testsuite.addTests(l.loadTestsFromModule('gentoopm.tests.config'))
maintestsuite.addTests(testsuite)
r = unittest.TextTestRunner()
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [gentoo-commits] proj/gentoopm:master commit in: /, gentoopm/tests/
@ 2011-07-15 9:52 Michał Górny
0 siblings, 0 replies; 7+ messages in thread
From: Michał Górny @ 2011-07-15 9:52 UTC (permalink / raw
To: gentoo-commits
commit: 4b2eb6c85228e08265ddad6732dbd38588c3c1bb
Author: Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Fri Jul 15 09:19:16 2011 +0000
Commit: Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Fri Jul 15 09:20:33 2011 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/gentoopm.git;a=commit;h=4b2eb6c8
Add general tests for repository properties.
---
gentoopm/tests/__init__.py | 3 +++
gentoopm/tests/repo.py | 39 +++++++++++++++++++++++++++++++++++++++
setup.py | 1 +
3 files changed, 43 insertions(+), 0 deletions(-)
diff --git a/gentoopm/tests/__init__.py b/gentoopm/tests/__init__.py
index f430917..eced9c1 100644
--- a/gentoopm/tests/__init__.py
+++ b/gentoopm/tests/__init__.py
@@ -51,3 +51,6 @@ class PackageNames(object):
multiple = 'pms'
""" Incomplete atom matching multiple packages. """
+
+ repository = 'gentoo'
+ """ Repository name guaranteed to match. """
diff --git a/gentoopm/tests/repo.py b/gentoopm/tests/repo.py
new file mode 100644
index 0000000..e30f77f
--- /dev/null
+++ b/gentoopm/tests/repo.py
@@ -0,0 +1,39 @@
+#!/usr/bin/python
+# vim:fileencoding=utf-8
+# (c) 2011 Michał Górny <mgorny@gentoo.org>
+# Released under the terms of the 2-clause BSD license.
+
+from gentoopm.tests import PMTestCase, PackageNames
+
+class RepositoriesTestCase(PMTestCase):
+ def setUp(self):
+ self._stack = self.pm.stack
+ self._repo = self.pm.repositories[PackageNames.repository]
+
+ def test_repo_iter(self):
+ needle = PackageNames.repository
+ for r in self.pm.repositories:
+ if r.name == needle:
+ break
+ else:
+ self.assertTrue(r.name == needle)
+
+ def test_repo_contains(self):
+ self.assertTrue(PackageNames.repository in self.pm.repositories)
+
+ def test_repo_reverse_mapping(self):
+ r = self._repo
+ self.assertTrue(r.path in self.pm.repositories)
+ self.assertEqual(r, self.pm.repositories[r.path])
+
+ def test_stack_repos_equiv(self):
+ patom = PackageNames.single_complete
+ plist = set([x.id for x in self._stack.filter(patom)])
+ for r in self.pm.repositories:
+ for p in r.filter(patom):
+ self.assertTrue(p.id in plist)
+ plist.remove(p.id)
+ self.assertFalse(plist) # empty
+
+ def tearDown(self):
+ pass
diff --git a/setup.py b/setup.py
index 5eac8d5..6c5a481 100755
--- a/setup.py
+++ b/setup.py
@@ -55,6 +55,7 @@ class TestCommand(Command):
testsuite = unittest.TestSuite()
testsuite.addTests(l.loadTestsFromModule('gentoopm.tests.atom'))
testsuite.addTests(l.loadTestsFromModule('gentoopm.tests.config'))
+ testsuite.addTests(l.loadTestsFromModule('gentoopm.tests.repo'))
maintestsuite.addTests(testsuite)
r = unittest.TextTestRunner()
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [gentoo-commits] proj/gentoopm:master commit in: /, gentoopm/tests/
@ 2011-07-15 9:52 Michał Górny
0 siblings, 0 replies; 7+ messages in thread
From: Michał Górny @ 2011-07-15 9:52 UTC (permalink / raw
To: gentoo-commits
commit: b751801e385a079c1b59eca10741497e4737d742
Author: Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Fri Jul 15 09:48:43 2011 +0000
Commit: Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Fri Jul 15 09:48:43 2011 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/gentoopm.git;a=commit;h=b751801e
Add tests for package sets.
---
gentoopm/tests/__init__.py | 3 +
gentoopm/tests/pkg.py | 113 ++++++++++++++++++++++++++++++++++++++++++++
setup.py | 1 +
3 files changed, 117 insertions(+), 0 deletions(-)
diff --git a/gentoopm/tests/__init__.py b/gentoopm/tests/__init__.py
index eced9c1..7b52fae 100644
--- a/gentoopm/tests/__init__.py
+++ b/gentoopm/tests/__init__.py
@@ -52,5 +52,8 @@ class PackageNames(object):
multiple = 'pms'
""" Incomplete atom matching multiple packages. """
+ empty = 'example/example'
+ """ Atom matching no packages. """
+
repository = 'gentoo'
""" Repository name guaranteed to match. """
diff --git a/gentoopm/tests/pkg.py b/gentoopm/tests/pkg.py
new file mode 100644
index 0000000..47ca02e
--- /dev/null
+++ b/gentoopm/tests/pkg.py
@@ -0,0 +1,113 @@
+#!/usr/bin/python
+# vim:fileencoding=utf-8
+# (c) 2011 Michał Górny <mgorny@gentoo.org>
+# Released under the terms of the 2-clause BSD license.
+
+from gentoopm.exceptions import AmbiguousPackageSetError, EmptyPackageSetError
+from gentoopm.tests import PMTestCase, PackageNames
+
+class IterChecker(object):
+ def __init__(self, iterable):
+ self._it = iter(iterable)
+
+ def __nonzero__(self):
+ try:
+ next(self._it)
+ except StopIteration:
+ return False
+ else:
+ return True
+
+class PackageSetsTestCase(PMTestCase):
+ def setUp(self):
+ self._inst = self.pm.installed
+ self._stack = self.pm.stack
+ self._repo = self.pm.repositories[PackageNames.repository]
+ self._repos = (self._inst, self._stack, self._repo)
+
+ def test_filter_atom(self):
+ at = PackageNames.single_complete
+ for r in self._repos:
+ self.assertTrue(IterChecker(r.filter(at)))
+
+ def test_filter_atom_incomplete(self):
+ at = PackageNames.single
+ for r in self._repos:
+ self.assertTrue(IterChecker(r.filter(at)))
+
+ def test_filter_atom_multiple(self):
+ """ Check whether multi-matching atoms return multiple packages. """
+ at = PackageNames.multiple
+ for r in self._repos:
+ keys = set()
+ for p in r.filter(at):
+ keys.add(p.key)
+ self.assertTrue(len(keys) > 1)
+
+ def test_filter_atom_empty(self):
+ at = PackageNames.empty
+ for r in self._repos:
+ self.assertFalse(IterChecker(r.filter(at)))
+
+ def test_select_atom(self):
+ at = PackageNames.single_complete
+ for r in self._repos:
+ self.assertTrue(r.select(at))
+
+ def test_select_atom_incomplete(self):
+ at = PackageNames.single
+ for r in self._repos:
+ self.assertTrue(r.select(at))
+
+ def test_select_atom_multiple(self):
+ at = PackageNames.multiple
+ for r in self._repos:
+ self.assertRaises(AmbiguousPackageSetError, r.select, at)
+
+ def test_select_atom_empty(self):
+ at = PackageNames.empty
+ for r in self._repos:
+ self.assertRaises(EmptyPackageSetError, r.select, at)
+
+ def test_getitem_atom(self):
+ at = PackageNames.single_complete
+ for r in (self._stack, self._repo):
+ self.assertRaises(AmbiguousPackageSetError, lambda r, at: r[at], r, at)
+ self.assertTrue(self._inst[at])
+
+ def test_getitem_atom_empty(self):
+ at = PackageNames.empty
+ for r in self._repos:
+ self.assertRaises(EmptyPackageSetError, lambda r, at: r[at], r, at)
+
+ def test_nonzero_true(self):
+ at = PackageNames.single_complete
+ for r in self._repos:
+ pset = r.filter(at)
+ self.assertTrue(IterChecker(pset))
+ self.assertTrue(pset)
+
+ def test_nonzero_false(self):
+ at = PackageNames.empty
+ for r in self._repos:
+ pset = r.filter(at)
+ self.assertFalse(IterChecker(pset))
+ self.assertFalse(pset)
+
+ def test_contains_atom(self):
+ at = PackageNames.single_complete
+ for r in self._repos:
+ self.assertTrue(at in r)
+
+ def test_contains_atom_multiple(self):
+ at = PackageNames.multiple
+ for r in self._repos:
+ self.assertTrue(at in r)
+
+ def test_contains_atom_empty(self):
+ at = PackageNames.empty
+ for r in self._repos:
+ self.assertFalse(at in r)
+
+ def tearDown(self):
+ pass
diff --git a/setup.py b/setup.py
index 6c5a481..4318a8e 100755
--- a/setup.py
+++ b/setup.py
@@ -55,6 +55,7 @@ class TestCommand(Command):
testsuite = unittest.TestSuite()
testsuite.addTests(l.loadTestsFromModule('gentoopm.tests.atom'))
testsuite.addTests(l.loadTestsFromModule('gentoopm.tests.config'))
+ testsuite.addTests(l.loadTestsFromModule('gentoopm.tests.pkg'))
testsuite.addTests(l.loadTestsFromModule('gentoopm.tests.repo'))
maintestsuite.addTests(testsuite)
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [gentoo-commits] proj/gentoopm:master commit in: /, gentoopm/tests/
@ 2011-07-15 12:34 Michał Górny
0 siblings, 0 replies; 7+ messages in thread
From: Michał Górny @ 2011-07-15 12:34 UTC (permalink / raw
To: gentoo-commits
commit: d098127ffa9cf44970432b889b99a03120e888ca
Author: Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Fri Jul 15 10:59:30 2011 +0000
Commit: Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Fri Jul 15 10:59:30 2011 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/gentoopm.git;a=commit;h=d098127f
Rename tests.pkg -> tests.psets.
---
gentoopm/tests/{pkg.py => psets.py} | 0
setup.py | 2 +-
2 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/gentoopm/tests/pkg.py b/gentoopm/tests/psets.py
similarity index 100%
rename from gentoopm/tests/pkg.py
rename to gentoopm/tests/psets.py
diff --git a/setup.py b/setup.py
index 4318a8e..2c2551f 100755
--- a/setup.py
+++ b/setup.py
@@ -55,7 +55,7 @@ class TestCommand(Command):
testsuite = unittest.TestSuite()
testsuite.addTests(l.loadTestsFromModule('gentoopm.tests.atom'))
testsuite.addTests(l.loadTestsFromModule('gentoopm.tests.config'))
- testsuite.addTests(l.loadTestsFromModule('gentoopm.tests.pkg'))
+ testsuite.addTests(l.loadTestsFromModule('gentoopm.tests.psets'))
testsuite.addTests(l.loadTestsFromModule('gentoopm.tests.repo'))
maintestsuite.addTests(testsuite)
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [gentoo-commits] proj/gentoopm:master commit in: /, gentoopm/tests/
@ 2011-07-15 12:34 Michał Górny
0 siblings, 0 replies; 7+ messages in thread
From: Michał Górny @ 2011-07-15 12:34 UTC (permalink / raw
To: gentoo-commits
commit: 23f49980232e82722e418e87384f92acfa7109bd
Author: Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Fri Jul 15 12:06:48 2011 +0000
Commit: Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Fri Jul 15 12:06:48 2011 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/gentoopm.git;a=commit;h=23f49980
Add tests for PMPackage.
---
gentoopm/tests/__init__.py | 3 ++
gentoopm/tests/pkg.py | 87 ++++++++++++++++++++++++++++++++++++++++++++
setup.py | 1 +
3 files changed, 91 insertions(+), 0 deletions(-)
diff --git a/gentoopm/tests/__init__.py b/gentoopm/tests/__init__.py
index 02e2ac9..e96860f 100644
--- a/gentoopm/tests/__init__.py
+++ b/gentoopm/tests/__init__.py
@@ -57,3 +57,6 @@ class PackageNames(object):
repository = 'gentoo'
""" Repository name guaranteed to match. """
+
+ envsafe_metadata_key = 'DESCRIPTION'
+ """ Metadata key which should be safe to match with environment.bz2. """
diff --git a/gentoopm/tests/pkg.py b/gentoopm/tests/pkg.py
new file mode 100644
index 0000000..b57ff93
--- /dev/null
+++ b/gentoopm/tests/pkg.py
@@ -0,0 +1,87 @@
+#!/usr/bin/python
+# vim:fileencoding=utf-8
+# (c) 2011 Michał Górny <mgorny@gentoo.org>
+# Released under the terms of the 2-clause BSD license.
+
+import os.path
+
+from gentoopm.tests import PMTestCase, PackageNames
+
+class PackagesTestCase(PMTestCase):
+ def setUp(self):
+ self._inst_pkg = self.pm.installed.select(PackageNames.single_complete)
+ self._stack_pkg = self.pm.stack.select(PackageNames.single_complete)
+ self._pkgs = (self._inst_pkg, self._stack_pkg)
+
+ def test_key_id(self):
+ """ Check whether package IDs are unique and keys are not. """
+ for r in (self.pm.installed, self.pm.stack):
+ ids = set()
+ key = None
+ for p in r.filter(PackageNames.single_complete):
+ self.assertFalse(p.id in ids)
+ ids.add(p.id)
+ if key is not None:
+ self.assertEqual(p.key, key)
+ else:
+ key = p.key
+
+ def test_path_exists(self):
+ """ Check whether the path returned is ok (if any). """
+ for p in self._pkgs:
+ if p.path:
+ self.assertTrue(os.path.exists(p.path))
+
+ def test_atom_reverse(self):
+ """ Check whether the atom matches the same package. """
+ for r in (self.pm.installed, self.pm.stack):
+ # get worst match
+ p = next(iter(sorted(r.filter(PackageNames.single_complete))))
+
+ self.assertEqual(p, r[p.atom])
+ self.assertEqual(p.key, r.select(p.atom.slotted).key)
+ self.assertEqual(p.key, r.select(p.atom.unversioned).key)
+
+ def test_metadata_inherited(self):
+ """ Check the INHERITED metadata var. It was known to cause problems
+ with pkgcore. """
+ for p in self._pkgs:
+ p.metadata['INHERITED']
+
+ def test_metadata_dict_attr(self):
+ """ Check whether metadata is accessible with dict & attrs. """
+ mks = ('EAPI', 'INHERITED', 'DESCRIPTION', 'CATEGORY')
+ for p in self._pkgs:
+ for k in mks:
+ self.assertEqual(p.metadata[k], getattr(p.metadata, k))
+
+ def test_metadata_invalid(self):
+ """ Check whether invalid metadata access raises an exception. """
+ rk = 'FOOBAR'
+ for p in self._pkgs:
+ self.assertFalse(rk in p.metadata)
+ self.assertRaises(KeyError, lambda m, rk: m[rk], p.metadata, rk)
+ self.assertRaises(AttributeError, getattr, p.metadata, rk)
+
+ def test_environ_dict(self):
+ """ Try to access environment.bz2 via dict. """
+ rk = PackageNames.envsafe_metadata_key
+ for p in (self._inst_pkg,):
+ self.assertEqual(p.metadata[rk], p.environ[rk])
+
+ def test_environ_copy(self):
+ """ Try to access environment.bz2 via .copy(). """
+ rk = PackageNames.envsafe_metadata_key
+ for p in (self._inst_pkg,):
+ self.assertEqual(p.metadata[rk], p.environ.copy(rk)[rk])
+
+ def test_environ_fork(self):
+ """ Test forking environment accessor. """
+ rk = PackageNames.envsafe_metadata_key
+ for p in (self._inst_pkg,):
+ forkenv = p.environ.fork()
+ self.assertEqual(p.metadata[rk], forkenv[rk])
+ del forkenv
+
+ def tearDown(self):
+ pass
diff --git a/setup.py b/setup.py
index 2c2551f..cbe52d5 100755
--- a/setup.py
+++ b/setup.py
@@ -55,6 +55,7 @@ class TestCommand(Command):
testsuite = unittest.TestSuite()
testsuite.addTests(l.loadTestsFromModule('gentoopm.tests.atom'))
testsuite.addTests(l.loadTestsFromModule('gentoopm.tests.config'))
+ testsuite.addTests(l.loadTestsFromModule('gentoopm.tests.pkg'))
testsuite.addTests(l.loadTestsFromModule('gentoopm.tests.psets'))
testsuite.addTests(l.loadTestsFromModule('gentoopm.tests.repo'))
maintestsuite.addTests(testsuite)
^ permalink raw reply related [flat|nested] 7+ messages in thread
end of thread, other threads:[~2011-07-15 12:35 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-07-15 9:52 [gentoo-commits] proj/gentoopm:master commit in: /, gentoopm/tests/ Michał Górny
-- strict thread matches above, loose matches on Subject: below --
2011-07-15 12:34 Michał Górny
2011-07-15 12:34 Michał Górny
2011-07-15 9:52 Michał Górny
2011-07-15 9:52 Michał Górny
2011-07-14 22:51 Michał Górny
2011-07-14 22:51 Michał Górny
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox