aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'gentoolkit/pym/gentoolkit/test/test_helpers.py')
-rw-r--r--gentoolkit/pym/gentoolkit/test/test_helpers.py152
1 files changed, 152 insertions, 0 deletions
diff --git a/gentoolkit/pym/gentoolkit/test/test_helpers.py b/gentoolkit/pym/gentoolkit/test/test_helpers.py
new file mode 100644
index 0000000..2291efd
--- /dev/null
+++ b/gentoolkit/pym/gentoolkit/test/test_helpers.py
@@ -0,0 +1,152 @@
+import os
+import unittest
+import warnings
+from tempfile import NamedTemporaryFile
+from test import test_support
+
+from gentoolkit import helpers
+
+
+class TestChangeLog(unittest.TestCase):
+
+ def setUp(self):
+ pass
+
+ def tearDown(self):
+ pass
+
+ def test_split_changelog(self):
+ changelog = """
+*portage-2.1.6.2 (20 Dec 2008)
+
+ 20 Dec 2008; Zac Medico <zmedico@gentoo.org> +portage-2.1.6.2.ebuild:
+ 2.1.6.2 bump. This fixes bug #251591 (repoman inherit.autotools false
+ positives) and bug #251616 (performance issue in build log search regex
+ makes emerge appear to hang). Bug #216231 tracks all bugs fixed since
+ 2.1.4.x.
+
+ 20 Dec 2008; Zac Medico <zmedico@gentoo.org> -portage-2.1.6.ebuild,
+ -portage-2.1.6.1.ebuild, -portage-2.2_rc17.ebuild:
+ Remove old versions.
+
+
+*portage-2.1.6.1 (12 Dec 2008)
+
+ 12 Dec 2008; Zac Medico <zmedico@gentoo.org> +portage-2.1.6.1.ebuild:
+ 2.1.6.1 bump. This fixes bug #250148 (emerge hangs with selinux if ebuild
+ spawns a daemon), bug #250166 (trigger download when generating manifest
+ if file size differs from existing entry), and bug #250212 (new repoman
+ upstream.workaround category for emake -j1 warnings). Bug #216231 tracks
+ all bugs fixed since 2.1.4.x.
+
+
+*portage-2.1.6 (07 Dec 2008)
+
+ 07 Dec 2008; Zac Medico <zmedico@gentoo.org> +portage-2.1.6.ebuild:
+ 2.1.6 final release. This fixes bug #249586. Bug #216231 tracks all bugs
+ fixed since 2.1.4.x.
+
+ 07 Dec 2008; Zac Medico <zmedico@gentoo.org> -portage-2.1.6_rc1.ebuild,
+ -portage-2.1.6_rc2.ebuild, -portage-2.1.6_rc3.ebuild,
+ -portage-2.2_rc16.ebuild:
+ Remove old versions.
+ """
+
+class TestFileOwner(unittest.TestCase):
+
+ def setUp(self):
+ pass
+
+ def tearDown(self):
+ pass
+
+ def test_extend_realpaths(self):
+ extend_realpaths = helpers.FileOwner.extend_realpaths
+
+ # Test that symlinks's realpaths are extended
+ f1 = NamedTemporaryFile(prefix='equeryunittest')
+ f2 = NamedTemporaryFile(prefix='equeryunittest')
+ f3 = NamedTemporaryFile(prefix='equeryunittest')
+ with warnings.catch_warnings():
+ warnings.simplefilter("ignore")
+ sym1 = os.tmpnam()
+ os.symlink(f1.name, sym1)
+ sym2 = os.tmpnam()
+ os.symlink(f3.name, sym2)
+ # We've created 3 files and 2 symlinks for testing. We're going to pass
+ # in only the first two files and both symlinks. sym1 points to f1.
+ # Since f1 is already in the list, sym1's realpath should not be added.
+ # sym2 points to f3, but f3's not in our list, so sym2's realpath
+ # should be added to the list.
+ p = [f1.name, f2.name, sym1, sym2]
+ p_xr = extend_realpaths(p)
+
+ self.failUnlessEqual(p_xr[0], f1.name)
+ self.failUnlessEqual(p_xr[1], f2.name)
+ self.failUnlessEqual(p_xr[2], sym1)
+ self.failUnlessEqual(p_xr[3], sym2)
+ self.failUnlessEqual(p_xr[4], f3.name)
+
+ # Clean up
+ os.unlink(sym1)
+ os.unlink(sym2)
+
+ # Make sure we raise an exception if we don't get acceptable input
+ self.failUnlessRaises(AttributeError, extend_realpaths, 'str')
+ self.failUnlessRaises(AttributeError, extend_realpaths, set())
+
+
+class TestGentoolkitHelpers(unittest.TestCase):
+
+ def test_compare_package_strings(self):
+ # Test ordering of package strings, Portage has test for vercmp,
+ # so just do the rest
+ version_tests = [
+ # different categories
+ ('sys-apps/portage-2.1.6.8', 'sys-auth/pambase-20080318'),
+ # different package names
+ ('sys-apps/pkgcore-0.4.7.15-r1', 'sys-apps/portage-2.1.6.8'),
+ # different package versions
+ ('sys-apps/portage-2.1.6.8', 'sys-apps/portage-2.2_rc25')
+ ]
+ # Check less than
+ for vt in version_tests:
+ self.failUnless(
+ helpers.compare_package_strings(vt[0], vt[1]) == -1
+ )
+ # Check greater than
+ for vt in version_tests:
+ self.failUnless(
+ helpers.compare_package_strings(vt[1], vt[0]) == 1
+ )
+ # Check equal
+ vt = ('sys-auth/pambase-20080318', 'sys-auth/pambase-20080318')
+ self.failUnless(
+ helpers.compare_package_strings(vt[0], vt[1]) == 0
+ )
+
+ def test_uses_globbing(self):
+ globbing_tests = [
+ ('sys-apps/portage-2.1.6.13', False),
+ ('>=sys-apps/portage-2.1.6.13', False),
+ ('<=sys-apps/portage-2.1.6.13', False),
+ ('~sys-apps/portage-2.1.6.13', False),
+ ('=sys-apps/portage-2*', False),
+ ('sys-*/*-2.1.6.13', True),
+ ('sys-app?/portage-2.1.6.13', True),
+ ('sys-apps/[bp]ortage-2.1.6.13', True),
+ ('sys-apps/[!p]ortage*', True)
+ ]
+
+ for gt in globbing_tests:
+ self.failUnless(
+ helpers.uses_globbing(gt[0]) == gt[1]
+ )
+
+
+def test_main():
+ test_support.run_unittest(TestGentoolkitHelpers2)
+
+
+if __name__ == '__main__':
+ test_main()