From cb73fed4305591ad06b17a135f60c3e9b1ad9b00 Mon Sep 17 00:00:00 2001 From: Eugene Ostroukhov Date: Fri, 11 Jan 2019 14:40:21 -0800 Subject: [PATCH] inspector, test: verify reported console message Many Inspector protocol clients rely on the top frame reported for the console messages. This test makes sure correct location is reported. PR-URL: https://github.com/nodejs/node/pull/25455 Reviewed-By: Joyee Cheung Reviewed-By: Anna Henningsen Reviewed-By: Luigi Pinca Reviewed-By: Colin Ihrig Reviewed-By: James M Snell --- .../test-inspector-console-top-frame.js | 31 +++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 test/parallel/test-inspector-console-top-frame.js diff --git a/test/parallel/test-inspector-console-top-frame.js b/test/parallel/test-inspector-console-top-frame.js new file mode 100644 index 00000000000000..56fd6a3890999f --- /dev/null +++ b/test/parallel/test-inspector-console-top-frame.js @@ -0,0 +1,31 @@ +'use strict'; + +// Verify that the line containing console.log is reported as a top stack frame +// of the consoleAPICalled notification. +// Changing this will break many Inspector protocol clients, including +// debuggers that use that value for navigating from console messages to code. + +const common = require('../common'); +common.skipIfInspectorDisabled(); + +const assert = require('assert'); +const { Session } = require('inspector'); +const { basename } = require('path'); + +function logMessage() { + console.log('Log a message'); +} + +const session = new Session(); +let topFrame; +session.once('Runtime.consoleAPICalled', (notification) => { + topFrame = (notification.params.stackTrace.callFrames[0]); +}); +session.connect(); +session.post('Runtime.enable'); + +logMessage(); // Triggers Inspector notification + +session.disconnect(); +assert.strictEqual(basename(topFrame.url), basename(__filename)); +assert.strictEqual(topFrame.lineNumber, 15);