88     Main function of the script. 
   90     from optparse 
import OptionGroup, OptionParser
 
   92     parser = OptionParser()
 
   97         choices=[n.replace(
"_report", 
"") 
for n 
in globals() 
if n.endswith(
"_report")],
 
   98         help=
"choose a report method [default %default]",
 
  103         help=
"directory to be used as common temporary directory",
 
  109         help=
"directory to change to before starting the test",
 
  113         "--skip-return-code",
 
  115         help=
"return code to use to flag a test as skipped " "[default %default]",
 
  118     verbosity_opts = OptionGroup(
 
  119         parser, 
"Verbosity Level", 
"set the verbosity level of messages" 
  121     verbosity_opts.add_option(
 
  123         action=
"store_const",
 
  125         const=logging.CRITICAL,
 
  126         help=
"only critical error messages",
 
  128     verbosity_opts.add_option(
 
  130         action=
"store_const",
 
  133         help=
"error messages",
 
  135     verbosity_opts.add_option(
 
  137         action=
"store_const",
 
  139         const=logging.WARNING,
 
  140         help=
"warning and error messages",
 
  142     verbosity_opts.add_option(
 
  144         action=
"store_const",
 
  147         help=
"progress information messages",
 
  149     verbosity_opts.add_option(
 
  151         action=
"store_const",
 
  154         help=
"debugging messages",
 
  156     parser.add_option_group(verbosity_opts)
 
  159         log_level=logging.WARNING, report=
"basic", workdir=os.curdir, skip_return_code=0
 
  162     opts, args = parser.parse_args()
 
  164         parser.error(
"only one test allowed")
 
  167     logging.basicConfig(level=opts.log_level)
 
  169     if opts.common_tmpdir:
 
  170         if not os.path.isdir(opts.common_tmpdir):
 
  171             os.makedirs(opts.common_tmpdir)
 
  172         GT.BaseTest._common_tmpdir = opts.common_tmpdir
 
  174     os.chdir(opts.workdir)
 
  177     if "slc6" in (os.environ.get(
"BINARY_TAG", 
"") 
or os.environ.get(
"CMTCONFIG", 
"")):
 
  178         os.environ[
"TERM"] = 
"dumb" 
  181     sanitizer = os.environ.get(
"PRELOAD_SANITIZER_LIB", 
"")
 
  182     ld_preload = os.environ.get(
"LD_PRELOAD", 
"")
 
  183     if sanitizer 
and sanitizer 
not in ld_preload:
 
  185             os.environ[
"LD_PRELOAD"] = sanitizer + 
" " + ld_preload
 
  187             os.environ[
"LD_PRELOAD"] = sanitizer
 
  190     logging.debug(
"processing %s", filename)
 
  191     if filename.endswith(
"_test.py"):
 
  192         indexFilePart = filename.rfind(
"/")
 
  193         fileToImport = filename[indexFilePart + 1 :]
 
  194         sys.path.append(GT.RationalizePath(filename)[: -len(fileToImport) - 1])
 
  195         imp = __import__(fileToImport[:-3])
 
  196         fileToExec = imp.Test()
 
  197         results = fileToExec.run()
 
  198     elif filename.endswith(
".qmt"):
 
  201         test_module = os.environ.get(
"GAUDI_QMTEST_MODULE", 
"GaudiTesting.QMTTest")
 
  202         test_class = os.environ.get(
"GAUDI_QMTEST_CLASS", 
"QMTTest")
 
  203         test_class = getattr(importlib.import_module(test_module), test_class)
 
  204         fileToTest = test_class(filename)
 
  205         results = fileToTest.run()
 
  207     report = globals()[opts.report + 
"_report"]
 
  210     if results.get(
"Status") == 
"failed":
 
  211         logging.debug(
"test failed: unexpected %s", 
", ".join(results[
"Causes"]))
 
  212         return int(results.get(
"Exit Code", 
"1"))
 
  213     elif results.get(
"Status") == 
"skipped":
 
  214         return opts.skip_return_code