From f2c50fae844b34cf6d8488ab1fbc599eb935a919 Mon Sep 17 00:00:00 2001 From: Ryan Dahl Date: Thu, 20 Jun 2019 09:04:34 -0700 Subject: Fix silent failure of WebAssembly.instantiate() (#2548) By making WASM compilation synchronous. We'll have to do more work to make it properly async. --- core/libdeno/libdeno_test.cc | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) (limited to 'core/libdeno/libdeno_test.cc') diff --git a/core/libdeno/libdeno_test.cc b/core/libdeno/libdeno_test.cc index 485c95bff..c2d76c876 100644 --- a/core/libdeno/libdeno_test.cc +++ b/core/libdeno/libdeno_test.cc @@ -159,7 +159,6 @@ TEST(LibDenoTest, CheckPromiseErrors) { EXPECT_EQ(deno_last_exception(d), nullptr); deno_execute(d, nullptr, "a.js", "CheckPromiseErrors()"); EXPECT_EQ(nullptr, deno_last_exception(d)); - EXPECT_EQ(deno_last_exception(d), nullptr); EXPECT_EQ(count, 1); // We caught the exception. So still no errors after calling // deno_check_promise_errors(). @@ -261,3 +260,23 @@ TEST(LibDenoTest, SharedAtomics) { EXPECT_EQ(s[2], 2); deno_delete(d); } + +TEST(LibDenoTest, WasmInstantiate) { + static int count = 0; + auto recv_cb = [](auto _, auto buf, auto zero_copy_buf) { + EXPECT_EQ(buf.data_len, 1u); + EXPECT_EQ(buf.data_ptr[0], 42); + count++; + }; + Deno* d = deno_new(deno_config{0, snapshot, empty, recv_cb, nullptr}); + EXPECT_EQ(deno_last_exception(d), nullptr); + deno_execute(d, nullptr, "a.js", "WasmInstantiate()"); + + EXPECT_EQ(nullptr, deno_last_exception(d)); + deno_check_promise_errors(d); + EXPECT_EQ(nullptr, deno_last_exception(d)); + + EXPECT_EQ(count, 3); + + deno_delete(d); +} -- cgit v1.2.3