summaryrefslogtreecommitdiff
path: root/benchmark/_cli.js
diff options
context:
space:
mode:
authorRuben Bridgewater <ruben@bridgewater.de>2020-02-12 19:33:33 +0100
committerRuben Bridgewater <ruben@bridgewater.de>2020-03-09 22:35:53 +0100
commit1760c23f756bd2d4b7aab4ce00e21e4a021ea97c (patch)
treeb42ee0461278b041a050b57f7dac3d02642bbfc1 /benchmark/_cli.js
parentf64aafa2d532b42cc751571c1c98bb6fb3099ea2 (diff)
downloadnode-new-1760c23f756bd2d4b7aab4ce00e21e4a021ea97c.tar.gz
benchmark: add `test` and `all` options and improve errors"
This reverts commit 4671d551cf9210434bdadf65ee5654606d24da70 and contains a fix to the issue raised for the revert. PR-URL: https://github.com/nodejs/node/pull/31755 Reviewed-By: Anna Henningsen <anna@addaleax.net> Reviewed-By: Vladimir de Turckheim <vlad2t@hotmail.com> Reviewed-By: Rich Trott <rtrott@gmail.com>
Diffstat (limited to 'benchmark/_cli.js')
-rw-r--r--benchmark/_cli.js22
1 files changed, 16 insertions, 6 deletions
diff --git a/benchmark/_cli.js b/benchmark/_cli.js
index 771cc72bff..eb6c4add97 100644
--- a/benchmark/_cli.js
+++ b/benchmark/_cli.js
@@ -6,15 +6,16 @@ const path = require('path');
// Create an object of all benchmark scripts
const benchmarks = {};
fs.readdirSync(__dirname)
- .filter((name) => fs.statSync(path.resolve(__dirname, name)).isDirectory())
+ .filter((name) => {
+ return name !== 'fixtures' &&
+ fs.statSync(path.resolve(__dirname, name)).isDirectory();
+ })
.forEach((category) => {
benchmarks[category] = fs.readdirSync(path.resolve(__dirname, category))
.filter((filename) => filename[0] !== '.' && filename[0] !== '_');
});
function CLI(usage, settings) {
- if (!(this instanceof CLI)) return new CLI(usage, settings);
-
if (process.argv.length < 3) {
this.abort(usage); // Abort will exit the process
}
@@ -22,6 +23,7 @@ function CLI(usage, settings) {
this.usage = usage;
this.optional = {};
this.items = [];
+ this.test = false;
for (const argName of settings.arrayArgs) {
this.optional[argName] = [];
@@ -34,7 +36,7 @@ function CLI(usage, settings) {
if (arg === '--') {
// Only items can follow --
mode = 'item';
- } else if ('both' === mode && arg[0] === '-') {
+ } else if (mode === 'both' && arg[0] === '-') {
// Optional arguments declaration
if (arg[1] === '-') {
@@ -61,6 +63,8 @@ function CLI(usage, settings) {
// The next value can be either an option or an item
mode = 'both';
+ } else if (arg === 'test') {
+ this.test = true;
} else if (['both', 'item'].includes(mode)) {
// item arguments
this.items.push(arg);
@@ -83,9 +87,15 @@ CLI.prototype.abort = function(msg) {
CLI.prototype.benchmarks = function() {
const paths = [];
+ if (this.items.includes('all')) {
+ this.items = Object.keys(benchmarks);
+ }
+
for (const category of this.items) {
- if (benchmarks[category] === undefined)
- continue;
+ if (benchmarks[category] === undefined) {
+ console.error(`The "${category}" category does not exist.`);
+ process.exit(1);
+ }
for (const scripts of benchmarks[category]) {
if (this.shouldSkip(scripts)) continue;