Skip to content

Commit 0994edc

Browse files
authored
Fix failing tests under node-canary. NFC (#24075)
One change here is that new versions of node now support navigator.language/languages natively.
1 parent a53b1a3 commit 0994edc

File tree

3 files changed

+19
-21
lines changed

3 files changed

+19
-21
lines changed

src/lib/libwasi.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -49,12 +49,12 @@ var WasiLibrary = {
4949
$getEnvStrings: () => {
5050
if (!getEnvStrings.strings) {
5151
// Default values.
52-
#if !DETERMINISTIC
53-
// Browser language detection #8751
54-
var lang = ((typeof navigator == 'object' && navigator.languages && navigator.languages[0]) || 'C').replace('-', '_') + '.UTF-8';
55-
#else
52+
#if DETERMINISTIC
5653
// Deterministic language detection, ignore the browser's language.
5754
var lang = 'C.UTF-8';
55+
#else
56+
// Browser language detection #8751
57+
var lang = ((typeof navigator == 'object' && navigator.languages && navigator.languages[0]) || 'C').replace('-', '_') + '.UTF-8';
5858
#endif
5959
var env = {
6060
#if !PURE_WASI

test/test_browser_language_detection.c

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,9 @@
44

55
int main(int argc, char** argv) {
66
if (getenv("LANG")) {
7-
printf("%s\n", getenv("LANG"));
7+
printf("LANG=%s\n", getenv("LANG"));
88
}
99

10-
#ifndef __EMSCRIPTEN__
1110
// Emscripten has no locale support in *scanf as of 2019-06.
1211
// These tests for future use - or native/desktop testing:
1312
char* cur_locale = setlocale(LC_ALL, "");
@@ -17,11 +16,10 @@ int main(int argc, char** argv) {
1716
printf("%f\n", ret);
1817
sscanf("3.4", "%f", &ret);
1918
printf("%f\n", ret);
20-
19+
2120
// Expected results:
2221
// LANG=C ./a.out: 1 / 3.4
2322
// LANG=fr_FR.UTF-8 ./a.out: 1,2 / 3
2423
// Note: requested locale needs to be installed locally (cf. `locale -a`)
2524
// otherwise setlocale(3) is no-op
26-
#endif
2725
}

test/test_other.py

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -6750,24 +6750,24 @@ def test_bad_locale(self):
67506750
self.assertContained('locale set to waka: waka',
67516751
self.run_js('a.out.js', args=['waka']))
67526752

6753+
@with_env_modify({'LC_ALL': 'en_US'})
67536754
def test_browser_language_detection(self):
67546755
# Test HTTP Accept-Language parsing by simulating navigator.languages #8751
67556756
self.run_process([EMCC,
67566757
test_file('test_browser_language_detection.c')])
6757-
self.assertContained('C.UTF-8', self.run_js('a.out.js'))
6758+
# We support both "C" and "en_US" here since older versions of node do
6759+
# not expose navigator.languages.
6760+
self.assertContained('LANG=(C|en_US).UTF-8', self.run_js('a.out.js'), regex=True)
67586761

67596762
# Accept-Language: fr,fr-FR;q=0.8,en-US;q=0.5,en;q=0.3
6760-
create_file('preamble.js', r'''navigator = {};
6761-
navigator.languages = [ "fr", "fr-FR", "en-US", "en" ];''')
6762-
self.run_process([EMCC, '--pre-js', 'preamble.js',
6763-
test_file('test_browser_language_detection.c')])
6764-
self.assertContained('fr.UTF-8', self.run_js('a.out.js'))
6763+
create_file('pre.js', 'var navigator = { languages: [ "fr", "fr-FR", "en-US", "en" ] };')
6764+
self.run_process([EMCC, '--pre-js', 'pre.js', test_file('test_browser_language_detection.c')])
6765+
self.assertContained('LANG=fr.UTF-8', self.run_js('a.out.js'))
67656766

67666767
# Accept-Language: fr-FR,fr;q=0.8,en-US;q=0.5,en;q=0.3
6767-
create_file('preamble.js', r'''navigator = {};
6768-
navigator.languages = [ "fr-FR", "fr", "en-US", "en" ];''')
6769-
self.emcc_args += ['--pre-js', 'preamble.js']
6770-
self.do_runf('test_browser_language_detection.c', 'fr_FR.UTF-8')
6768+
create_file('pre.js', r'var navigator = { languages: [ "fr-FR", "fr", "en-US", "en" ] };')
6769+
self.emcc_args += ['--pre-js', 'pre.js']
6770+
self.do_runf('test_browser_language_detection.c', 'LANG=fr_FR.UTF-8')
67716771

67726772
def test_js_main(self):
67736773
# try to add a main() from JS, at runtime. this is not supported (the
@@ -13374,7 +13374,7 @@ def test_split_module(self, customLoader, jspi, opt):
1337413374
self.emcc_args += ['-g', '-sJSPI_EXPORTS=say_hello']
1337513375
self.emcc_args += ['-sEXPORTED_FUNCTIONS=_malloc,_free']
1337613376
output = self.do_other_test('test_split_module.c')
13377-
if jspi:
13377+
if self.js_engines == [config.V8_ENGINE]:
1337813378
# TODO remove this when https://chromium-review.googlesource.com/c/v8/v8/+/4159854
1337913379
# lands.
1338013380
# d8 doesn't support writing a file yet, so extract it from the output.
@@ -14939,8 +14939,8 @@ def test_parseTools_legacy(self):
1493914939
def test_min_node_version(self):
1494014940
node_version = shared.get_node_version(self.get_nodejs())
1494114941
node_version = '.'.join(str(x) for x in node_version)
14942-
self.set_setting('MIN_NODE_VERSION', 210000)
14943-
expected = 'This emscripten-generated code requires node v21.0.0 (detected v%s' % node_version
14942+
self.set_setting('MIN_NODE_VERSION', 300000)
14943+
expected = 'This emscripten-generated code requires node v30.0.0 (detected v%s' % node_version
1494414944
self.do_runf('hello_world.c', expected, assert_returncode=NON_ZERO)
1494514945

1494614946
def test_deprecated_macros(self):

0 commit comments

Comments
 (0)