Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(10)

Unified Diff: test/inspector/runtime/await-promise.js

Issue 2369753004: [inspector] added inspector test runner [part 5] (Closed)
Patch Set: addressed comments Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « test/inspector/json-parse-expected.txt ('k') | test/inspector/runtime/await-promise-expected.txt » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: test/inspector/runtime/await-promise.js
diff --git a/test/inspector/runtime/await-promise.js b/test/inspector/runtime/await-promise.js
new file mode 100644
index 0000000000000000000000000000000000000000..f61c2bfb2a7a691e04fed860eaa0deb00e650382
--- /dev/null
+++ b/test/inspector/runtime/await-promise.js
@@ -0,0 +1,135 @@
+// Copyright 2016 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.
+// Flags: --expose_gc
+
+print("Tests that Runtime.awaitPromise works.");
+
+InspectorTest.evaluateInPage(
+`
+var resolveCallback;
+var rejectCallback;
+function createPromise()
+{
+ return new Promise((resolve, reject) => { resolveCallback = resolve; rejectCallback = reject });
+}
+
+function resolvePromise()
+{
+ resolveCallback(239);
+ resolveCallback = undefined;
+ rejectCallback = undefined;
+}
+
+function rejectPromise()
+{
+ rejectCallback(239);
+ resolveCallback = undefined;
+ rejectCallback = undefined;
+}
+
+//# sourceURL=test.js`);
+
+InspectorTest.sendCommandPromise("Debugger.enable", {})
+ .then(() => InspectorTest.sendCommandPromise("Debugger.setAsyncCallStackDepth", { maxDepth: 128 }))
+ .then(() => testSuite());
+
+function dumpResult(result)
+{
+ if (result.exceptionDetails) {
+ if (result.exceptionDetails.stackTrace && result.exceptionDetails.stackTrace.parent) {
+ for (var frame of result.exceptionDetails.stackTrace.parent.callFrames) {
+ frame.scriptId = 0;
+ if (!frame.url)
+ frame.url = "(empty)";
+ if (!frame.functionName)
+ frame.functionName = "(anonymous)";
+ }
+ }
+ result.exceptionDetails.exceptionId = 0;
+ if (result.exceptionDetails.exception)
+ result.exceptionDetails.exception.objectId = 0;
+ }
+ InspectorTest.logObject(result);
+}
+
+function testSuite()
+{
+ InspectorTest.runTestSuite([
+ function testResolvedPromise(next)
+ {
+ InspectorTest.sendCommandPromise("Runtime.evaluate", { expression: "Promise.resolve(239)"})
+ .then((result) => InspectorTest.sendCommandPromise("Runtime.awaitPromise", { promiseObjectId: result.result.result.objectId, returnByValue: false, generatePreview: true }))
+ .then((result) => dumpResult(result.result))
+ .then(() => next());
+ },
+
+ function testRejectedPromise(next)
+ {
+ InspectorTest.sendCommandPromise("Runtime.evaluate", { expression: "Promise.reject({ a : 1 })"})
+ .then((result) => InspectorTest.sendCommandPromise("Runtime.awaitPromise", { promiseObjectId: result.result.result.objectId, returnByValue: true, generatePreview: false }))
+ .then((result) => dumpResult(result.result))
+ .then(() => next());
+ },
+
+ function testRejectedPromiseWithStack(next)
+ {
+ InspectorTest.sendCommandPromise("Runtime.evaluate", { expression: "createPromise()"})
+ .then((result) => scheduleRejectAndAwaitPromise(result))
+ .then((result) => dumpResult(result.result))
+ .then(() => next());
+
+ function scheduleRejectAndAwaitPromise(result)
+ {
+ var promise = InspectorTest.sendCommandPromise("Runtime.awaitPromise", { promiseObjectId: result.result.result.objectId });
+ InspectorTest.sendCommandPromise("Runtime.evaluate", { expression: "rejectPromise()" });
+ return promise;
+ }
+ },
+
+ function testPendingPromise(next)
+ {
+ InspectorTest.sendCommandPromise("Runtime.evaluate", { expression: "createPromise()"})
+ .then((result) => scheduleFulfillAndAwaitPromise(result))
+ .then((result) => dumpResult(result.result))
+ .then(() => next());
+
+ function scheduleFulfillAndAwaitPromise(result)
+ {
+ var promise = InspectorTest.sendCommandPromise("Runtime.awaitPromise", { promiseObjectId: result.result.result.objectId });
+ InspectorTest.sendCommandPromise("Runtime.evaluate", { expression: "resolvePromise()" });
+ return promise;
+ }
+ },
+
+ function testResolvedWithoutArgsPromise(next)
+ {
+ InspectorTest.sendCommandPromise("Runtime.evaluate", { expression: "Promise.resolve()"})
+ .then((result) => InspectorTest.sendCommandPromise("Runtime.awaitPromise", { promiseObjectId: result.result.result.objectId, returnByValue: true, generatePreview: false }))
+ .then((result) => dumpResult(result.result))
+ .then(() => next());
+ },
+
+ function testGarbageCollectedPromise(next)
+ {
+ InspectorTest.sendCommandPromise("Runtime.evaluate", { expression: "new Promise(() => undefined)" })
+ .then((result) => scheduleGCAndawaitPromise(result))
+ .then((result) => InspectorTest.logObject(result.error))
+ .then(() => next());
+
+ function scheduleGCAndawaitPromise(result)
+ {
+ var objectId = result.result.result.objectId;
+ var promise = InspectorTest.sendCommandPromise("Runtime.awaitPromise", { promiseObjectId: objectId });
+ gcPromise(objectId);
+ return promise;
+ }
+
+ function gcPromise(objectId)
+ {
+ InspectorTest.sendCommandPromise("Runtime.releaseObject", { objectId: objectId})
+ .then(() => InspectorTest.sendCommandPromise("Runtime.evaluate", { expression: "gc()" }));
+ }
+ }
+ ]);
+}
« no previous file with comments | « test/inspector/json-parse-expected.txt ('k') | test/inspector/runtime/await-promise-expected.txt » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698