Add pretty basic vercmp unit testing...need more cases
authorAlec Warner <antarus@gentoo.org>
Fri, 8 Dec 2006 00:12:41 +0000 (00:12 -0000)
committerAlec Warner <antarus@gentoo.org>
Fri, 8 Dec 2006 00:12:41 +0000 (00:12 -0000)
svn path=/main/trunk/; revision=5213

tests/__init__.py [new file with mode: 0644]
tests/runTests [new file with mode: 0755]
tests/test_vercmp.py [new file with mode: 0644]

diff --git a/tests/__init__.py b/tests/__init__.py
new file mode 100644 (file)
index 0000000..d0d3180
--- /dev/null
@@ -0,0 +1,21 @@
+# tests/__init__.py -- Portage Unit Test functionality
+# Copyright 2006 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+import unittest
+
+def main():
+       
+       tests = ["test_vercmp"]
+
+       suite = unittest.TestSuite()
+
+       for mod in tests:
+               try:
+                       test_mod = __import__(mod)
+                       suite.addTest(test_mod.suite())
+               except ImportError:
+                       pass
+
+       unittest.TextTestRunner(verbosity=2).run(suite) 
diff --git a/tests/runTests b/tests/runTests
new file mode 100755 (executable)
index 0000000..74b853f
--- /dev/null
@@ -0,0 +1,20 @@
+#!/usr/bin/python
+# runTests.py -- Portage Unit Test Functionality
+# Copyright 2006 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+
+import sys
+import os.path as osp
+
+# Grab SVN portage files instead of normal ones.
+sys.path.insert(0,'../pym')
+
+# Insert our parent dir so we can do shiny import "tests"
+# This line courtesy of Marienz and Pkgcore ;)
+sys.path.insert(0, osp.dirname(osp.dirname(osp.abspath(__file__))))
+
+import tests
+
+tests.main()
diff --git a/tests/test_vercmp.py b/tests/test_vercmp.py
new file mode 100644 (file)
index 0000000..ffab892
--- /dev/null
@@ -0,0 +1,47 @@
+# test_vercmp.py -- Portage Unit Testing Functionality
+# Copyright 2006 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+from unittest import TestCase
+from unittest import TestLoader
+from portage_versions import vercmp
+
+class VerCmpTestCase(TestCase):
+       """ A simple testCase for portage_versions.vercmp()
+       """
+
+       
+       def testVerCmpGreater(self):
+               
+               tests = [ ( "6.0", "5.0"), ("5.0","5")]
+               for test in tests:
+                       self.failIf( vercmp( test[0], test[1] ) <= 0, msg="%s < %s? Wrong!" % (test[0],test[1]) )
+
+       def testVerCmpLess(self):
+               """
+               pre < alpha < beta < rc < p -> test each of these, they are inductive (or should be..)
+               """
+               tests = [ ( "4.0", "5.0"), ("5", "5.0"), ("1.0_pre2","1.0_p2"),
+                       ("1.0_alpha2", "1.0_p2"),("1.0_alpha1", "1.0_beta1"),("1.0_beta3","1.0_rc3")]
+               for test in tests:
+                       self.failIf( vercmp( test[0], test[1]) >= 0, msg="%s > %s? Wrong!" % (test[0],test[1]))
+       
+       
+       def testVerCmpEqual(self):
+               
+               tests = [ ("4.0", "4.0") ]
+               for test in tests:
+                       self.failIf( vercmp( test[0], test[1]) != 0, msg="%s != %s? Wrong!" % (test[0],test[1]))
+                       
+       def testVerNotEqual(self):
+               
+               tests = [ ("1","2"),("1.0_alpha","1.0_pre"),("1.0_beta","1.0_alpha"),
+                       ("0", "0.0")]
+               for test in tests:
+                       self.failIf( vercmp( test[0], test[1]) == 0, msg="%s == %s? Wrong!" % (test[0],test[1]))
+
+def suite():
+       suite = TestLoader().loadTestsFromTestCase(VerCmpTestCase)
+       return suite
+