Skip to content

Commit d14b348

Browse files
committed
[test] Add reftest helper method for browser tests. NFC
This makes it easy distinguish reference tests from other btests.
1 parent 34c83d8 commit d14b348

File tree

2 files changed

+199
-188
lines changed

2 files changed

+199
-188
lines changed

test/common.py

Lines changed: 25 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -555,6 +555,17 @@ def force_delete_contents(dirname):
555555
utils.delete_contents(dirname)
556556

557557

558+
def find_browser_test_file(filename):
559+
"""Looks for files in test/browser and then in test/
560+
"""
561+
if not os.path.exists(filename):
562+
fullname = test_file('browser', filename)
563+
if not os.path.exists(fullname):
564+
fullname = test_file(filename)
565+
filename = fullname
566+
return filename
567+
568+
558569
def parameterized(parameters):
559570
"""
560571
Mark a test as parameterized.
@@ -2010,11 +2021,12 @@ def run_browser(self, html_file, expected=None, message=None, timeout=None, extr
20102021

20112022
# @manually_trigger If set, we do not assume we should run the reftest when main() is done.
20122023
# Instead, call doReftest() in JS yourself at the right time.
2013-
def reftest(self, expected, manually_trigger=False):
2024+
def make_reftest(self, expected, manually_trigger=False):
20142025
# make sure the pngs used here have no color correction, using e.g.
20152026
# pngcrush -rem gAMA -rem cHRM -rem iCCP -rem sRGB infile outfile
20162027
basename = os.path.basename(expected)
2017-
shutil.copyfile(expected, self.in_dir(basename))
2028+
if os.path.abspath(os.path.dirname(expected)) != self.get_dir():
2029+
shutil.copyfile(expected, self.in_dir(basename))
20182030
reporting = read_file(test_file('browser_reporting.js'))
20192031
create_file('reftest.js', '''
20202032
function doReftest() {
@@ -2141,8 +2153,15 @@ def compile_btest(self, filename, args, reporting=Reporting.FULL):
21412153
filename = test_file(filename)
21422154
self.run_process([compiler_for(filename), filename] + self.get_emcc_args() + args)
21432155

2156+
def reftest(self, filename, reference, *args, **kwargs):
2157+
"""Special case of `btest` that uses reference image
2158+
"""
2159+
assert 'reference' not in kwargs
2160+
kwargs['reference'] = reference
2161+
return self.btest(filename, *args, **kwargs)
2162+
21442163
def btest_exit(self, filename, assert_returncode=0, *args, **kwargs):
2145-
"""Special case of btest that reports its result solely via exiting
2164+
"""Special case of `btest` that reports its result solely via exiting
21462165
with a given result code.
21472166
21482167
In this case we set EXIT_RUNTIME and we don't need to provide the
@@ -2167,15 +2186,11 @@ def btest(self, filename, expected=None, reference=None,
21672186
args = []
21682187
original_args = args
21692188
args = args.copy()
2170-
if not os.path.exists(filename):
2171-
fullname = test_file('browser', filename)
2172-
if not os.path.exists(fullname):
2173-
fullname = test_file(filename)
2174-
filename = fullname
2189+
filename = find_browser_test_file(filename)
21752190
if reference:
2176-
self.reference = reference
2191+
reference = find_browser_test_file(reference)
21772192
expected = [str(i) for i in range(0, reference_slack + 1)]
2178-
self.reftest(test_file(reference), manually_trigger=manually_trigger_reftest)
2193+
self.make_reftest(reference, manually_trigger=manually_trigger_reftest)
21792194
if not manual_reference:
21802195
args += ['--pre-js', 'reftest.js', '-sGL_TESTING']
21812196
else:

0 commit comments

Comments
 (0)