Bones/node_modules/reflect-metadata/test/harness.ts

40 lines
1.2 KiB
TypeScript
Raw Normal View History

2017-05-17 13:45:25 -04:00
export interface TestResults {
passed: string[];
failed: [string, any][];
}
export function runTests(fixture: any): TestResults {
let results: TestResults = { passed: [], failed: [] };
for (let testName in fixture) {
let test = fixture[testName];
if (typeof test === "function") {
try {
test();
results.passed.push(testName);
}
catch (e) {
results.failed.push([testName, e]);
}
}
}
return results;
}
export function printResults(results: TestResults): void {
for (let [testName, error] of results.failed) {
let message = "stack" in error ? error.stack : String(error);
console.error(`${testName} failed.\n${message}`);
}
let passedCount = results.passed.length;
let failedCount = results.failed.length;
let totalCount = passedCount + failedCount;
let message = `Run ${failedCount > 0 ? "failed" : "succeeded" }: passed: ${passedCount}, failed: ${failedCount}, total: ${totalCount}.`;
if (results.failed.length) {
console.error(message);
}
else {
console.log(message);
}
}