62 if not os.path.exists(refTestDirName): |
62 if not os.path.exists(refTestDirName): |
63 print "creating new " + refTestDirName |
63 print "creating new " + refTestDirName |
64 os.mkdir(refTestDirName) |
64 os.mkdir(refTestDirName) |
65 |
65 |
66 if pyscript is None: |
66 if pyscript is None: |
67 Options.options.cwd_launch = refTestDirName |
|
68 tmpl = "%s" |
67 tmpl = "%s" |
69 for arg in arguments: |
68 for arg in arguments: |
70 tmpl = tmpl + " " + arg |
69 tmpl = tmpl + " " + arg |
71 wutils.run_program(testName, tmpl) |
70 wutils.run_program(testName, tmpl, cwd=refTestDirName) |
72 else: |
71 else: |
73 argv = [self.env['PYTHON'], os.path.join(Options.cwd_launch, *os.path.split(pyscript))] + arguments |
72 argv = [self.env['PYTHON'], os.path.join(Options.cwd_launch, *os.path.split(pyscript))] + arguments |
74 before = os.getcwd() |
73 wutils.run_argv(argv, cwd=refTestDirName) |
75 os.chdir(refTestDirName) |
|
76 try: |
|
77 wutils.run_argv(argv) |
|
78 finally: |
|
79 os.chdir(before) |
|
80 print "Remember to commit " + refTestDirName |
74 print "Remember to commit " + refTestDirName |
81 return 0 |
75 return 0 |
82 else: |
76 else: |
83 if not os.path.exists(refTestDirName): |
77 if not os.path.exists(refTestDirName): |
84 print "Cannot locate reference traces in " + refTestDirName |
78 print "Cannot locate reference traces in " + refTestDirName |
85 return 1 |
79 return 1 |
86 |
80 |
87 |
|
88 if refTestName is None: |
81 if refTestName is None: |
89 traceDirName = testName + ".ref" |
82 traceDirName = testName + ".ref" |
90 else: |
83 else: |
91 traceDirName = refTestName |
84 traceDirName = refTestName |
92 traceDirName = os.path.join ('traces', traceDirName) |
85 traceDirName = os.path.join('regression', 'traces', traceDirName) |
93 |
86 |
94 try: |
87 try: |
95 shutil.rmtree(traceDirName) |
88 shutil.rmtree(traceDirName) |
96 except OSError: |
89 except OSError: |
97 pass |
90 pass |
98 os.mkdir(traceDirName) |
91 os.mkdir(traceDirName) |
99 |
92 |
100 #os.system("./waf --cwd regression/traces --run " + |
|
101 # testName + " > /dev/null 2>&1") |
|
102 |
|
103 if pyscript is None: |
93 if pyscript is None: |
104 Options.options.cwd_launch = traceDirName |
94 wutils.run_program(testName, |
105 wutils.run_program(testName, command_template=wutils.get_command_template(*arguments)) |
95 command_template=wutils.get_command_template(*arguments), |
|
96 cwd=traceDirName) |
106 else: |
97 else: |
107 argv = [self.env['PYTHON'], os.path.join('..', '..', '..', *os.path.split(pyscript))] + arguments |
98 argv = [self.env['PYTHON'], os.path.join('..', '..', '..', *os.path.split(pyscript))] + arguments |
108 before = os.getcwd() |
99 wutils.run_argv(argv, cwd=traceDirName) |
109 os.chdir(traceDirName) |
|
110 try: |
|
111 wutils.run_argv(argv) |
|
112 finally: |
|
113 os.chdir(before) |
|
114 |
100 |
115 if verbose: |
101 if verbose: |
116 #diffCmd = "diff traces " + refTestDirName + " | head" |
102 #diffCmd = "diff traces " + refTestDirName + " | head" |
117 diffCmd = subprocess.Popen([self.env['DIFF'], traceDirName, refTestDirName], |
103 diffCmd = subprocess.Popen([self.env['DIFF'], traceDirName, refTestDirName], |
118 stdout=subprocess.PIPE) |
104 stdout=subprocess.PIPE) |
191 bad.append(test) |
177 bad.append(test) |
192 print "FAIL " + test |
178 print "FAIL " + test |
193 except NotImplementedError: |
179 except NotImplementedError: |
194 print "SKIP " + test |
180 print "SKIP " + test |
195 |
181 |
196 return len(bad) > 0 |
182 return (len(bad) > 0) |
197 |
183 |
198 |
184 |
199 def _run_regression_test(test): |
185 def _run_regression_test(test): |
200 """Run a single test. |
186 """Run a single test. |
201 |
187 |
202 Arguments: |
188 Arguments: |
203 test -- the name of the test |
189 test -- the name of the test |
204 """ |
190 """ |
205 |
191 traces_dir = os.path.join("regression", "traces") |
206 if os.path.exists("traces"): |
192 if os.path.exists(traces_dir): |
207 files = os.listdir("traces") |
193 files = os.listdir(traces_dir) |
208 for file in files: |
194 for file in files: |
209 if file == '.' or file == '..': |
195 if file == '.' or file == '..': |
210 continue |
196 continue |
211 shutil.rmtree(os.path.join("traces", file), ignore_errors=True) |
197 shutil.rmtree(os.path.join("traces", file), ignore_errors=True) |
212 else: |
198 else: |
213 os.mkdir("traces") |
199 os.mkdir(traces_dir) |
214 |
200 |
215 mod = __import__(test, globals(), locals(), []) |
201 mod = __import__(test, globals(), locals(), []) |
216 return mod.run(verbose=(Options.options.verbose > 0), |
202 return mod.run(verbose=(Options.options.verbose > 0), |
217 generate=Options.options.regression_generate) |
203 generate=Options.options.regression_generate) |
218 |
204 |