Skip to content

Commit

Permalink
Use do_run_in_out_file_test for hello world test. NFC
Browse files Browse the repository at this point in the history
Also, inline emcc_args into called to do_runf in a few places.
  • Loading branch information
sbc100 committed Sep 6, 2024
1 parent b628685 commit 9cb27e8
Show file tree
Hide file tree
Showing 3 changed files with 22 additions and 24 deletions.
1 change: 1 addition & 0 deletions test/hello_world.out
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
hello, world!
4 changes: 2 additions & 2 deletions test/test_core.py
Original file line number Diff line number Diff line change
Expand Up @@ -8713,7 +8713,7 @@ def test_minimal_runtime_hello_printf(self, extra_setting):
# compiler. lsan also pulls in $FS
if '-fsanitize=leak' not in self.emcc_args and extra_setting != 'FORCE_FILESYSTEM':
self.maybe_closure()
self.do_runf('hello_world.c', 'hello, world!')
self.do_run_in_out_file_test('hello_world.c')

# Tests that -sMINIMAL_RUNTIME works well with SAFE_HEAP
@no_wasmfs('https://github.com/emscripten-core/emscripten/issues/16816')
Expand Down Expand Up @@ -9011,7 +9011,7 @@ def test_asan_modularized_with_closure(self):
self.set_setting('USE_CLOSURE_COMPILER')
self.set_setting('ALLOW_MEMORY_GROWTH')
self.set_setting('INITIAL_MEMORY', '300mb')
self.do_runf('hello_world.c', expected_output='hello, world!')
self.do_run_in_out_file_test('hello_world.c')

@no_asan('SAFE_HEAP cannot be used with ASan')
@no_2gb('asan doesnt support GLOBAL_BASE')
Expand Down
41 changes: 19 additions & 22 deletions test/test_other.py
Original file line number Diff line number Diff line change
Expand Up @@ -393,7 +393,7 @@ def test_emcc_output_mjs_closure(self):
test_file('hello_world.c'), '--closure=1'])
src = read_file('hello_world.mjs')
self.assertContained('new URL("hello_world.wasm", import.meta.url)', src)
self.assertContained('hello, world!', self.run_js('hello_world.mjs'))
self.assertContained('_in_out_file_testello, world!', self.run_js('hello_world.mjs'))

def test_emcc_output_mjs_web_no_import_meta(self):
# Ensure we don't emit import.meta.url at all for:
Expand Down Expand Up @@ -2031,7 +2031,7 @@ def test_exclude_file(self):
self.assertEqual(self.run_js('a.out.js').strip(), '')

def test_dylink_strict(self):
self.do_runf('hello_world.c', 'hello, world!', emcc_args=['-sSTRICT', '-sMAIN_MODULE=1'])
self.do_run_in_out_file_test('hello_world.c', emcc_args=['-sSTRICT', '-sMAIN_MODULE=1'])

def test_dylink_exceptions_and_assetions(self):
# Linking side modules using the STL and exceptions should not abort with
Expand Down Expand Up @@ -4495,7 +4495,7 @@ def test_js_lib_quoted_key(self):
});
''')

self.do_runf('hello_world.c', 'hello, world!', emcc_args=['--js-library', 'lib.js'])
self.do_run_in_out_file_test('hello_world.c', emcc_args=['--js-library', 'lib.js'])

def test_js_lib_proxying(self):
# Regression test for a bug we had where jsifier would find and use
Expand Down Expand Up @@ -11144,7 +11144,7 @@ def test_strict_mode_hello_world(self):
# via the environment EMCC_STRICT=1 and from the command line `-sSTRICT`
self.do_runf('hello_world.c', emcc_args=['-sSTRICT'])
with env_modify({'EMCC_STRICT': '1'}):
self.do_runf('hello_world.c', 'hello, world!')
self.do_run_in_out_file_test('hello_world.c')

def test_strict_mode_full_library(self):
self.do_runf('hello_world.c', emcc_args=['-sSTRICT', '-sINCLUDE_FULL_LIBRARY'])
Expand Down Expand Up @@ -11449,23 +11449,21 @@ def test_proxy_to_pthread_stack(self):
'--profiling-funcs'])

@parameterized({
'': [],
'sync': ['-sWASM_ASYNC_COMPILATION=0'],
'': ([],),
'sync': (['-sWASM_ASYNC_COMPILATION=0'],),
})
def test_offset_converter(self, *args):
def test_offset_converter(self, args):
self.set_setting('USE_OFFSET_CONVERTER')
self.emcc_args += ['--profiling-funcs']
self.do_runf('other/test_offset_converter.c', 'ok', emcc_args=list(args))
self.do_runf('other/test_offset_converter.c', 'ok', emcc_args=['--profiling-funcs'] + args)

@parameterized({
'': [],
'sync': ['-sWASM_ASYNC_COMPILATION=0'],
'': ([],),
'sync': (['-sWASM_ASYNC_COMPILATION=0'],),
})
def test_offset_converter_source_map(self, *args):
self.set_setting('USE_OFFSET_CONVERTER')
self.set_setting('LOAD_SOURCE_MAP')
self.emcc_args += ['-gsource-map', '-DUSE_SOURCE_MAP']
self.do_runf('other/test_offset_converter.c', 'ok', emcc_args=list(args))
self.do_runf('other/test_offset_converter.c', 'ok', emcc_args=['-gsource-map', '-DUSE_SOURCE_MAP'] + args)

@no_windows('ptys and select are not available on windows')
def test_build_error_color(self):
Expand Down Expand Up @@ -12070,7 +12068,7 @@ def test_pthread_reuse(self):

@node_pthreads
def test_pthread_relocatable(self):
self.do_runf('hello_world.c', 'hello, world!', emcc_args=['-sRELOCATABLE'])
self.do_run_in_out_file_test('hello_world.c', emcc_args=['-sRELOCATABLE'])

def test_stdin_preprocess(self):
create_file('temp.h', '#include <string>')
Expand Down Expand Up @@ -12653,7 +12651,7 @@ def test_wasm2js_no_dylink(self):
self.assertContained('WASM2JS is not compatible with relocatable output', err)

def test_wasm2js_standalone(self):
self.do_runf('hello_world.c', 'hello, world!', emcc_args=['-sSTANDALONE_WASM', '-sWASM=0'])
self.do_run_in_out_file_test('hello_world.c', emcc_args=['-sSTANDALONE_WASM', '-sWASM=0'])

def test_oformat(self):
self.run_process([EMCC, test_file('hello_world.c'), '--oformat=wasm', '-o', 'out.foo'])
Expand Down Expand Up @@ -12897,8 +12895,7 @@ def test_relocatable_limited_exports(self):
def test_shell_Oz(self):
# regression test for -Oz working on non-web, non-node environments that
# lack TextDecoder
self.emcc_args += ['-Oz']
self.do_runf('hello_world.c', 'hello, world!')
self.do_run_in_out_file_test('hello_world.c', emcc_args=['-Oz'])

def test_runtime_keepalive(self):
self.uses_es6 = True
Expand Down Expand Up @@ -13594,7 +13591,7 @@ def test_wasmfs_before_preload(self):
self.do_run_in_out_file_test('wasmfs/wasmfs_before_preload.c')

def test_hello_world_above_2gb(self):
self.do_runf('hello_world.c', 'hello, world!', emcc_args=['-sGLOBAL_BASE=2GB', '-sINITIAL_MEMORY=3GB'])
self.do_run_in_out_file_test('hello_world.c', emcc_args=['-sGLOBAL_BASE=2GB', '-sINITIAL_MEMORY=3GB'])

def test_hello_function(self):
# hello_function.cpp is referenced/used in the docs. This test ensures that it
Expand Down Expand Up @@ -13833,7 +13830,7 @@ def test_fetch_settings(self):

# Try again with INCOMING_MODULE_JS_API set
self.set_setting('INCOMING_MODULE_JS_API', 'fetchSettings')
self.do_runf('hello_world.c', 'hello, world')
self.do_run_in_out_file_test('hello_world.c')
src = read_file('hello_world.js')
self.assertContained("fetch(binaryFile, Module['fetchSettings'] || ", src)

Expand Down Expand Up @@ -14786,19 +14783,19 @@ def test_noExitRuntime(self):
self.set_setting('EXIT_RUNTIME')

# Normally, with EXIT_RUNTIME set we expect onExit to be called.
output = self.do_runf('hello_world.c', 'hello, world')
output = self.do_run_in_out_file_test('hello_world.c')
self.assertContained(onexit_called, output)

# However, if we set `Module.noExitRuntime = true`, then it should
# not be called.
create_file('noexit.js', 'Module.noExitRuntime = true;\n')
output = self.do_runf('hello_world.c', 'hello, world', emcc_args=['--pre-js=noexit.js'])
output = self.do_run_in_out_file_test('hello_world.c', emcc_args=['--pre-js=noexit.js'])
self.assertNotContained(onexit_called, output)

# Setting the internal `noExitRuntime` after startup should have the
# same effect.
create_file('noexit_oninit.js', 'Module.preRun = () => { noExitRuntime = true; }')
output = self.do_runf('hello_world.c', 'hello, world', emcc_args=['--pre-js=noexit_oninit.js'])
output = self.do_run_in_out_file_test('hello_world.c', emcc_args=['--pre-js=noexit_oninit.js'])
self.assertNotContained(onexit_called, output)

def test_noExitRuntime_deps(self):
Expand Down

0 comments on commit 9cb27e8

Please sign in to comment.