baset-cli
Version:
CLI for BaseT project.
79 lines • 3.21 kB
JavaScript
;
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
const baset_core_1 = require("baset-core");
const glob_promise_1 = __importDefault(require("glob-promise"));
const TAP_1 = require("../TAP");
function filterNodeModules(filePath) {
return !filePath.includes('node_modules');
}
const testCommand = {
command: 'test',
aliases: ['$0', 't'],
describe: 'Creating temp baseline and comparing it to existing one',
builder: {
specs: {
alias: 's',
type: 'string',
describe: 'Glob pattern for spec files',
default: '**/*.spec.js',
},
bases: {
alias: 'b',
type: 'string',
describe: 'Glob pattern for baseline files',
default: '**/*.base',
},
reporter: {
alias: 'r',
type: 'string',
describe: 'TAP reporter to use, `false` for plain output',
default: 'tap-diff',
},
isolateContext: {
type: 'boolean',
describe: 'Run each test in isolated context. ATTENTION: this will slow down your tests',
default: false,
},
},
handler: (argv) => __awaiter(this, void 0, void 0, function* () {
let isSucceeded = true;
const [allSpecs, allBaselines] = yield Promise.all([glob_promise_1.default(argv.specs), glob_promise_1.default(argv.bases)]);
const specs = allSpecs.filter(filterNodeModules);
const baselines = allBaselines.filter(filterNodeModules);
let reporterIsSkipped;
try {
reporterIsSkipped = JSON.parse(argv.reporter) === false;
}
catch (err) {
reporterIsSkipped = !argv.reporter;
}
try {
const outStream = (reporterIsSkipped)
? process.stdout
: require(argv.reporter)();
if (!reporterIsSkipped)
outStream.pipe(process.stdout);
const { finish } = TAP_1.getTapStream(specs.length, outStream);
const tester = new baset_core_1.Tester(argv.plugins, argv.options, argv.isolateContext);
const results = yield finish(() => tester.test(specs, baselines));
isSucceeded = !(results.failed) && !(results.crashed);
}
catch (err) {
isSucceeded = false;
console.error(err);
}
process.exit(isSucceeded ? 0 : 1);
}),
};
module.exports = testCommand;
//# sourceMappingURL=test.js.map