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
31 opts.package = argv.pop(0)
35 if "QMTESTRESULTSDIR" in os.environ:
36 opts.output = os.path.normpath(os.path.expandvars(os.environ[
"QMTESTRESULTSDIR"]))
37 opts.output = os.path.join(opts.output,
38 "%s.%s.qmr" % (opts.package, os.environ.get(
"CMTCONFIG",
"noConfig")))
41 opts.have_user_options = len(argv)
45 if o
in [
'-o',
'--output']:
47 opts.output = os.path.realpath(argv.pop(0))
48 opts.have_user_options -= 2
49 elif o
in [
"--no-output"]:
51 opts.have_user_options -= 1
52 elif o
in [
"--dry-run"]:
54 opts.have_user_options -= 1
55 elif o
in [
"--html-output"]:
56 opts.html_output = os.path.realpath(argv.pop(0))
57 opts.have_user_options -= 2
59 opts.qmtest_args.append(o)
62 opts.qmtest_args = [
"-o", opts.output] + opts.qmtest_args
64 opts.qmtest_args.insert(0,
"--no-output")
70 print "==========> Running tests for package %s" % opts.package
74 results_dest_dir = os.path.realpath(os.path.join(opts.qmtest_dir, os.path.dirname(opts.output)))
75 if not os.path.exists(results_dest_dir):
76 print "==========> Creating '%s'" % results_dest_dir
77 os.makedirs(results_dest_dir, 0755)
79 print "==========> Entering '%s'" % opts.qmtest_dir
80 os.chdir(opts.qmtest_dir)
82 qmtest_cmd = [
"qmtest"]
84 if not os.path.isdir(
"QMTest"):
90 from tempfile
import mkdtemp
91 from shutil
import copytree
93 tdb = os.path.join(mkdtemp(
"GaudiTest"),
"qmtest")
96 qmtest_cmd += [
"--tdb", tdb]
97 print "==========> Initializing QMTest database"
98 os.system(
" ".join(qmtest_cmd + [
"create-tdb"]))
101 opts.qmtest_args.insert(0,
'''--result-stream "GaudiTest.HTMLResultStream(dir='%s')"'''
102 % opts.html_output.replace(
"\\",
"\\\\"))
105 cmd =
" ".join(qmtest_cmd + [
"run"] + opts.qmtest_args)
107 if not opts.have_user_options:
116 if "GAUDI_QMTEST_DEFAULT_SUITE" in os.environ:
117 suites.extend([s.strip().lower()
118 for s
in os.environ[
"GAUDI_QMTEST_DEFAULT_SUITE"].split(
",")])
119 suites.append(opts.package.lower())
121 if os.path.exists(
"%s.qms" % s):
126 print "==========> Would run '%s'"%cmd
128 print "==========> Running '%s'"%cmd
132 if "--tdb" in qmtest_cmd:
133 from shutil
import rmtree
134 def onerror(func, path, exc_info):
136 Change the permissions and try again to remove a file or a dir.
139 if func
in [os.remove, os.rmdir]:
143 os.chmod(os.path.dirname(path), 0700)
147 rmtree(os.path.dirname(qmtest_cmd[-1]), onerror = onerror)
151 if __name__ ==
'__main__':