| 957 | return self.btest(filename, *args, **kwargs) |
| 958 | |
| 959 | def btest(self, filename, expected=None, |
| 960 | post_build=None, |
| 961 | cflags=None, |
| 962 | timeout=None, |
| 963 | reporting=Reporting.FULL, |
| 964 | run_in_worker=False, |
| 965 | output_basename='test'): |
| 966 | assert expected, 'a btest must have an expected output' |
| 967 | if cflags is None: |
| 968 | cflags = [] |
| 969 | cflags = cflags.copy() |
| 970 | filename = find_browser_test_file(filename) |
| 971 | if run_in_worker: |
| 972 | outfile = output_basename + '.js' |
| 973 | else: |
| 974 | outfile = output_basename + '.html' |
| 975 | cflags += ['-o', outfile] |
| 976 | # print('cflags:', cflags) |
| 977 | utils.delete_file(outfile) |
| 978 | self.compile_btest(filename, cflags, reporting=reporting) |
| 979 | self.assertExists(outfile) |
| 980 | if post_build: |
| 981 | post_build() |
| 982 | if not isinstance(expected, list): |
| 983 | expected = [expected] |
| 984 | if EMTEST_BROWSER == 'node': |
| 985 | output = self.run_js(f'{output_basename}.js') |
| 986 | self.assertContained('RESULT: ' + expected[0], output) |
| 987 | else: |
| 988 | html_file = outfile |
| 989 | if run_in_worker: |
| 990 | create_file('run_worker.html', f'''\ |
| 991 | <script> |
| 992 | new Worker('{output_basename}.js'); |
| 993 | </script> |
| 994 | ''') |
| 995 | html_file = 'run_worker.html' |
| 996 | self.run_browser(html_file, expected=['/report_result?' + e for e in expected], timeout=timeout) |