tstest/ts/tstest.classes.tap.combinator.ts

49 lines
1.3 KiB
TypeScript

// ============
// combines different tap test files to an overall result
// ============
import * as plugins from './tstest.plugins.js';
import { coloredString as cs } from '@push.rocks/consolecolor';
import { TapParser } from './tstest.classes.tap.parser.js';
import * as logPrefixes from './tstest.logprefixes.js';
import { TsTestLogger } from './tstest.logging.js';
export class TapCombinator {
tapParserStore: TapParser[] = [];
skippedFiles: string[] = [];
private logger: TsTestLogger;
constructor(logger: TsTestLogger) {
this.logger = logger;
}
addTapParser(tapParserArg: TapParser) {
this.tapParserStore.push(tapParserArg);
}
addSkippedFile(filename: string) {
this.skippedFiles.push(filename);
}
evaluate() {
// Call the logger's summary method with skipped files
this.logger.summary(this.skippedFiles);
// Check for failures
let failGlobal = false;
for (const tapParser of this.tapParserStore) {
if (!tapParser.expectedTests ||
tapParser.expectedTests !== tapParser.receivedTests ||
tapParser.getErrorTests().length > 0) {
failGlobal = true;
break;
}
}
// Exit with error code if tests failed
if (failGlobal) {
process.exit(1);
}
}
}