[wasm] include JS conformance tests in Wasm mjsunit tests
BUG= Review-Url: https://codereview.chromium.org/2660903003 Cr-Commit-Position: refs/heads/master@{#42821}
This commit is contained in:
parent
e791ded4cd
commit
eb9b5edffb
1
.gitignore
vendored
1
.gitignore
vendored
@ -98,3 +98,4 @@ v8.ignition_dispatches_table.json
|
||||
/test/fuzzer/wasm_asmjs.tar.gz
|
||||
/src/inspector/build/closure-compiler.tar.gz
|
||||
/src/inspector/build/closure-compiler
|
||||
/test/wasm-js
|
||||
|
4
DEPS
4
DEPS
@ -40,6 +40,10 @@ deps = {
|
||||
Var("chromium_url") + "/external/github.com/test262-utils/test262-harness-py.git" + "@" + "0f2acdd882c84cff43b9d60df7574a1901e2cdcd",
|
||||
"v8/tools/clang":
|
||||
Var("chromium_url") + "/chromium/src/tools/clang.git" + "@" + "960cc3ec8c679adad9b6f9019f737c8cd9ad0a75",
|
||||
# TODO(eholk): once the Wasm JS API Conformance Suite is finalized, mirror it in
|
||||
# a chromium repo like the other deps.
|
||||
"v8/test/wasm-js":
|
||||
"https://github.com/bnjbvr/wasm-spec.git" + "@" + "190bd270e148a532082f6eb1b97dea5302800485",
|
||||
}
|
||||
|
||||
deps_os = {
|
||||
|
@ -14,7 +14,8 @@
|
||||
'../../tools/profviz/composer.js',
|
||||
'../../tools/splaytree.js',
|
||||
'../../tools/tickprocessor.js',
|
||||
'../../tools/dumpcpp.js'
|
||||
'../../tools/dumpcpp.js',
|
||||
'../wasm-js/',
|
||||
],
|
||||
},
|
||||
'includes': [
|
||||
|
78
test/mjsunit/wasm/jsapi-harness.js
Normal file
78
test/mjsunit/wasm/jsapi-harness.js
Normal file
@ -0,0 +1,78 @@
|
||||
// Copyright 2017 the V8 project authors. All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style license that can be
|
||||
// found in the LICENSE file.
|
||||
|
||||
// TODO(eholk): Once we have stable test IDs, use those as the key instead.
|
||||
// See https://github.com/WebAssembly/spec/issues/415
|
||||
const known_failures = {
|
||||
"'WebAssembly.Module.customSections' method":
|
||||
'https://bugs.chromium.org/p/v8/issues/detail?id=5815',
|
||||
"'WebAssembly.Table.prototype.get' method":
|
||||
'https://bugs.chromium.org/p/v8/issues/detail?id=5507',
|
||||
"'WebAssembly.Table.prototype.set' method":
|
||||
'https://bugs.chromium.org/p/v8/issues/detail?id=5507',
|
||||
};
|
||||
|
||||
let failures = [];
|
||||
|
||||
let last_promise = new Promise((resolve, reject) => { resolve(); });
|
||||
|
||||
function test(func, description) {
|
||||
let maybeErr;
|
||||
try { func(); }
|
||||
catch(e) { maybeErr = e; }
|
||||
if (typeof maybeErr !== 'undefined') {
|
||||
print(`${description}: FAIL. ${maybeErr}`);
|
||||
failures.push(description);
|
||||
} else {
|
||||
print(`${description}: PASS.`);
|
||||
}
|
||||
}
|
||||
|
||||
function promise_test(func, description) {
|
||||
last_promise = last_promise.then(func)
|
||||
.then(_ => { print(`${description}: PASS.`); })
|
||||
.catch(err => {
|
||||
print(`${description}: FAIL. ${err}`);
|
||||
failures.push(description);
|
||||
});
|
||||
}
|
||||
|
||||
let assert_equals = assertEquals;
|
||||
let assert_true = assertEquals.bind(null, true);
|
||||
let assert_false = assertEquals.bind(null, false);
|
||||
|
||||
function assert_unreached(description) {
|
||||
throw new Error(`unreachable:\n${description}`);
|
||||
}
|
||||
|
||||
function assertErrorMessage(f, ctor, test) {
|
||||
try { f(); }
|
||||
catch (e) {
|
||||
assert_true(e instanceof ctor, "expected exception " + ctor.name + ", got " + e);
|
||||
return;
|
||||
}
|
||||
assert_true(false, "expected exception " + ctor.name + ", no exception thrown");
|
||||
};
|
||||
|
||||
load("test/wasm-js/test/lib/wasm-constants.js");
|
||||
load("test/wasm-js/test/lib/wasm-module-builder.js");
|
||||
load("test/wasm-js/test/js-api/jsapi.js");
|
||||
|
||||
last_promise.then(_ => {
|
||||
if (failures.length > 0) {
|
||||
let unexpected = false;
|
||||
print("Some tests FAILED:");
|
||||
for (let i in failures) {
|
||||
if (known_failures[failures[i]]) {
|
||||
print(` ${failures[i]} [KNOWN: ${known_failures[failures[i]]}]`);
|
||||
} else {
|
||||
print(` ${failures[i]}`);
|
||||
unexpected = true;
|
||||
}
|
||||
}
|
||||
if (unexpected) {
|
||||
quit(1);
|
||||
}
|
||||
}
|
||||
});
|
Loading…
Reference in New Issue
Block a user