[tests] Filter out non-existent methods in inspector tests

Previously these would silently fail unless the caller checked the
.error property of the return value. There are no tests that check
iteractions with non-existent methods so this should always be an
error at the test runner level, rather than relying on clients to
check the error.

1. Fix the tests that accidentally call methods that don't exist.
2. Change the test runner so that it prints an error and ends the test.
3. Add a test that the test runner does #2.

Bug: v8:10134
Change-Id: Idd619950a057290c565d58fba6db3ddbcaf2c5eb
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2006093
Commit-Queue: Peter Marshall <petermarshall@chromium.org>
Reviewed-by: Simon Zünd <szuend@chromium.org>
Cr-Commit-Position: refs/heads/master@{#65835}
This commit is contained in:
Peter Marshall 2020-01-17 12:39:40 +01:00 committed by Commit Bot
parent f6c7a484ce
commit 5eb5015ea8
6 changed files with 25 additions and 3 deletions

View File

@ -0,0 +1,2 @@
Test that the test runner prints if a non-existent method is called
Error: Called non-existent method. 'Runtime.method_does_not_exist' wasn't found code: -32601

View File

@ -0,0 +1,14 @@
// Copyright 2020 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.
const {Protocol} = InspectorTest.start(
'Test that the test runner prints if a non-existent method is called');
(async function test() {
await Protocol.Runtime.method_does_not_exist();
// This will only be called if the test fails, because the test runner should
// call completeTest() if the method does not exist.
InspectorTest.completeTest();
})();

View File

@ -389,6 +389,12 @@ InspectorTest.Session = class {
var messageObject = JSON.parse(messageString);
if (InspectorTest._dumpInspectorProtocolMessages)
utils.print("backend: " + JSON.stringify(messageObject));
const kMethodNotFound = -32601;
if (messageObject.error && messageObject.error.code === kMethodNotFound) {
InspectorTest.log(`Error: Called non-existent method. ${
messageObject.error.message} code: ${messageObject.error.code}`);
InspectorTest.completeTest();
}
try {
var messageId = messageObject["id"];
if (typeof messageId === "number") {

View File

@ -59,7 +59,7 @@ function compareCounterMaps(counterMap, counterMap2) {
}
(async function test() {
await Protocol.Runtime.ensable();
await Protocol.Runtime.enable();
await Protocol.Profiler.enableRuntimeCallStats();
let counterMap = buildCounterMap(await Protocol.Profiler.getRuntimeCallStats());

View File

@ -19,7 +19,7 @@ function logErrorMessage(result) {
}
(async function test() {
await Protocol.Runtime.ensable();
await Protocol.Runtime.enable();
// This should fail with "not enabled" error.
logErrorMessage(await Protocol.Profiler.getRuntimeCallStats());

View File

@ -30,7 +30,7 @@ let {session, contextGroup, Protocol} = InspectorTest.start("Test collecting typ
await session.logTypeProfile(typeProfiles.result.result[0],
source);
Protocol.Profiler.stoptTypeProfile();
Protocol.Profiler.stopTypeProfile();
Protocol.Profiler.disable();
await Protocol.Runtime.disable();
InspectorTest.completeTest();