@@ -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+
558569def 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