Skip to content
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
123 changes: 54 additions & 69 deletions test/sequential/test-debugger-exec.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,76 +8,61 @@ const startCLI = require('../common/debugger');

const assert = require('assert');

{
const cli = startCLI([fixtures.path('debugger/alive.js')]);

const cli = startCLI([fixtures.path('debugger/alive.js')]);
var waitInitialBreak = async function () {
Comment thread
Trott marked this conversation as resolved.
Outdated
try {
await cli.waitForInitialBreak();
await cli.waitForPrompt();
await cli.command('exec [typeof heartbeat, typeof process.exit]');
assert.match(cli.output, /\[ 'function', 'function' \]/, 'works w/o paren');

function onFatal(error) {
cli.quit();
throw error;
await cli.command('p [typeof heartbeat, typeof process.exit]');
assert.match(
cli.output,
/\[ 'function', 'function' \]/,
'works w/o paren, short'
);

await cli.command('repl');
assert.match(
cli.output,
/Press Ctrl\+C to leave debug repl\n+> /,
'shows hint for how to leave repl'
);
assert.doesNotMatch(cli.output, /debug>/, 'changes the repl style');

await cli.command('[typeof heartbeat, typeof process.exit]');
await cli.waitFor(/function/);
await cli.waitForPrompt();
assert.match(
cli.output,
/\[ 'function', 'function' \]/,
'can evaluate in the repl'
);
assert.match(cli.output, /> $/);

await cli.ctrlC();
await cli.waitFor(/debug> $/);
await cli.command('exec("[typeof heartbeat, typeof process.exit]")');
assert.match(cli.output, /\[ 'function', 'function' \]/, 'works w/ paren');
await cli.command('p("[typeof heartbeat, typeof process.exit]")');
assert.match(
cli.output,
/\[ 'function', 'function' \]/,
'works w/ paren, short'
);

await cli.command('cont');
await cli.command('exec [typeof heartbeat, typeof process.exit]');
assert.match(
cli.output,
/\[ 'undefined', 'function' \]/,
'non-paused exec can see global but not module-scope values'
);
} finally {
await cli.quit();
}
};

cli.waitForInitialBreak()
.then(() => cli.waitForPrompt())
.then(() => cli.command('exec [typeof heartbeat, typeof process.exit]'))
.then(() => {
assert.match(
cli.output,
/\[ 'function', 'function' \]/,
'works w/o paren'
);
})
.then(() => cli.command('p [typeof heartbeat, typeof process.exit]'))
.then(() => {
assert.match(
cli.output,
/\[ 'function', 'function' \]/,
'works w/o paren, short'
);
})
.then(() => cli.command('repl'))
.then(() => {
assert.match(
cli.output,
/Press Ctrl\+C to leave debug repl\n+> /,
'shows hint for how to leave repl');
assert.doesNotMatch(cli.output, /debug>/, 'changes the repl style');
})
.then(() => cli.command('[typeof heartbeat, typeof process.exit]'))
.then(() => cli.waitFor(/function/))
.then(() => cli.waitForPrompt())
.then(() => {
assert.match(
cli.output,
/\[ 'function', 'function' \]/, 'can evaluate in the repl');
assert.match(cli.output, /> $/);
})
.then(() => cli.ctrlC())
.then(() => cli.waitFor(/debug> $/))
.then(() => cli.command('exec("[typeof heartbeat, typeof process.exit]")'))
.then(() => {
assert.match(
cli.output,
/\[ 'function', 'function' \]/,
'works w/ paren'
);
})
.then(() => cli.command('p("[typeof heartbeat, typeof process.exit]")'))
.then(() => {
assert.match(
cli.output,
/\[ 'function', 'function' \]/,
'works w/ paren, short'
);
})
.then(() => cli.command('cont'))
.then(() => cli.command('exec [typeof heartbeat, typeof process.exit]'))
.then(() => {
assert.match(
cli.output,
/\[ 'undefined', 'function' \]/,
'non-paused exec can see global but not module-scope values');
})
.then(() => cli.quit())
.then(null, onFatal);
}
return waitInitialBreak();
Comment thread
Trott marked this conversation as resolved.
Outdated