From 212e16234193dc3e5253306ce72033c6db13c04f Mon Sep 17 00:00:00 2001 From: Jairus Date: Mon, 24 Jun 2024 08:52:28 -0700 Subject: [PATCH] fix: globals --- assembly/coverage.ts | 31 +++++++++++++++++++++++++++++ assembly/index.ts | 26 ++++++++++--------------- assembly/src/coverage.ts | 39 ------------------------------------- assembly/src/expectation.ts | 2 +- assembly/src/group.ts | 2 +- assembly/test.ts | 2 +- coverage.ts | 1 - transform/lib/index.js | 30 +++++++++++++--------------- transform/src/index.ts | 34 +++++++++++++++----------------- 9 files changed, 73 insertions(+), 94 deletions(-) create mode 100644 assembly/coverage.ts delete mode 100644 assembly/src/coverage.ts delete mode 100644 coverage.ts diff --git a/assembly/coverage.ts b/assembly/coverage.ts new file mode 100644 index 0000000..8654039 --- /dev/null +++ b/assembly/coverage.ts @@ -0,0 +1,31 @@ +export class CoverPoint { + public file: string = ""; + public hash: string = ""; + public line: i32 = 0; + public column: i32 = 0; + public type!: string; + public executed: boolean = false; +} + +export class Coverage { + public hashes: Map = new Map(); + public points: i32 = 0; + static SN: Coverage = new Coverage(); +} + +export function __REGISTER(point: CoverPoint): void { + Coverage.SN.points++; + Coverage.SN.hashes.set(point.hash, point); +} + +export function __COVER(hash: string): void { + if (Coverage.SN.hashes.has(hash)) Coverage.SN.hashes.delete(hash); +} + +export function __HASHES(): Map { + return Coverage.SN.hashes; +} + +export function __POINTS(): i32 { + return Coverage.SN.points; +} \ No newline at end of file diff --git a/assembly/index.ts b/assembly/index.ts index e741192..84bf09b 100644 --- a/assembly/index.ts +++ b/assembly/index.ts @@ -3,7 +3,7 @@ import { TestGroup } from "./src/group"; import { Expectation } from "./src/expectation"; import { formatTime } from "./util"; import { stringify } from "as-console/assembly"; -import { __COVERAGE } from "./src/coverage"; +import { __COVER, __HASHES, __POINTS } from "as-test/assembly/coverage"; /** * Enumeration representing the verdict of a test case. @@ -21,12 +21,9 @@ let groups: TestGroup[] = []; let before_all_callback: (() => void) | null = null; let after_all_callback: (() => void) | null = null; -// @ts-ignore -@global let before_each_callback: (() => void) | null = null; -// @ts-ignore -@global let after_each_callback: (() => void) | null = null; -// @ts-ignore -@global let __test_options!: RunOptions; +export let before_each_callback: (() => void) | null = null; +export let after_each_callback: (() => void) | null = null; +let __test_options!: RunOptions; /** * Creates a test group containing multiple test cases. @@ -252,7 +249,7 @@ export function run(options: RunOptions = new RunOptions()): void { console.log(txt); } - const report = suite.report(); + const report = suite.getLogs(); if (report) { if (report.passed) console.log(report.passed!); if (report.failed) failed_suite_logs += report.failed!; @@ -266,14 +263,10 @@ export function run(options: RunOptions = new RunOptions()): void { console.log(failed_suite_logs); } - // @ts-ignore - const cv = __COVERAGE_STATS(); - const COVER_POINTS = cv.hashs; - const COVER_TOTAL_POINTS = cv.points; - if (options.coverage && COVER_POINTS.size) { + if (options.coverage && __HASHES().size) { console.log(rainbow.dimMk("----------------- [COVERAGE] -----------------\n")); - const points = COVER_POINTS.values(); + const points = __HASHES().values(); for (let i = 0; i < points.length; i++) { const point = unchecked(points[i]); @@ -285,10 +278,11 @@ export function run(options: RunOptions = new RunOptions()): void { console.log(rainbow.dimMk("----------------- [RESULTS] ------------------\n")); const ms = performance.now() - start; console.log(rainbow.boldMk("Test Suites: ") + (failed ? rainbow.boldMk(rainbow.red(failed.toString() + " failed")) : rainbow.boldMk(rainbow.green("0 failed"))) + ", " + suites.toString() + " total"); - console.log(rainbow.boldMk("Tests: ") + (failed_tests ? rainbow.boldMk(rainbow.red(failed_tests.toString() + " failed")) : rainbow.boldMk(rainbow.green("0 failed"))) + ", " + COVER_TOTAL_POINTS.toString() + " total"); - if (options.coverage) console.log(rainbow.boldMk("Coverage: ") + (COVER_POINTS.size ? rainbow.boldMk(rainbow.red(COVER_POINTS.size.toString() + " failed")) : rainbow.boldMk(rainbow.green("0 failed"))) + ", " + COVER_TOTAL_POINTS.toString() + " total"); + console.log(rainbow.boldMk("Tests: ") + (failed_tests ? rainbow.boldMk(rainbow.red(failed_tests.toString() + " failed")) : rainbow.boldMk(rainbow.green("0 failed"))) + ", " + tests.toString() + " total"); + if (options.coverage) console.log(rainbow.boldMk("Coverage: ") + (__HASHES().size ? rainbow.boldMk(rainbow.red(__HASHES().size.toString() + " failed")) : rainbow.boldMk(rainbow.green("0 failed"))) + ", " + __POINTS().toString() + " total"); console.log(rainbow.boldMk("Snapshots: ") + "0 total"); console.log(rainbow.boldMk("Time: ") + formatTime(ms)); + __COVER("joe mom") if (failed) { process.exit(1); } diff --git a/assembly/src/coverage.ts b/assembly/src/coverage.ts deleted file mode 100644 index 0f49a59..0000000 --- a/assembly/src/coverage.ts +++ /dev/null @@ -1,39 +0,0 @@ -export namespace __COVERTYPES { - export const Function = "Function"; - export const Expression = "Expression"; - export const Block = "Block"; -} - -export class __COVERPOINT { - public file: string = ""; - public hash: string = ""; - public line: i32 = 0; - public column: i32 = 0; - public type!: string; - public executed: boolean = false; -} - -export class __COVERAGE { - public hashs: Map = new Map(); - public points: i32 = 0; - static SN: __COVERAGE | null = null; - static init(): __COVERAGE { - if (!__COVERAGE.SN) { - __COVERAGE.SN = new __COVERAGE(); - } - return __COVERAGE.SN!; - } -} - -export function __COVERAGE_STATS(): __COVERAGE { - return __COVERAGE.init(); -} - -export function __REGISTER(point: __COVERPOINT): void { - __COVERAGE.init().points++; - __COVERAGE.init().hashs.set(point.hash, point); -} - -export function __COVER(hash: string): void { - __COVERAGE.init().hashs.delete(hash); -} \ No newline at end of file diff --git a/assembly/src/expectation.ts b/assembly/src/expectation.ts index d8e7c40..5852cd6 100644 --- a/assembly/src/expectation.ts +++ b/assembly/src/expectation.ts @@ -1,7 +1,7 @@ import { rainbow } from "as-rainbow"; import { diff, visualize } from "../util"; import { Node } from "./node"; -import { Verdict } from ".."; +import { Verdict, after_each_callback, before_each_callback } from ".."; export class Expectation extends Node { public verdict: Verdict = Verdict.Unreachable; diff --git a/assembly/src/group.ts b/assembly/src/group.ts index 7d90f8e..5dab5dd 100644 --- a/assembly/src/group.ts +++ b/assembly/src/group.ts @@ -21,7 +21,7 @@ export class TestGroup { this.results.push(test); } - report(): ReportLogs | null { + getLogs(): ReportLogs { let passed_logs = ""; let failed_logs = ""; for (let i = 0; i < this.results.length; i++) { diff --git a/assembly/test.ts b/assembly/test.ts index 9c747bb..dc674f6 100644 --- a/assembly/test.ts +++ b/assembly/test.ts @@ -63,7 +63,7 @@ describe("Array manipulation", () => { }); }); -export function foo(): void { +function foo(): void { } diff --git a/coverage.ts b/coverage.ts deleted file mode 100644 index 606975e..0000000 --- a/coverage.ts +++ /dev/null @@ -1 +0,0 @@ -export * from "./assembly/src/coverage"; \ No newline at end of file diff --git a/transform/lib/index.js b/transform/lib/index.js index a83f539..6c80343 100644 --- a/transform/lib/index.js +++ b/transform/lib/index.js @@ -1,7 +1,7 @@ import { Transform } from "assemblyscript/dist/transform.js"; -import { Source, Tokenizer, BlockStatement, ExpressionStatement, Node } from "assemblyscript/dist/assemblyscript.js"; +import { Source, BlockStatement, ExpressionStatement, Node, Tokenizer } from "assemblyscript/dist/assemblyscript.js"; import { BaseVisitor, SimpleParser } from "visitor-as/dist/index.js"; -import { isStdlib, toString } from "visitor-as/dist/utils.js"; +import { isStdlib } from "visitor-as/dist/utils.js"; import { RangeTransform } from "visitor-as/dist/transformRange.js"; let ENABLED = false; var CoverType; @@ -51,7 +51,7 @@ class CoverageTransform extends BaseVisitor { hash: "${point.hash}", line: ${point.line}, column: ${point.column}, - type: __COVERTYPES.Expression, + type: "Expression", executed: false });`); replacer.visit(registerStmt); @@ -91,7 +91,7 @@ class CoverageTransform extends BaseVisitor { hash: "${point.hash}", line: ${point.line}, column: ${point.column}, - type: __COVERTYPES.Function, + type: "Function", executed: false })`); replacer.visit(registerStmt); @@ -129,7 +129,7 @@ class CoverageTransform extends BaseVisitor { hash: "${point.hash}", line: ${point.line}, column: ${point.column}, - type: __COVERTYPES.Expression, + type: "Expression", executed: false })`); replacer.visit(registerStmt); @@ -167,7 +167,7 @@ class CoverageTransform extends BaseVisitor { hash: "${point.hash}", line: ${point.line}, column: ${point.column}, - type: __COVERTYPES.Function, + type: "Function", executed: false })`); replacer.visit(registerStmt); @@ -227,7 +227,7 @@ class CoverageTransform extends BaseVisitor { hash: "${point.hash}", line: ${point.line}, column: ${point.column}, - type: __COVERTYPES.Expression, + type: "Expression", executed: false })`); replacer.visit(registerStmt); @@ -253,7 +253,7 @@ class CoverageTransform extends BaseVisitor { hash: "${point.hash}", line: ${point.line}, column: ${point.column}, - type: __COVERTYPES.Expression, + type: "Expression", executed: false })`); replacer.visit(registerStmt); @@ -311,7 +311,7 @@ class CoverageTransform extends BaseVisitor { hash: "${point.hash}", line: ${point.line}, column: ${point.column}, - type: __COVERTYPES.Expression, + type: "Expression", executed: false })`); replacer.visit(registerStmt); @@ -335,7 +335,7 @@ class CoverageTransform extends BaseVisitor { hash: "${point.hash}", line: ${point.line}, column: ${point.column}, - type: __COVERTYPES.Expression, + type: "Expression", executed: false })`); replacer.visit(registerStmt); @@ -366,7 +366,7 @@ class CoverageTransform extends BaseVisitor { hash: "${point.hash}", line: ${point.line}, column: ${point.column}, - type: __COVERTYPES.Block, + type: "Block", executed: false })`); replacer.visit(registerStmt); @@ -396,7 +396,7 @@ class CoverageTransform extends BaseVisitor { hash: "${point.hash}", line: ${point.line}, column: ${point.column}, - type: __COVERTYPES.Block, + type: "Block", executed: false })`); replacer.visit(registerStmt); @@ -463,14 +463,10 @@ export default class Transformer extends Transform { transformer.visit(source); if (transformer.globalStatements.length) { source.statements.unshift(...transformer.globalStatements); - const tokenizer = new Tokenizer(new Source(0 /* SourceKind.User */, source.normalizedPath, "import { __REGISTER, __COVER, __COVERTYPES, __COVERAGE_STATS } from \"as-test/coverage\";")); + const tokenizer = new Tokenizer(new Source(0 /* SourceKind.User */, source.normalizedPath, "import { __REGISTER, __COVER } from \"as-test/assembly/coverage\";")); parser.currentSource = tokenizer.source; source.statements.unshift(parser.parseTopLevelStatement(tokenizer)); parser.currentSource = source; - // @ts-ignore - if (process && process.env["TEST_DEBUG"]?.toString().toLowerCase() == "all") { - console.log(toString(source)); - } } } transformer.globalStatements = []; diff --git a/transform/src/index.ts b/transform/src/index.ts index bcd4038..1470bde 100644 --- a/transform/src/index.ts +++ b/transform/src/index.ts @@ -4,7 +4,6 @@ import { Source, SourceKind, Statement, - Tokenizer, Token, BinaryExpression, @@ -22,10 +21,12 @@ import { NodeKind, ArrowKind, Node, - ObjectLiteralExpression + ObjectLiteralExpression, + Tokenizer } from "assemblyscript/dist/assemblyscript.js"; + import { BaseVisitor, SimpleParser } from "visitor-as/dist/index.js"; -import { isStdlib, toString } from "visitor-as/dist/utils.js"; +import { isStdlib } from "visitor-as/dist/utils.js"; import { RangeTransform } from "visitor-as/dist/transformRange.js"; let ENABLED = false; @@ -79,7 +80,7 @@ class CoverageTransform extends BaseVisitor { hash: "${point.hash}", line: ${point.line}, column: ${point.column}, - type: __COVERTYPES.Expression, + type: "Expression", executed: false });` ); @@ -130,7 +131,7 @@ class CoverageTransform extends BaseVisitor { hash: "${point.hash}", line: ${point.line}, column: ${point.column}, - type: __COVERTYPES.Function, + type: "Function", executed: false })` ); @@ -178,7 +179,7 @@ class CoverageTransform extends BaseVisitor { hash: "${point.hash}", line: ${point.line}, column: ${point.column}, - type: __COVERTYPES.Expression, + type: "Expression", executed: false })` ); @@ -226,7 +227,7 @@ class CoverageTransform extends BaseVisitor { hash: "${point.hash}", line: ${point.line}, column: ${point.column}, - type: __COVERTYPES.Function, + type: "Function", executed: false })` ); @@ -305,7 +306,7 @@ class CoverageTransform extends BaseVisitor { hash: "${point.hash}", line: ${point.line}, column: ${point.column}, - type: __COVERTYPES.Expression, + type: "Expression", executed: false })` ); @@ -346,7 +347,7 @@ class CoverageTransform extends BaseVisitor { hash: "${point.hash}", line: ${point.line}, column: ${point.column}, - type: __COVERTYPES.Expression, + type: "Expression", executed: false })` ); @@ -415,7 +416,7 @@ class CoverageTransform extends BaseVisitor { hash: "${point.hash}", line: ${point.line}, column: ${point.column}, - type: __COVERTYPES.Expression, + type: "Expression", executed: false })` ); @@ -450,7 +451,7 @@ class CoverageTransform extends BaseVisitor { hash: "${point.hash}", line: ${point.line}, column: ${point.column}, - type: __COVERTYPES.Expression, + type: "Expression", executed: false })` ); @@ -491,7 +492,7 @@ class CoverageTransform extends BaseVisitor { hash: "${point.hash}", line: ${point.line}, column: ${point.column}, - type: __COVERTYPES.Block, + type: "Block", executed: false })` ); @@ -532,7 +533,7 @@ class CoverageTransform extends BaseVisitor { hash: "${point.hash}", line: ${point.line}, column: ${point.column}, - type: __COVERTYPES.Block, + type: "Block", executed: false })` ); @@ -576,6 +577,7 @@ export default class Transformer extends Transform { } } if (!ENABLED) return; + // Create new transform const transformer = new CoverageTransform(); @@ -607,16 +609,12 @@ export default class Transformer extends Transform { new Source( SourceKind.User, source.normalizedPath, - "import { __REGISTER, __COVER, __COVERTYPES, __COVERAGE_STATS } from \"as-test/coverage\";" + "import { __REGISTER, __COVER } from \"as-test/assembly/coverage\";" ) ); parser.currentSource = tokenizer.source; source.statements.unshift(parser.parseTopLevelStatement(tokenizer)!); parser.currentSource = source; - // @ts-ignore - if (process && process.env["TEST_DEBUG"]?.toString().toLowerCase() == "all") { - console.log(toString(source)); - } } } transformer.globalStatements = [];