| 'use strict'; |
| |
| const { readdirSync } = require('fs'); |
| const { spawnSync } = require('child_process'); |
| const path = require('path'); |
| |
| let benchmarks = []; |
| |
| if (process.env.npm_config_benchmarks) { |
| benchmarks = process.env.npm_config_benchmarks |
| .split(';') |
| .map((item) => (item + '.js')); |
| } |
| |
| // Run each file in this directory or the list given on the command line except |
| // index.js as a Node.js process. |
| (benchmarks.length > 0 ? benchmarks : readdirSync(__dirname)) |
| .filter((item) => (item !== 'index.js' && item.match(/\.js$/))) |
| .map((item) => path.join(__dirname, item)) |
| .forEach((item) => { |
| const child = spawnSync(process.execPath, [ |
| '--expose-gc', |
| item |
| ], { stdio: 'inherit' }); |
| if (child.signal) { |
| console.error(`Tests aborted with ${child.signal}`); |
| process.exitCode = 1; |
| } else { |
| process.exitCode = child.status; |
| } |
| if (child.status !== 0) { |
| process.exit(process.exitCode); |
| } |
| }); |