mocha
Version:
Classic, reliable, trusted test framework for Node.js and the browser
56 lines (43 loc) • 1.25 kB
JavaScript
const toArray = (value) => (Array.isArray(value) ? value : [value]);
const unparseOption = (name, value) => {
if (value === false) {
return [`--no-${name}`];
}
if (value === true) {
return [`--${name}`];
}
if (value == null) {
return [];
}
if (Array.isArray(value)) {
return value.flatMap((item) => unparseOption(name, item));
}
if (typeof value === "object") {
return Object.entries(value).flatMap(([key, item]) =>
unparseOption(`${name}.${key}`, item),
);
}
if (name.includes(".")) {
return [`--${name}=${String(value)}`];
}
return [`--${name}`, String(value)];
};
const unparseMochaArgs = (opts) => {
const positionals = opts._ == null ? [] : toArray(opts._).map(String);
const options = Object.entries(opts).flatMap(([name, value]) =>
name === "_" ? [] : unparseOption(name, value),
);
return positionals.concat(options);
};
const unparseNodeFlags = (opts) => {
return Object.entries(opts).flatMap(([name, value]) => {
if (value === true) {
return [`--${name}`];
}
if (value === false || value == null) {
return [];
}
return toArray(value).map((item) => `--${name}=${item}`);
});
};
export { unparseMochaArgs, unparseNodeFlags };