summaryrefslogtreecommitdiff
path: root/test/sequential/test-debugger-exec.js
blob: 68a9b37d09d6aa623cb5f9a0202a11b5291aae7f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
'use strict';
const common = require('../common');

common.skipIfInspectorDisabled();

const fixtures = require('../common/fixtures');
const startCLI = require('../common/debugger');

const assert = require('assert');

{

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

  function onFatal(error) {
    cli.quit();
    throw error;
  }

  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('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('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);
}