72 Main function of the script. 74 from optparse
import OptionParser, OptionGroup
75 parser = OptionParser()
81 n.replace(
'_report',
'')
for n
in globals()
82 if n.endswith(
'_report')
84 help=
'choose a report method [default %default]')
88 help=
'directory to be used as common temporary directory')
93 help=
'directory to change to before starting the test')
98 help=
'return code to use to flag a test as skipped ' 101 verbosity_opts = OptionGroup(parser,
'Verbosity Level',
102 'set the verbosity level of messages')
103 verbosity_opts.add_option(
105 action=
'store_const',
107 const=logging.CRITICAL,
108 help=
'only critical error messages')
109 verbosity_opts.add_option(
111 action=
'store_const',
114 help=
'error messages')
115 verbosity_opts.add_option(
117 action=
'store_const',
119 const=logging.WARNING,
120 help=
'warning and error messages')
121 verbosity_opts.add_option(
123 action=
'store_const',
126 help=
'progress information messages')
127 verbosity_opts.add_option(
129 action=
'store_const',
132 help=
'debugging messages')
133 parser.add_option_group(verbosity_opts)
136 log_level=logging.WARNING,
141 opts, args = parser.parse_args()
143 parser.error(
'only one test allowed')
146 logging.basicConfig(level=opts.log_level)
148 if opts.common_tmpdir:
149 if not os.path.isdir(opts.common_tmpdir):
150 os.makedirs(opts.common_tmpdir)
151 GT.BaseTest._common_tmpdir = opts.common_tmpdir
153 os.chdir(opts.workdir)
156 if "slc6" in (os.environ.get(
'BINARY_TAG',
'')
157 or os.environ.get(
'CMTCONFIG',
'')):
158 os.environ[
'TERM'] =
'dumb' 161 sanitizer = os.environ.get(
'PRELOAD_SANITIZER_LIB',
'')
162 ld_preload = os.environ.get(
'LD_PRELOAD',
'')
163 if sanitizer
and sanitizer
not in ld_preload:
165 os.environ[
'LD_PRELOAD'] = sanitizer +
" " + ld_preload
167 os.environ[
'LD_PRELOAD'] = sanitizer
170 logging.debug(
'processing %s', filename)
171 if filename.endswith(
'_test.py'):
172 indexFilePart = filename.rfind(
"/")
173 fileToImport = filename[indexFilePart + 1:]
174 sys.path.append(GT.RationalizePath(filename)[:-len(fileToImport) - 1])
175 imp = __import__(fileToImport[:-3])
176 fileToExec = imp.Test()
177 results = fileToExec.run()
178 elif filename.endswith(
".qmt"):
181 test_module = os.environ.get(
'GAUDI_QMTEST_MODULE',
182 'GaudiTesting.QMTTest')
183 test_class = os.environ.get(
'GAUDI_QMTEST_CLASS',
'QMTTest')
184 exec
'from {} import {} as test_class'.
format(test_module, test_class)
185 fileToTest = test_class(filename)
186 results = fileToTest.run()
188 report = globals()[opts.report +
'_report']
191 if results.get(
'Status') ==
'failed':
192 logging.debug(
'test failed: unexpected %s',
193 ', '.join(results[
'Causes']))
194 return int(results.get(
'Exit Code',
'1'))
195 elif results.get(
'Status') ==
'skipped':
196 return opts.skip_return_code
GAUDI_API std::string format(const char *,...)
MsgStream format utility "a la sprintf(...)".