18 opts.package =
"Unknown"
20 opts.have_user_options =
False
21 opts.output = os.path.normpath(os.path.expandvars(os.environ[
"QMTESTRESULTS"]))
22 opts.qmtest_dir = os.path.normpath(os.path.expandvars(os.environ[
"QMTESTLOCALDIR"]))
24 if "GAUDI_QMTEST_HTML_OUTPUT" in os.environ:
25 opts.html_output = os.path.normpath(os.path.expandvars(os.environ.get(
"GAUDI_QMTEST_HTML_OUTPUT")))
27 opts.html_output =
None
28 if "GAUDI_QMTEST_XML_OUTPUT" in os.environ:
29 opts.xml_output = os.path.normpath(os.path.expandvars(os.environ.get(
"GAUDI_QMTEST_XML_OUTPUT")))
31 opts.xml_output =
None
35 opts.package = argv.pop(0)
39 if "QMTESTRESULTSDIR" in os.environ:
40 opts.output = os.path.normpath(os.path.expandvars(os.environ[
"QMTESTRESULTSDIR"]))
41 opts.output = os.path.join(opts.output,
42 "%s.%s.qmr" % (opts.package, os.environ.get(
"CMTCONFIG",
"noConfig")))
45 opts.have_user_options = len(argv)
49 if o
in [
'-o',
'--output']:
51 opts.output = os.path.realpath(argv.pop(0))
52 opts.have_user_options -= 2
53 elif o
in [
"--no-output"]:
55 opts.have_user_options -= 1
56 elif o
in [
"--dry-run"]:
58 opts.have_user_options -= 1
59 elif o
in [
"--html-output"]:
60 opts.html_output = os.path.realpath(argv.pop(0))
61 opts.have_user_options -= 2
63 elif o
in [
"--xml-output"]:
64 opts.xml_output = os.path.realpath(argv.pop(0))
65 opts.have_user_options -= 2
67 opts.qmtest_args.append(o)
70 opts.qmtest_args = [
"-o", opts.output] + opts.qmtest_args
72 opts.qmtest_args.insert(0,
"--no-output")
78 print "==========> Running tests for package %s" % opts.package
82 results_dest_dir = os.path.realpath(os.path.join(opts.qmtest_dir, os.path.dirname(opts.output)))
83 if not os.path.exists(results_dest_dir):
84 print "==========> Creating '%s'" % results_dest_dir
85 os.makedirs(results_dest_dir, 0755)
87 print "==========> Entering '%s'" % opts.qmtest_dir
88 os.chdir(opts.qmtest_dir)
90 qmtest_cmd = [
"qmtest"]
92 if not os.path.isdir(
"QMTest"):
98 from tempfile
import mkdtemp
99 from shutil
import copytree
101 tdb = os.path.join(mkdtemp(
"GaudiTest"),
"qmtest")
104 qmtest_cmd += [
"--tdb", tdb]
105 print "==========> Initializing QMTest database"
106 os.system(
" ".join(qmtest_cmd + [
"create-tdb"]))
109 opts.qmtest_args.insert(0,
'''--result-stream "GaudiTest.XMLResultStream(dir='%s',prefix='%s_')"'''
110 % (opts.xml_output.replace(
"\\",
"\\\\"), opts.package))
113 opts.qmtest_args.insert(0,
'''--result-stream "GaudiTest.HTMLResultStream(dir='%s')"'''
114 % opts.html_output.replace(
"\\",
"\\\\"))
117 cmd =
" ".join(qmtest_cmd + [
"run"] + opts.qmtest_args)
119 if not opts.have_user_options:
128 if "GAUDI_QMTEST_DEFAULT_SUITE" in os.environ:
129 suites.extend([s.strip().lower()
130 for s
in os.environ[
"GAUDI_QMTEST_DEFAULT_SUITE"].split(
",")])
131 suites.append(opts.package.lower())
133 real_name = os.path.join(*[x +
'.qms' for x
in s.split(
'.')])
134 if os.path.exists(real_name):
139 print "==========> Would run '%s'"%cmd
141 print "==========> Running '%s'"%cmd
145 if "--tdb" in qmtest_cmd:
146 from shutil
import rmtree
147 def onerror(func, path, exc_info):
149 Change the permissions and try again to remove a file or a dir.
152 if func
in [os.remove, os.rmdir]:
156 os.chmod(os.path.dirname(path), 0700)
160 rmtree(os.path.dirname(qmtest_cmd[-1]), onerror = onerror)
164 if __name__ ==
'__main__':