summaryrefslogtreecommitdiffstats
path: root/make-test
diff options
context:
space:
mode:
authorJason Gerard DeRose <jderose@redhat.com>2009-12-09 09:09:53 -0700
committerJason Gerard DeRose <jderose@redhat.com>2009-12-10 08:29:15 -0700
commitb6e4972e7f6aa08e0392a2cf441b60ab0e7d88b7 (patch)
tree7e5329a51af169ce34a7d275a1bbd63c1e31c026 /make-test
parentd08b8858ddc3bf6265f6ea8acae6661b9fff5112 (diff)
downloadfreeipa-b6e4972e7f6aa08e0392a2cf441b60ab0e7d88b7.tar.gz
freeipa-b6e4972e7f6aa08e0392a2cf441b60ab0e7d88b7.tar.xz
freeipa-b6e4972e7f6aa08e0392a2cf441b60ab0e7d88b7.zip
Take 2: Extensible return values and validation; steps toward a single output_for_cli(); enable more webUI stuff
Diffstat (limited to 'make-test')
-rwxr-xr-xmake-test96
1 files changed, 63 insertions, 33 deletions
diff --git a/make-test b/make-test
index f7bf432bd..2d9449155 100755
--- a/make-test
+++ b/make-test
@@ -1,33 +1,63 @@
-#!/bin/bash
-
-# Script to run nosetests under multiple versions of Python
-
-export IPA_UNIT_TEST_MODE="cli_test"
-versions="python2.4 python2.5 python2.6"
-
-for name in $versions
-do
- executable="/usr/bin/$name"
- if [[ -f $executable ]]; then
- echo "[ $name: Starting tests... ]"
- ((runs += 1))
- if $executable /usr/bin/nosetests --debug-log=/dev/null -v --with-doctest --exclude="plugins"
- then
- echo "[ $name: Tests OK ]"
- else
- echo "[ $name: Tests FAILED ]"
- ((failures += 1))
- fi
- else
- echo "[ $name: Not found ]"
- fi
- echo ""
-done
-
-if [ $failures ]; then
- echo "[ Ran under $runs version(s); FAILED under $failures version(s) ]"
- echo "FAIL!"
- exit $failures
-else
- echo "[ Ran under $runs version(s); all OK ]"
-fi
+#!/usr/bin/env python
+
+"""
+Run IPA unit tests under multiple versions of Python (if present).
+"""
+
+import sys
+import optparse
+import os
+from os import path
+from subprocess import call
+
+versions = ('2.4', '2.5', '2.6', '2.7')
+python = '/usr/bin/python'
+nose = '/usr/bin/nosetests'
+ran = []
+fail = []
+
+parser = optparse.OptionParser(
+ usage='usage: %prog [MODULE...]',
+)
+parser.add_option('--stop',
+ action='store_true',
+ default=False,
+ help='Stop running tests after the first error or failure',
+)
+(options, args) = parser.parse_args()
+
+cmd = [nose] + args + [
+ '-v',
+ '--with-doctest',
+ '--exclude=plugins',
+]
+if options.stop:
+ cmd.append('--stop')
+
+
+# This must be set so ipalib.api gets initialized property for tests:
+os.environ['IPA_UNIT_TEST_MODE'] = 'cli_test'
+
+if not path.isfile(nose):
+ print 'ERROR: need %r' % nose
+ sys.exit(100)
+for v in versions:
+ pver = python + v
+ if not path.isfile(pver):
+ continue
+ if 0 != call([pver] + cmd):
+ fail.append(pver)
+ ran.append(pver)
+
+
+print '=' * 70
+for pver in ran:
+ if pver in fail:
+ print 'FAILED under %r' % pver
+ else:
+ print 'passed under %r' % pver
+print ''
+if fail:
+ print '** FAIL **'
+else:
+ print '** pass **'