test: make repl tests more resilient

This refactors two tests to ignore line numbers in stack traces. That
way changed line numbers do not have any impact on the test outcome
anymore.

PR-URL: https://github.com/nodejs/node/pull/28608
Fixes: https://github.com/nodejs/node/issues/28546
Reviewed-By: Jiawen Geng <technicalcute@gmail.com>
Reviewed-By: Rich Trott <rtrott@gmail.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Lance Ball <lball@redhat.com>
Reviewed-By: Anto Aravinth <anto.aravinth.cse@gmail.com>
This commit is contained in:
Ruben Bridgewater 2019-07-09 13:40:01 +02:00 committed by Rich Trott
parent 195239a5f6
commit f9388580bd
2 changed files with 19 additions and 11 deletions

View File

@ -5,6 +5,7 @@ const fixtures = require('../common/fixtures');
const assert = require('assert');
const repl = require('repl');
const stackRegExp = /repl:[0-9]+:[0-9]+/g;
function run({ command, expected }) {
let accum = '';
@ -23,7 +24,10 @@ function run({ command, expected }) {
});
r.write(`${command}\n`);
assert.strictEqual(accum, expected);
assert.strictEqual(
accum.replace(stackRegExp, 'repl:*:*'),
expected.replace(stackRegExp, 'repl:*:*')
);
r.close();
}
@ -44,8 +48,8 @@ const tests = [
{
// test .load for a file that throws
command: `.load ${fixtures.path('repl-pretty-stack.js')}`,
expected: 'Thrown:\nError: Whoops!--->\nrepl:9:24--->\nd (repl:12:3)' +
'--->\nc (repl:9:3)--->\nb (repl:6:3)--->\na (repl:3:3)\n'
expected: 'Thrown:\nError: Whoops!--->\nrepl:*:*--->\nd (repl:*:*)' +
'--->\nc (repl:*:*)--->\nb (repl:*:*)--->\na (repl:*:*)\n'
},
{
command: 'let x y;',
@ -63,7 +67,7 @@ const tests = [
// test anonymous IIFE
{
command: '(function() { throw new Error(\'Whoops!\'); })()',
expected: 'Thrown:\nError: Whoops!--->\nrepl:1:21\n'
expected: 'Thrown:\nError: Whoops!--->\nrepl:*:*\n'
}
];

View File

@ -5,6 +5,7 @@ const fixtures = require('../common/fixtures');
const assert = require('assert');
const repl = require('repl');
const stackRegExp = /(at .*repl:)[0-9]+:[0-9]+/g;
function run({ command, expected, ...extraREPLOptions }) {
let accum = '';
@ -24,7 +25,10 @@ function run({ command, expected, ...extraREPLOptions }) {
});
r.write(`${command}\n`);
assert.strictEqual(accum, expected);
assert.strictEqual(
accum.replace(stackRegExp, '$1*:*'),
expected.replace(stackRegExp, '$1*:*')
);
r.close();
}
@ -32,9 +36,9 @@ const tests = [
{
// Test .load for a file that throws.
command: `.load ${fixtures.path('repl-pretty-stack.js')}`,
expected: 'Thrown:\nError: Whoops!\n at repl:9:24\n' +
' at d (repl:12:3)\n at c (repl:9:3)\n' +
' at b (repl:6:3)\n at a (repl:3:3)\n'
expected: 'Thrown:\nError: Whoops!\n at repl:*:*\n' +
' at d (repl:*:*)\n at c (repl:*:*)\n' +
' at b (repl:*:*)\n at a (repl:*:*)\n'
},
{
command: 'let x y;',
@ -48,12 +52,12 @@ const tests = [
{
command: '(() => { const err = Error(\'Whoops!\'); ' +
'err.foo = \'bar\'; throw err; })()',
expected: "Thrown:\nError: Whoops!\n at repl:1:22 {\n foo: 'bar'\n}\n",
expected: "Thrown:\nError: Whoops!\n at repl:*:* {\n foo: 'bar'\n}\n",
},
{
command: '(() => { const err = Error(\'Whoops!\'); ' +
'err.foo = \'bar\'; throw err; })()',
expected: 'Thrown:\nError: Whoops!\n at repl:1:22 {\n foo: ' +
expected: 'Thrown:\nError: Whoops!\n at repl:*:* {\n foo: ' +
"\u001b[32m'bar'\u001b[39m\n}\n",
useColors: true
},
@ -64,7 +68,7 @@ const tests = [
// Test anonymous IIFE.
{
command: '(function() { throw new Error(\'Whoops!\'); })()',
expected: 'Thrown:\nError: Whoops!\n at repl:1:21\n'
expected: 'Thrown:\nError: Whoops!\n at repl:*:*\n'
}
];