summaryrefslogtreecommitdiff
path: root/run_tests.py
diff options
context:
space:
mode:
Diffstat (limited to 'run_tests.py')
-rwxr-xr-xrun_tests.py276
1 files changed, 139 insertions, 137 deletions
diff --git a/run_tests.py b/run_tests.py
index 3b9a71a..bea6625 100755
--- a/run_tests.py
+++ b/run_tests.py
@@ -2,7 +2,7 @@
# coding: utf-8
# /*##########################################################################
#
-# Copyright (c) 2015-2017 European Synchrotron Radiation Facility
+# Copyright (c) 2015-2018 European Synchrotron Radiation Facility
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
@@ -342,155 +342,157 @@ def get_test_options(project_module):
return test_options
-PROJECT_DIR = os.path.dirname(os.path.abspath(__file__))
-PROJECT_NAME = get_project_name(PROJECT_DIR)
-logger.info("Project name: %s", PROJECT_NAME)
+if __name__ == "__main__": # Needed for multiprocessing support on Windows
+ PROJECT_DIR = os.path.dirname(os.path.abspath(__file__))
+ PROJECT_NAME = get_project_name(PROJECT_DIR)
+ logger.info("Project name: %s", PROJECT_NAME)
-project_module = import_project_module(PROJECT_NAME, PROJECT_DIR)
-PROJECT_VERSION = getattr(project_module, 'version', '')
-PROJECT_PATH = project_module.__path__[0]
+ project_module = import_project_module(PROJECT_NAME, PROJECT_DIR)
+ PROJECT_VERSION = getattr(project_module, 'version', '')
+ PROJECT_PATH = project_module.__path__[0]
-test_options = get_test_options(project_module)
-"""Contains extra configuration for the tests."""
+ test_options = get_test_options(project_module)
+ """Contains extra configuration for the tests."""
-epilog = """Environment variables:
-WITH_QT_TEST=False to disable graphical tests
-SILX_OPENCL=False to disable OpenCL tests
-SILX_TEST_LOW_MEM=True to disable tests taking large amount of memory
-GPU=False to disable the use of a GPU with OpenCL test
-WITH_GL_TEST=False to disable tests using OpenGL
-"""
-parser = ArgumentParser(description='Run the tests.',
- epilog=epilog)
-
-parser.add_argument("--installed",
- action="store_true", dest="installed", default=False,
- help=("Test the installed version instead of" +
- "building from the source"))
-parser.add_argument("-c", "--coverage", dest="coverage",
- action="store_true", default=False,
- help=("Report code coverage" +
- "(requires 'coverage' and 'lxml' module)"))
-parser.add_argument("-m", "--memprofile", dest="memprofile",
- action="store_true", default=False,
- help="Report memory profiling")
-parser.add_argument("-v", "--verbose", default=0,
- action="count", dest="verbose",
- help="Increase verbosity. Option -v prints additional " +
- "INFO messages. Use -vv for full verbosity, " +
- "including debug messages and test help strings.")
-parser.add_argument("--qt-binding", dest="qt_binding", default=None,
- help="Force using a Qt binding, from 'PyQt4', 'PyQt5', or 'PySide'")
-if test_options is not None:
- test_options.add_parser_argument(parser)
-
-default_test_name = "%s.test.suite" % PROJECT_NAME
-parser.add_argument("test_name", nargs='*',
- default=(default_test_name,),
- help="Test names to run (Default: %s)" % default_test_name)
-options = parser.parse_args()
-sys.argv = [sys.argv[0]]
-
-
-test_verbosity = 1
-use_buffer = True
-if options.verbose == 1:
- logging.root.setLevel(logging.INFO)
- logger.info("Set log level: INFO")
- test_verbosity = 2
- use_buffer = False
-elif options.verbose > 1:
- logging.root.setLevel(logging.DEBUG)
- logger.info("Set log level: DEBUG")
- test_verbosity = 2
- use_buffer = False
-
-if options.coverage:
- logger.info("Running test-coverage")
- import coverage
- omits = ["*test*", "*third_party*", "*/setup.py",
- # temporary test modules (silx.math.fit.test.test_fitmanager)
- "*customfun.py", ]
- try:
- cov = coverage.Coverage(omit=omits)
- except AttributeError:
- cov = coverage.coverage(omit=omits)
- cov.start()
-
-if options.qt_binding:
- binding = options.qt_binding.lower()
- if binding == "pyqt4":
- logger.info("Force using PyQt4")
- if sys.version < "3.0.0":
- try:
- import sip
- sip.setapi("QString", 2)
- sip.setapi("QVariant", 2)
- except Exception:
- logger.warning("Cannot set sip API")
- import PyQt4.QtCore # noqa
- elif binding == "pyqt5":
- logger.info("Force using PyQt5")
- import PyQt5.QtCore # noqa
- elif binding == "pyside":
- logger.info("Force using PySide")
- import PySide.QtCore # noqa
- elif binding == "pyside2":
- logger.info("Force using PySide2")
- import PySide2.QtCore # noqa
+
+ epilog = """Environment variables:
+ WITH_QT_TEST=False to disable graphical tests
+ SILX_OPENCL=False to disable OpenCL tests
+ SILX_TEST_LOW_MEM=True to disable tests taking large amount of memory
+ GPU=False to disable the use of a GPU with OpenCL test
+ WITH_GL_TEST=False to disable tests using OpenGL
+ """
+ parser = ArgumentParser(description='Run the tests.',
+ epilog=epilog)
+
+ parser.add_argument("--installed",
+ action="store_true", dest="installed", default=False,
+ help=("Test the installed version instead of" +
+ "building from the source"))
+ parser.add_argument("-c", "--coverage", dest="coverage",
+ action="store_true", default=False,
+ help=("Report code coverage" +
+ "(requires 'coverage' and 'lxml' module)"))
+ parser.add_argument("-m", "--memprofile", dest="memprofile",
+ action="store_true", default=False,
+ help="Report memory profiling")
+ parser.add_argument("-v", "--verbose", default=0,
+ action="count", dest="verbose",
+ help="Increase verbosity. Option -v prints additional " +
+ "INFO messages. Use -vv for full verbosity, " +
+ "including debug messages and test help strings.")
+ parser.add_argument("--qt-binding", dest="qt_binding", default=None,
+ help="Force using a Qt binding, from 'PyQt4', 'PyQt5', or 'PySide'")
+ if test_options is not None:
+ test_options.add_parser_argument(parser)
+
+ default_test_name = "%s.test.suite" % PROJECT_NAME
+ parser.add_argument("test_name", nargs='*',
+ default=(default_test_name,),
+ help="Test names to run (Default: %s)" % default_test_name)
+ options = parser.parse_args()
+ sys.argv = [sys.argv[0]]
+
+
+ test_verbosity = 1
+ use_buffer = True
+ if options.verbose == 1:
+ logging.root.setLevel(logging.INFO)
+ logger.info("Set log level: INFO")
+ test_verbosity = 2
+ use_buffer = False
+ elif options.verbose > 1:
+ logging.root.setLevel(logging.DEBUG)
+ logger.info("Set log level: DEBUG")
+ test_verbosity = 2
+ use_buffer = False
+
+ if options.coverage:
+ logger.info("Running test-coverage")
+ import coverage
+ omits = ["*test*", "*third_party*", "*/setup.py",
+ # temporary test modules (silx.math.fit.test.test_fitmanager)
+ "*customfun.py", ]
+ try:
+ cov = coverage.Coverage(omit=omits)
+ except AttributeError:
+ cov = coverage.coverage(omit=omits)
+ cov.start()
+
+ if options.qt_binding:
+ binding = options.qt_binding.lower()
+ if binding == "pyqt4":
+ logger.info("Force using PyQt4")
+ if sys.version < "3.0.0":
+ try:
+ import sip
+ sip.setapi("QString", 2)
+ sip.setapi("QVariant", 2)
+ except Exception:
+ logger.warning("Cannot set sip API")
+ import PyQt4.QtCore # noqa
+ elif binding == "pyqt5":
+ logger.info("Force using PyQt5")
+ import PyQt5.QtCore # noqa
+ elif binding == "pyside":
+ logger.info("Force using PySide")
+ import PySide.QtCore # noqa
+ elif binding == "pyside2":
+ logger.info("Force using PySide2")
+ import PySide2.QtCore # noqa
+ else:
+ raise ValueError("Qt binding '%s' is unknown" % options.qt_binding)
+
+ # Run the tests
+ runnerArgs = {}
+ runnerArgs["verbosity"] = test_verbosity
+ runnerArgs["buffer"] = use_buffer
+ if options.memprofile:
+ runnerArgs["resultclass"] = ProfileTextTestResult
else:
- raise ValueError("Qt binding '%s' is unknown" % options.qt_binding)
-
-# Run the tests
-runnerArgs = {}
-runnerArgs["verbosity"] = test_verbosity
-runnerArgs["buffer"] = use_buffer
-if options.memprofile:
- runnerArgs["resultclass"] = ProfileTextTestResult
-else:
- runnerArgs["resultclass"] = TextTestResultWithSkipList
-runner = unittest.TextTestRunner(**runnerArgs)
+ runnerArgs["resultclass"] = TextTestResultWithSkipList
+ runner = unittest.TextTestRunner(**runnerArgs)
-logger.warning("Test %s %s from %s",
- PROJECT_NAME, PROJECT_VERSION, PROJECT_PATH)
+ logger.warning("Test %s %s from %s",
+ PROJECT_NAME, PROJECT_VERSION, PROJECT_PATH)
-test_module_name = PROJECT_NAME + '.test'
-logger.info('Import %s', test_module_name)
-test_module = importer(test_module_name)
-test_suite = unittest.TestSuite()
+ test_module_name = PROJECT_NAME + '.test'
+ logger.info('Import %s', test_module_name)
+ test_module = importer(test_module_name)
+ test_suite = unittest.TestSuite()
-if test_options is not None:
- # Configure the test options according to the command lines and the the environment
- test_options.configure(options)
-else:
- logger.warning("No test options available.")
+ if test_options is not None:
+ # Configure the test options according to the command lines and the the environment
+ test_options.configure(options)
+ else:
+ logger.warning("No test options available.")
-if not options.test_name:
- # Do not use test loader to avoid cryptic exception
- # when an error occur during import
- project_test_suite = getattr(test_module, 'suite')
- test_suite.addTest(project_test_suite())
-else:
- test_suite.addTest(
- unittest.defaultTestLoader.loadTestsFromNames(options.test_name))
+ if not options.test_name:
+ # Do not use test loader to avoid cryptic exception
+ # when an error occur during import
+ project_test_suite = getattr(test_module, 'suite')
+ test_suite.addTest(project_test_suite())
+ else:
+ test_suite.addTest(
+ unittest.defaultTestLoader.loadTestsFromNames(options.test_name))
-# Display the result when using CTRL-C
-unittest.installHandler()
+ # Display the result when using CTRL-C
+ unittest.installHandler()
-result = runner.run(test_suite)
+ result = runner.run(test_suite)
-if result.wasSuccessful():
- exit_status = 0
-else:
- exit_status = 1
+ if result.wasSuccessful():
+ exit_status = 0
+ else:
+ exit_status = 1
-if options.coverage:
- cov.stop()
- cov.save()
- with open("coverage.rst", "w") as fn:
- fn.write(report_rst(cov, PROJECT_NAME, PROJECT_VERSION, PROJECT_PATH))
+ if options.coverage:
+ cov.stop()
+ cov.save()
+ with open("coverage.rst", "w") as fn:
+ fn.write(report_rst(cov, PROJECT_NAME, PROJECT_VERSION, PROJECT_PATH))
-sys.exit(exit_status)
+ sys.exit(exit_status)