@tapjs/run
Version:
Command-line interface for the node-tap runner
38 lines • 1.72 kB
JavaScript
import { execArgv, importLoaders, loaderFallbacks, loaders, } from '@tapjs/test';
import module from 'node:module';
import { resolveImportSync } from 'resolve-import/resolve-import-sync';
import { argvToNodeOptions, nodeOptionsToArgv } from 'node-options-to-argv';
// if we have Module.register(), then use --import wherever possible
const useImport = !!module.register;
const testModule = String(resolveImportSync('@tapjs/test', import.meta.url));
const resolveLoaders = (loaders) => Promise.all(loaders.map(async (loader) => String(resolveImportSync(loader, testModule))));
const importScripts = await resolveLoaders(useImport ? importLoaders : []);
const loaderScripts = await resolveLoaders(useImport ? loaders : loaderFallbacks);
const pi = useImport ?
`--import=${resolveImportSync('@tapjs/processinfo/import', import.meta.url)}`
: `--loader=${resolveImportSync('@tapjs/processinfo/loader', import.meta.url)}`;
const always = [
...importScripts.map(l => `--import=${l}`),
...loaderScripts.map(l => `--loader=${l}`),
...(useImport && !loaderScripts.length ? [] : ['--no-warnings']),
'--enable-source-maps',
// ensure this always comes last in the list
pi,
];
// used by the `tap node-options` command
// include the current NODE_OPTIONS and execArgv, and remove any
// duplicates.
export const nodeOptions = (config) => argvToNodeOptions([
...new Set([
...process.execArgv,
...nodeOptionsToArgv(process.env.NODE_OPTIONS ?? ''),
...always,
...execArgv(config.values),
]),
]);
export const testArgv = (config) => [
...always,
...execArgv(config.values),
...(config.get('node-arg') || []),
];
//# sourceMappingURL=test-argv.js.map