| Index: test/mjsunit/wasm/jsapi-harness.js
|
| diff --git a/test/mjsunit/wasm/jsapi-harness.js b/test/mjsunit/wasm/jsapi-harness.js
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..c6ff42753055071c1017f05efa20e2d45f3f494a
|
| --- /dev/null
|
| +++ b/test/mjsunit/wasm/jsapi-harness.js
|
| @@ -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/harness/wasm-constants.js");
|
| +load("test/wasm-js/test/harness/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);
|
| + }
|
| + }
|
| +});
|
|
|