Skip to content

Commit

Permalink
src: fix --prof-process CLI argument handling
Browse files Browse the repository at this point in the history
Make sure that options after `--prof-process` are not treated
as Node.js options.

Fixes: nodejs#22786
  • Loading branch information
addaleax committed Sep 10, 2018
1 parent d994e26 commit d86e38e
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 0 deletions.
2 changes: 2 additions & 0 deletions src/node_options.cc
Original file line number Diff line number Diff line change
Expand Up @@ -108,6 +108,8 @@ EnvironmentOptionsParser::EnvironmentOptionsParser() {
AddOption("--prof-process",
"process V8 profiler output generated using --prof",
&EnvironmentOptions::prof_process);
// Options after --prof-process are passed through to the prof processor.
AddAlias("--prof-process", { "--prof-process", "--" });
AddOption("--redirect-warnings",
"write warnings to file instead of stderr",
&EnvironmentOptions::redirect_warnings,
Expand Down
24 changes: 24 additions & 0 deletions test/parallel/test-tick-processor-arguments.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
'use strict';
require('../common');
const tmpdir = require('../common/tmpdir');
const fs = require('fs');
const assert = require('assert');
const { spawnSync } = require('child_process');

tmpdir.refresh();
process.chdir(tmpdir.path);

// Generate log file.
spawnSync(process.execPath, [ '--prof', '-p', '42' ]);

const logfile = fs.readdirSync('.').filter((name) => name.endsWith('.log'))[0];
assert(logfile);

// Make sure that the --preprocess argument is passed through correctly.
const { stdout } = spawnSync(
process.execPath,
[ '--prof-process', '--preprocess', logfile ],
{ encoding: 'utf8' });

// Make sure that the result is valid JSON.
JSON.parse(stdout);

0 comments on commit d86e38e

Please sign in to comment.