-#!/usr/bin/env python
-import glob
+# -*- Mode: Python -*-
+
import os
+import glob
import sys
-import unittest
-
-import common
-program = None
-if len(sys.argv) == 3:
- buildDir = sys.argv[1]
- srcDir = sys.argv[2]
-else:
- if len(sys.argv) == 2:
- program = sys.argv[1]
- if program.endswith('.py'):
- program = program[:-3]
- buildDir = '..'
- srcDir = '.'
-
-common.importModules(buildDir=buildDir,
- srcDir=srcDir)
+import unittest
-SKIP_FILES = ['common', 'runtests']
-dir = os.path.split(os.path.abspath(__file__))[0]
-os.chdir(dir)
+# force untranslated messages, as we check for them in some tests
+os.environ['LC_MESSAGES'] = 'C'
-def gettestnames():
- files = glob.glob('*.py')
- names = map(lambda x: x[:-3], files)
- map(names.remove, SKIP_FILES)
- return names
+# Load tests.
+if 'TEST_NAMES' in os.environ:
+ names = os.environ['TEST_NAMES'].split()
+elif 'TEST_FILES' in os.environ:
+ names = []
+ for filename in os.environ['TEST_FILES'].split():
+ names.append(filename[:-3])
+else:
+ names = []
+ for filename in glob.iglob("test_*.py"):
+ names.append(filename[:-3])
-suite = unittest.TestSuite()
loader = unittest.TestLoader()
+suite = loader.loadTestsFromNames(names)
+
-for name in gettestnames():
- if program and program not in name:
- continue
- suite.addTest(loader.loadTestsFromName(name))
+# Run tests.
+runner = unittest.TextTestRunner(verbosity=2)
+result = runner.run(suite)
+if not result.wasSuccessful():
+ sys.exit(1) # exit code so "make check" reports error
-testRunner = unittest.TextTestRunner()
-testRunner.run(suite)