--- a/regression.py Sun Jan 18 22:18:49 2009 +0000
+++ b/regression.py Sun Jan 18 22:47:25 2009 +0000
@@ -64,19 +64,13 @@
os.mkdir(refTestDirName)
if pyscript is None:
- Options.options.cwd_launch = refTestDirName
tmpl = "%s"
for arg in arguments:
tmpl = tmpl + " " + arg
- wutils.run_program(testName, tmpl)
+ wutils.run_program(testName, tmpl, cwd=refTestDirName)
else:
argv = [self.env['PYTHON'], os.path.join(Options.cwd_launch, *os.path.split(pyscript))] + arguments
- before = os.getcwd()
- os.chdir(refTestDirName)
- try:
- wutils.run_argv(argv)
- finally:
- os.chdir(before)
+ wutils.run_argv(argv, cwd=refTestDirName)
print "Remember to commit " + refTestDirName
return 0
else:
@@ -84,12 +78,11 @@
print "Cannot locate reference traces in " + refTestDirName
return 1
-
if refTestName is None:
traceDirName = testName + ".ref"
else:
traceDirName = refTestName
- traceDirName = os.path.join ('traces', traceDirName)
+ traceDirName = os.path.join('regression', 'traces', traceDirName)
try:
shutil.rmtree(traceDirName)
@@ -97,20 +90,13 @@
pass
os.mkdir(traceDirName)
- #os.system("./waf --cwd regression/traces --run " +
- # testName + " > /dev/null 2>&1")
-
if pyscript is None:
- Options.options.cwd_launch = traceDirName
- wutils.run_program(testName, command_template=wutils.get_command_template(*arguments))
+ wutils.run_program(testName,
+ command_template=wutils.get_command_template(*arguments),
+ cwd=traceDirName)
else:
argv = [self.env['PYTHON'], os.path.join('..', '..', '..', *os.path.split(pyscript))] + arguments
- before = os.getcwd()
- os.chdir(traceDirName)
- try:
- wutils.run_argv(argv)
- finally:
- os.chdir(before)
+ wutils.run_argv(argv, cwd=traceDirName)
if verbose:
#diffCmd = "diff traces " + refTestDirName + " | head"
@@ -157,7 +143,7 @@
"""
- testdir = "tests"
+ testdir = os.path.join("regression", "tests")
if not os.path.exists(testdir):
print "Tests directory does not exist"
sys.exit(3)
@@ -193,7 +179,7 @@
except NotImplementedError:
print "SKIP " + test
- return len(bad) > 0
+ return (len(bad) > 0)
def _run_regression_test(test):
@@ -202,15 +188,15 @@
Arguments:
test -- the name of the test
"""
-
- if os.path.exists("traces"):
- files = os.listdir("traces")
+ traces_dir = os.path.join("regression", "traces")
+ if os.path.exists(traces_dir):
+ files = os.listdir(traces_dir)
for file in files:
if file == '.' or file == '..':
continue
shutil.rmtree(os.path.join("traces", file), ignore_errors=True)
else:
- os.mkdir("traces")
+ os.mkdir(traces_dir)
mod = __import__(test, globals(), locals(), [])
return mod.run(verbose=(Options.options.verbose > 0),
--- a/wscript Sun Jan 18 22:18:49 2009 +0000
+++ b/wscript Sun Jan 18 22:47:25 2009 +0000
@@ -194,9 +194,7 @@
variant_name = Options.options.build_profile
if Options.options.regression_traces is not None:
- variant_env['REGRESSION_TRACES'] = os.path.join("..", Options.options.regression_traces)
- else:
- variant_env['REGRESSION_TRACES'] = None
+ variant_env['REGRESSION_TRACES'] = os.path.abspath(Options.options.regression_traces)
if Options.options.enable_gcov:
variant_name += '-gcov'
@@ -441,16 +439,11 @@
if not env['DIFF']:
raise Utils.WafError("Cannot run regression tests: the 'diff' program is not installed.")
- _dir = os.getcwd()
- os.chdir("regression")
regression_traces = env['REGRESSION_TRACES']
if not regression_traces:
raise Utils.WafError("Cannot run regression tests: reference traces directory not given"
" (--with-regression-traces configure option)")
- try:
- retval = regression.run_regression(regression_traces)
- finally:
- os.chdir(_dir)
+ retval = regression.run_regression(regression_traces)
if retval:
sys.exit(retval)
--- a/wutils.py Sun Jan 18 22:18:49 2009 +0000
+++ b/wutils.py Sun Jan 18 22:47:25 2009 +0000
@@ -117,10 +117,10 @@
return proc_env
-def run_argv(argv, os_env=None):
+def run_argv(argv, os_env=None, cwd=None):
proc_env = get_proc_env(os_env)
#env = Build.bld.env
- retval = subprocess.Popen(argv, env=proc_env).wait()
+ retval = subprocess.Popen(argv, env=proc_env, cwd=cwd).wait()
if retval:
raise Utils.WafError("Command %s exited with code %i" % (argv, retval))
return retval
@@ -167,7 +167,7 @@
execvec = shlex.split(command_template % (program_node.abspath(env),))
return program_name, execvec
-def run_program(program_string, command_template=None):
+def run_program(program_string, command_template=None, cwd=None):
"""
if command_template is not None, then program_string == program
name and argv is given by command_template with %s replaced by the
@@ -175,34 +175,23 @@
a shell command with first name being the program name.
"""
dummy_program_name, execvec = get_run_program(program_string, command_template)
- former_cwd = os.getcwd()
- if (Options.options.cwd_launch):
- os.chdir(Options.options.cwd_launch)
- else:
- os.chdir(Options.cwd_launch)
- try:
- retval = run_argv(execvec)
- finally:
- os.chdir(former_cwd)
-
- return retval
+ if cwd is None:
+ if (Options.options.cwd_launch):
+ cwd = Options.options.cwd_launch
+ else:
+ cwd = Options.cwd_launch
+ return run_argv(execvec, cwd=cwd)
def run_python_program(program_string):
env = Build.bld.env
execvec = shlex.split(program_string)
-
- former_cwd = os.getcwd()
- if (Options.options.cwd_launch):
- os.chdir(Options.options.cwd_launch)
- else:
- os.chdir(Options.cwd_launch)
- try:
- retval = run_argv([env['PYTHON']] + execvec)
- finally:
- os.chdir(former_cwd)
-
- return retval
+ if cwd is None:
+ if (Options.options.cwd_launch):
+ cwd = Options.options.cwd_launch
+ else:
+ cwd = Options.cwd_launch
+ return run_argv([env['PYTHON']] + execvec, cwd=cwd)