[wasm] Fix some failing `System.Runtime.InteropServices.JavaScript.Tests` (#71976)
authorPavel Savara <pavel.savara@gmail.com>
Tue, 12 Jul 2022 02:39:43 +0000 (04:39 +0200)
committerGitHub <noreply@github.com>
Tue, 12 Jul 2022 02:39:43 +0000 (22:39 -0400)
commit5ab41751dbfd5af8a05439c7319c27c864111c11
tree5ea6e9b2e22f24a676daebbc3a6bf8b017ea8883
parentc7613b67d4d6690941850f9166e5ef076f224a7b
[wasm] Fix some failing `System.Runtime.InteropServices.JavaScript.Tests` (#71976)

* protect class names from mangling

* [wasm] Fix `JSImportExportTest.JsImportObjectArray`

.. failing as:

```
[09:26:02] fail: [FAIL] System.Runtime.InteropServices.JavaScript.Tests.JSImportExportTest.JsImportObjectArray
[09:26:02] info: System.Runtime.InteropServices.JavaScript.JSException : Error: Assert failed: ES6 module JavaScriptTestHelper was not imported yet, please call JSHost.Import() first.
[09:26:02] info:     at mono_wasm_lookup_function (/datadisks/disk1/work/98BF08F2/w/A36B0892/e/dotnet.js:3:131530)
[09:26:02] info:     at Object.mono_wasm_bind_js_function (/datadisks/disk1/work/98BF08F2/w/A36B0892/e/dotnet.js:3:129592)
[09:26:02] info:     at _mono_wasm_bind_js_function (/datadisks/disk1/work/98BF08F2/w/A36B0892/e/dotnet.js:12:103196)
[09:26:02] info:     at do_icall (do_icall (<anonymous>:wasm-function[320]):0x1d48)e
[09:26:02] info:     at do_icall_wrapper (do_icall_wrapper (<anonymous>:wasm-function[290]):0x1c89)3
[09:26:02] info:     at interp_exec_method (interp_exec_method (<anonymous>:wasm-function[228]):0xe11)9
[09:26:02] info:     at interp_runtime_invoke (interp_runtime_invoke (<anonymous>:wasm-function[227]):0xcfe)5
[09:26:02] info:     at mono_jit_runtime_invoke (mono_jit_runtime_invoke (<anonymous>:wasm-function[8109]):0x1a141)9
[09:26:02] info:     at do_runtime_invoke (do_runtime_invoke (<anonymous>:wasm-function[2050]):0x84c9)3
[09:26:02] info:     at mono_runtime_try_invoke (mono_runtime_try_invoke (<anonymous>:wasm-function[2055]):0x852f)b
[09:26:02] info:     at mono_runtime_invoke (mono_runtime_invoke (<anonymous>:wasm-function[2082]):0x873b)a
[09:26:02] info:     at mono_wasm_invoke_method_ref (mono_wasm_invoke_method_ref (<anonymous>:wasm-function[121]):0x9ce0)
[09:26:02] info:     at Module._mono_wasm_invoke_method_ref (/datadisks/disk1/work/98BF08F2/w/A36B0892/e/dotnet.js:12:125660)
[09:26:02] info:     at Object.t.<computed> (/datadisks/disk1/work/98BF08F2/w/A36B0892/e/dotnet.js:3:5668)
[09:26:02] info:     at _call_method_with_converted_args (/datadisks/disk1/work/98BF08F2/w/A36B0892/e/dotnet.js:3:68736)
[09:26:02] info:     at call_method_ref (/datadisks/disk1/work/98BF08F2/w/A36B0892/e/dotnet.js:3:67909)
[09:26:02] info:     at /datadisks/disk1/work/98BF08F2/w/A36B0892/e/dotnet.js:3:69762
[09:26:02] info:     at mono_call_assembly_entry_point (/datadisks/disk1/work/98BF08F2/w/A36B0892/e/dotnet.js:3:69894)
[09:26:02] info:     at Object.mono_run_main (/datadisks/disk1/work/98BF08F2/w/A36B0892/e/dotnet.js:3:78650)
[09:26:02] info:     at Object.init (test-main.js:495:47)
[09:26:02] info:     at Object.onDotnetReady (test-main.js:439:17)
[09:26:02] info:     at finalize_startup (/datadisks/disk1/work/98BF08F2/w/A36B0892/e/dotnet.js:3:120653)
[09:26:02] info:     at mono_wasm_after_runtime_initialized (/datadisks/disk1/work/98BF08F2/w/A36B0892/e/dotnet.js:3:116586)
[09:26:02] info:     at callRuntimeCallbacks (/datadisks/disk1/work/98BF08F2/w/A36B0892/e/dotnet.js:12:16200)
[09:26:02] info:     at postRun (/datadisks/disk1/work/98BF08F2/w/A36B0892/e/dotnet.js:12:12076)
[09:26:02] info:     at doRun (/datadisks/disk1/work/98BF08F2/w/A36B0892/e/dotnet.js:12:144539)
[09:26:02] info:     at run (/datadisks/disk1/work/98BF08F2/w/A36B0892/e/dotnet.js:12:144696)
[09:26:02] info:     at runCaller (/datadisks/disk1/work/98BF08F2/w/A36B0892/e/dotnet.js:12:144176)
[09:26:02] info:     at removeRunDependency (/datadisks/disk1/work/98BF08F2/w/A36B0892/e/dotnet.js:12:12868)
[09:26:02] info:     at receiveInstance (/datadisks/disk1/work/98BF08F2/w/A36B0892/e/dotnet.js:12:14757)
[09:26:02] info:     at receiveInstantiationResult (/datadisks/disk1/work/98BF08F2/w/A36B0892/e/dotnet.js:12:14878)
[09:26:02] info:    at System.Runtime.InteropServices.JavaScript.JSFunctionBinding.BindJSFunctionImpl(String functionName, String moduleName, ReadOnlySpan`1 signatures)
[09:26:02] info:    at System.Runtime.InteropServices.JavaScript.JSFunctionBinding.BindJSFunction(String functionName, String moduleName, ReadOnlySpan`1 signatures)
[09:26:02] info:    at System.Runtime.InteropServices.JavaScript.Tests.JavaScriptTestHelper.createData(String name)
[09:26:02] info:    at System.Runtime.InteropServices.JavaScript.Tests.JSImportExportTest.MarshalObjectArrayCases()+MoveNext()
[09:26:02] info:    at System.Linq.Enumerable.SelectEnumerableIterator`2[[System.Object, System.Private.CoreLib, Version=7.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[System.Object[], System.Private.CoreLib, Version=7.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].MoveNext()
```

This is because the xunit is enumerating the member data before the
static `InitializeAsync` has completed.  And this member data calls
`JavaScriptTestHelper.createData("test")` before we are ready.

Fixes https://github.com/dotnet/runtime/issues/71952 .

Co-authored-by: Ankit Jain <radical@gmail.com>
src/libraries/System.Runtime.InteropServices.JavaScript/tests/System/Runtime/InteropServices/JavaScript/JSImportExportTest.cs
src/mono/wasm/runtime/dotnet.d.ts
src/mono/wasm/runtime/marshal.ts
src/mono/wasm/runtime/rollup.config.js