From 3a384261b18af97b7e7ab91c39a5b22983082939 Mon Sep 17 00:00:00 2001 From: Jairus Date: Mon, 15 Jul 2024 21:01:38 -0700 Subject: [PATCH] push failed to the end --- assembly/__tests__/sleep.spec.ts | 2 +- reporters/log/index.ts | 24 +++++++++++++++++++++--- 2 files changed, 22 insertions(+), 4 deletions(-) diff --git a/assembly/__tests__/sleep.spec.ts b/assembly/__tests__/sleep.spec.ts index 9f77776..106deb0 100644 --- a/assembly/__tests__/sleep.spec.ts +++ b/assembly/__tests__/sleep.spec.ts @@ -14,7 +14,7 @@ describe("Should sleep", () => { test("100ms", () => { const start = Date.now(); sleep(100); - expect(Date.now() - start).toBeGreaterOrEqualTo(100); + expect(Date.now() - start).toBeGreaterOrEqualTo(1010); }); test("1s", () => { const start = Date.now(); diff --git a/reporters/log/index.ts b/reporters/log/index.ts index 6e9ff16..a6ba2b8 100644 --- a/reporters/log/index.ts +++ b/reporters/log/index.ts @@ -17,8 +17,8 @@ class LogReporter { private passedTests: i32 = 0; private failedTests: i32 = 0; - private passedMatches: i32 = 0; - private failedMatches: i32 = 0; + private failed: SuiteReport[] = []; + private initialized: boolean = false; constructor(logs: Report[]) { @@ -71,7 +71,7 @@ class LogReporter { reportLog(log: Report): string { // @ts-ignore let out: string = ""; - + out += `${rainbow.bgCyanBright(" FILE ")} ${rainbow.dimMk(log.file)} ${rainbow.italicMk(log.time.format())}\n\n`; for (let i = 0; i < log.groups.length; i++) { @@ -102,6 +102,7 @@ class LogReporter { for (let i = 0; i < suite.tests.length; i++) { const _test = unchecked(suite.tests[i]); if (_test.verdict != Verdict.Ok) { + if (!this.failed.includes(suite)) this.failed.push(suite); out += this.reportTest(_test); } } @@ -132,8 +133,25 @@ class LogReporter { this.depthDec(); return out; } + errors(): string { + let out: string = ""; + if (!this.failed.length) return ""; + out += rainbow.dimMk("----------------- [FAILED] -------------------\n\n"); + for (let i = 0; i < this.failed.length; i++) { + const suite = unchecked(this.failed[i]); + out += `${rainbow.bgRed(" FAIL ")} ${rainbow.dimMk(suite.description)} ${rainbow.italicMk(suite.time.format())}\n\n`; + for (let i = 0; i < suite.tests.length; i++) { + const _test = unchecked(suite.tests[i]); + if (_test.verdict != Verdict.Ok) { + out += this.reportTest(_test); + } + } + } + return out; + } summarize(): string { let out: string = ""; + out += this.errors(); out += rainbow.dimMk("----------------- [RESULTS] ------------------\n\n"); const filesResult = new Result("Files: ", this.failedFiles, this.passedFiles);