Chromium Code Reviews| 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"); |
|
Michael Achenbach
2017/02/11 12:27:09
So for now, only those three files are used from t
Eric Holk
2017/02/14 01:43:53
Nope, it's just those three files.
Done.
|
| +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); |
| + } |
| + } |
| +}); |