[pacman-dev] [PATCH] pactest: exit with a non-zero error code on unexpected failure

Dan McGee dan at archlinux.org
Thu Jul 24 23:20:06 EDT 2008


This will allow the return code of pactest to be useful, for such things as
use in a git-bisect test script.

Signed-off-by: Dan McGee <dan at archlinux.org>
---
 pactest/pactest.py |    9 +++++++--
 pactest/pmenv.py   |   34 +++++++++++++++++-----------------
 pactest/pmtest.py  |    6 +++---
 pactest/util.py    |    5 +----
 4 files changed, 28 insertions(+), 26 deletions(-)

diff --git a/pactest/pactest.py b/pactest/pactest.py
index 7cda255..f95ef3c 100755
--- a/pactest/pactest.py
+++ b/pactest/pactest.py
@@ -93,13 +93,18 @@ if __name__ == "__main__":
     env.pacman["valgrind"] = opts.valgrind
     env.pacman["manual-confirm"] = opts.manualconfirm
 
-    if len(opts.testcases) == 0:
+    if opts.testcases is None or len(opts.testcases) == 0:
         print "no tests defined, nothing to do"
+        sys.exit(2)
     else:
-        for i in opts.testcases: env.addtest(i)
+        for i in opts.testcases:
+            env.addtest(i)
 
         # run tests and print overall results
         env.run()
         env.results()
 
+        if env.failed > 0:
+            sys.exit(1)
+
 # vim: set ts=4 sw=4 et:
diff --git a/pactest/pmenv.py b/pactest/pmenv.py
index b86abe9..e9d0b4c 100755
--- a/pactest/pmenv.py
+++ b/pactest/pmenv.py
@@ -27,6 +27,12 @@ class pmenv:
     """Environment object
     """
 
+    testcases = []
+    passed = 0
+    failed = 0
+    expectedfail = 0
+    unexpectedpass = 0
+
     def __init__(self, root = "root"):
         self.root = os.path.abspath(root)
         self.pacman = {
@@ -36,7 +42,6 @@ class pmenv:
             "valgrind": 0,
             "nolog": 0
         }
-        self.testcases = []
 
     def __str__(self):
         return "root = %s\n" \
@@ -47,8 +52,7 @@ class pmenv:
         """
         """
         if not os.path.isfile(testcase):
-            err("file %s not found" % testcase)
-            return
+            raise IOError("test file %s not found" % testcase)
         test = pmtest.pmtest(testcase, self.root)
         self.testcases.append(test)
 
@@ -84,27 +88,23 @@ class pmenv:
     def results(self):
         """
         """
-        passed = 0
         tpassed = []
-        failed = 0
         tfailed = []
-        expectedfail = 0
         texpectedfail = []
-        unexpectedpass = 0
         tunexpectedpass = []
         for test in self.testcases:
             fail = test.result["fail"]
             if fail == 0 and not test.expectfailure:
-                passed += 1
+                self.passed += 1
                 tpassed.append(test)
             elif fail != 0 and test.expectfailure:
-                expectedfail += 1
+                self.expectedfail += 1
                 texpectedfail.append(test)
             elif fail == 0: # and not test.expectfail
-                unexpectedpass += 1
+                self.unexpectedpass += 1
                 tunexpectedpass.append(test)
             else:
-                failed += 1
+                self.failed += 1
                 tfailed.append(test)
 
         def _printtest(t):
@@ -142,13 +142,13 @@ class pmenv:
         total = len(self.testcases)
         print "Total            = %3u" % total
         if total:
-            print "Pass             = %3u (%6.2f%%)" % (passed, float(passed) * 100 / total)
-            print "Expected Fail    = %3u (%6.2f%%)" % (expectedfail, float(expectedfail) * 100 / total)
-            print "Unexpected Pass  = %3u (%6.2f%%)" % (unexpectedpass, float(unexpectedpass) * 100 / total)
-            print "Fail             = %3u (%6.2f%%)" % (failed, float(failed) * 100 / total)
+            print "Pass             = %3u (%6.2f%%)" % (self.passed, float(self.passed) * 100 / total)
+            print "Expected Fail    = %3u (%6.2f%%)" % (self.expectedfail, float(self.expectedfail) * 100 / total)
+            print "Unexpected Pass  = %3u (%6.2f%%)" % (self.unexpectedpass, float(self.unexpectedpass) * 100 / total)
+            print "Fail             = %3u (%6.2f%%)" % (self.failed, float(self.failed) * 100 / total)
         print ""
 
 if __name__ == "__main__":
-    env = pmenv("/tmp")
-    print env
+    pass
+
 # vim: set ts=4 sw=4 et:
diff --git a/pactest/pmtest.py b/pactest/pmtest.py
index f31563b..39f4dea 100755
--- a/pactest/pmtest.py
+++ b/pactest/pmtest.py
@@ -95,7 +95,7 @@ class pmtest:
         if os.path.isfile(self.name):
             execfile(self.name)
         else:
-            err("file %s does not exist!" % self.name)
+            raise IOerror("file %s does not exist!" % self.name)
 
     def generate(self):
         """
@@ -268,6 +268,6 @@ class pmtest:
 
 
 if __name__ == "__main__":
-    test = pmtest("test1", "./root")
-    print test
+    pass
+
 # vim: set ts=4 sw=4 et:
diff --git a/pactest/util.py b/pactest/util.py
index c6d5a59..db9560f 100755
--- a/pactest/util.py
+++ b/pactest/util.py
@@ -43,10 +43,6 @@ LOGFILE     = "var/log/pactest.log"
 
 verbose = 0
 
-def err(msg):
-    print "error: " + msg
-    sys.exit(1)
-
 def vprint(msg):
     if verbose:
         print msg
@@ -273,4 +269,5 @@ def mkdir(dir):
 
 if __name__ == "__main__":
     pass
+
 # vim: set ts=4 sw=4 et:
-- 
1.5.6.4





More information about the pacman-dev mailing list