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