blob: 768c86be9dd2a0f93e5c96a01fb052e2f1d618ec [file] [log] [blame]
// Copyright 2019 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.
Debug = debug.Debug
const evaluate = Debug.evaluateGlobalREPL;
(async () => {
// Test that the completion value of the REPL script is the resolve value of the
// promise returned by evalute.
let result = evaluate('5;');
assertPromiseResult(result, (value) => {
assertEquals(5, value);
}, assertUnreachable);
// Test that top-level await in REPL mode works.
result = evaluate('let x = await Promise.resolve(42);');
assertPromiseResult(result, (value) => {
assertEquals(undefined, value);
assertEquals(42, x);
}, assertUnreachable);
// Test that a throwing REPL script results in a rejected promise.
result = evaluate('throw new Error("ba dum tsh");');
assertPromiseResult(result, assertUnreachable, (error) => {
assertEquals("ba dum tsh", error.message);
});
// Test that a rejected promise throws.
result = evaluate('await Promise.reject("Reject promise!");');
assertPromiseResult(result, assertUnreachable, (error) => {
assertEquals('Reject promise!', error);
});
// Test that we can bind a promise in REPL mode.
await evaluate('let y = Promise.resolve(21);');
assertPromiseResult(y, (value) => {
assertEquals(21, value);
}, assertUnreachable);
})().then(() => {
print("Async test completed successfully.");
}).catch(e => {
print(e.stack);
%AbortJS("Async test is failing");
});