diff --git a/test/sequential/test-debugger-profile-command.js b/test/sequential/test-debugger-profile-command.js new file mode 100644 index 00000000000000..06818c2132d9c5 --- /dev/null +++ b/test/sequential/test-debugger-profile-command.js @@ -0,0 +1,35 @@ +'use strict'; +const common = require('../common'); + +common.skipIfInspectorDisabled(); + +const fixtures = require('../common/fixtures'); +const startCLI = require('../common/debugger'); + +const assert = require('assert'); +const fs = require('fs'); +const path = require('path'); + +const cli = startCLI([fixtures.path('debugger/empty.js')]); + +const rootDir = path.resolve(__dirname, '..', '..'); + +(async () => { + await cli.waitForInitialBreak(); + await cli.waitForPrompt(); + await cli.command('profile'); + await cli.command('profileEnd'); + assert.match(cli.output, /\[Profile \d+μs\]/); + await cli.command('profiles'); + assert.match(cli.output, /\[ \[Profile \d+μs\] \]/); + await cli.command('profiles[0].save()'); + assert.match(cli.output, /Saved profile to .*node\.cpuprofile/); + + const cpuprofile = path.resolve(rootDir, 'node.cpuprofile'); + const data = JSON.parse(fs.readFileSync(cpuprofile, 'utf8')); + assert.strictEqual(Array.isArray(data.nodes), true); + + fs.rmSync(cpuprofile); +})() +.then(common.mustCall()) +.finally(() => cli.quit());