67 Main function of the script.
69 from optparse
import OptionParser, OptionGroup
70 parser = OptionParser()
72 parser.add_option(
'--report', action=
'store',
73 choices=[n.replace(
'_report',
'')
74 for n
in globals()
if n.endswith(
'_report')],
75 help=
'choose a report method [default %default]')
76 parser.add_option(
'--common-tmpdir', action=
'store',
77 help=
'directory to be used as common temporary directory')
78 parser.add_option(
'-C',
'--workdir', action=
'store',
79 help=
'directory to change to before starting the test')
81 parser.add_option(
'--skip-return-code', type=
'int',
82 help=
'return code to use to flag a test as skipped '
85 verbosity_opts = OptionGroup(parser,
'Verbosity Level',
86 'set the verbosity level of messages')
87 verbosity_opts.add_option(
'--silent',
88 action=
'store_const', dest=
'log_level',
89 const=logging.CRITICAL,
90 help=
'only critical error messages')
91 verbosity_opts.add_option(
'--quiet',
92 action=
'store_const', dest=
'log_level',
94 help=
'error messages')
95 verbosity_opts.add_option(
'--warning',
96 action=
'store_const', dest=
'log_level',
97 const=logging.WARNING,
98 help=
'warning and error messages')
99 verbosity_opts.add_option(
'--verbose',
100 action=
'store_const', dest=
'log_level',
102 help=
'progress information messages')
103 verbosity_opts.add_option(
'--debug',
104 action=
'store_const', dest=
'log_level',
106 help=
'debugging messages')
107 parser.add_option_group(verbosity_opts)
110 parser.set_defaults(log_level=logging.WARNING,
116 opts, args = parser.parse_args()
118 parser.error(
'only one test allowed')
121 logging.basicConfig(level=opts.log_level)
123 if opts.common_tmpdir:
124 if not os.path.isdir(opts.common_tmpdir):
125 os.makedirs(opts.common_tmpdir)
126 GT.BaseTest._common_tmpdir = opts.common_tmpdir
128 os.chdir(opts.workdir)
131 if "slc6" in (os.environ.get(
'BINARY_TAG',
'')
or
132 os.environ.get(
'CMTCONFIG',
'')):
133 os.environ[
'TERM'] =
'dumb'
136 logging.debug(
'processing %s', filename)
137 if filename.endswith(
'_test.py') :
138 indexFilePart= filename.rfind(
"/")
139 fileToImport = filename[indexFilePart+1:]
140 sys.path.append(GT.RationalizePath(filename)[:-len(fileToImport)-1])
141 imp = __import__(fileToImport[:-3])
142 fileToExec = imp.Test()
143 results = fileToExec.run()
144 elif filename.endswith(
".qmt"):
145 from QMTTest
import QMTTest
146 fileToTest = QMTTest(filename)
147 results = fileToTest.run()
149 report = globals()[opts.report +
'_report']
152 if results.get(
'Status') ==
'failed':
153 logging.debug(
'test failed: unexpected %s',
154 ', '.join(results[
'Causes']))
155 return int(results.get(
'Exit Code',
'1'))
156 elif results.get(
'Status') ==
'skipped':
157 return opts.skip_return_code