2 from __future__
import print_function
6 import xml.sax.saxutils
as XSS
7 from GaudiTesting
import BaseTest
as GT
11 sys.modules[
'GaudiTest'] = GT
16 Report function taking the dictionary from BasicTest.run() and display 17 stdout and stderr from it. 19 print(
'=== stdout ===')
20 print(results.get(
'stdout',
''))
21 print(
'=== stderr ===')
22 print(results.get(
'stderr',
''))
23 print(
'=== result ===')
24 print(results.get(
'Status'))
25 if results.get(
'Status') !=
'passed' and 'Causes' in results:
26 print(
' ',
'unexpected ' +
', '.join(results[
'Causes']))
31 Do not report anything from the result of the test. 38 Report function taking the dictionary from BasicTest.run() and report data 39 from it in a CTest-friendly way. 42 print(
'CTEST_FULL_OUTPUT')
43 print(results.get(
'stdout',
''))
44 handler = {
'Environment':
lambda v:
'\n'.join(
'{0}={1}'.
format(*item)
45 for item
in sorted(v.items())),
46 'Causes':
lambda v:
'unexpected ' +
', '.join(v)}
51 ignore = set([
'Status',
'Name',
'stdout',
'Exit Code'])
53 '<DartMeasurement type="text/string" name="{0}">{1}</DartMeasurement>')
58 hndlr = handler.get(key, id_handler)
59 data = XSS.escape(GT.sanitize_for_xml(hndlr(results[key])))
60 sys.stdout.write(template.format(key, data))
65 Report function taking the dictionary from BasicTest.run() and print it with 68 from pprint
import pprint
74 Main function of the script. 76 from optparse
import OptionParser, OptionGroup
77 parser = OptionParser()
83 n.replace(
'_report',
'')
for n
in globals()
84 if n.endswith(
'_report')
86 help=
'choose a report method [default %default]')
90 help=
'directory to be used as common temporary directory')
95 help=
'directory to change to before starting the test')
100 help=
'return code to use to flag a test as skipped ' 101 '[default %default]')
103 verbosity_opts = OptionGroup(parser,
'Verbosity Level',
104 'set the verbosity level of messages')
105 verbosity_opts.add_option(
107 action=
'store_const',
109 const=logging.CRITICAL,
110 help=
'only critical error messages')
111 verbosity_opts.add_option(
113 action=
'store_const',
116 help=
'error messages')
117 verbosity_opts.add_option(
119 action=
'store_const',
121 const=logging.WARNING,
122 help=
'warning and error messages')
123 verbosity_opts.add_option(
125 action=
'store_const',
128 help=
'progress information messages')
129 verbosity_opts.add_option(
131 action=
'store_const',
134 help=
'debugging messages')
135 parser.add_option_group(verbosity_opts)
138 log_level=logging.WARNING,
143 opts, args = parser.parse_args()
145 parser.error(
'only one test allowed')
148 logging.basicConfig(level=opts.log_level)
150 if opts.common_tmpdir:
151 if not os.path.isdir(opts.common_tmpdir):
152 os.makedirs(opts.common_tmpdir)
153 GT.BaseTest._common_tmpdir = opts.common_tmpdir
155 os.chdir(opts.workdir)
158 if "slc6" in (os.environ.get(
'BINARY_TAG',
'')
159 or os.environ.get(
'CMTCONFIG',
'')):
160 os.environ[
'TERM'] =
'dumb' 163 sanitizer = os.environ.get(
'PRELOAD_SANITIZER_LIB',
'')
164 ld_preload = os.environ.get(
'LD_PRELOAD',
'')
165 if sanitizer
and sanitizer
not in ld_preload:
167 os.environ[
'LD_PRELOAD'] = sanitizer +
" " + ld_preload
169 os.environ[
'LD_PRELOAD'] = sanitizer
172 logging.debug(
'processing %s', filename)
173 if filename.endswith(
'_test.py'):
174 indexFilePart = filename.rfind(
"/")
175 fileToImport = filename[indexFilePart + 1:]
176 sys.path.append(GT.RationalizePath(filename)[:-len(fileToImport) - 1])
177 imp = __import__(fileToImport[:-3])
178 fileToExec = imp.Test()
179 results = fileToExec.run()
180 elif filename.endswith(
".qmt"):
183 test_module = os.environ.get(
'GAUDI_QMTEST_MODULE',
184 'GaudiTesting.QMTTest')
185 test_class = os.environ.get(
'GAUDI_QMTEST_CLASS',
'QMTTest')
186 test_class = getattr(importlib.import_module(test_module), test_class)
187 fileToTest = test_class(filename)
188 results = fileToTest.run()
190 report = globals()[opts.report +
'_report']
193 if results.get(
'Status') ==
'failed':
194 logging.debug(
'test failed: unexpected %s',
195 ', '.join(results[
'Causes']))
196 return int(results.get(
'Exit Code',
'1'))
197 elif results.get(
'Status') ==
'skipped':
198 return opts.skip_return_code
202 if __name__ ==
'__main__':
GAUDI_API std::string format(const char *,...)
MsgStream format utility "a la sprintf(...)".
def pprint_report(results)
def basic_report(results)
def ctest_report(results)
def quiet_report(results)