as-test 0.2.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (54) hide show
  1. package/.github/workflows/as-test.yml +3 -0
  2. package/CHANGELOG.md +4 -1
  3. package/README.md +73 -67
  4. package/as-test.config.json +7 -10
  5. package/assembly/__tests__/array.spec.ts +19 -0
  6. package/assembly/__tests__/math.spec.ts +16 -0
  7. package/assembly/__tests__/sleep.spec.ts +28 -0
  8. package/assembly/index.ts +181 -165
  9. package/assembly/src/expectation.ts +119 -112
  10. package/assembly/src/log.ts +19 -0
  11. package/assembly/src/suite.ts +99 -0
  12. package/assembly/src/tests.ts +10 -0
  13. package/assembly/tsconfig.json +1 -1
  14. package/assembly/util/helpers.ts +0 -33
  15. package/assembly/util/term.ts +55 -0
  16. package/assets/img/download.png +0 -0
  17. package/bin/about.js +135 -0
  18. package/bin/build.js +72 -131
  19. package/bin/index.js +70 -112
  20. package/bin/init.js +211 -39
  21. package/bin/reporter.js +1 -0
  22. package/bin/run.js +226 -68
  23. package/bin/types.js +25 -31
  24. package/bin/util.js +44 -20
  25. package/cli/build.ts +70 -109
  26. package/cli/index.ts +148 -159
  27. package/cli/init.ts +235 -34
  28. package/cli/reporter.ts +1 -0
  29. package/cli/run.ts +266 -57
  30. package/cli/types.ts +6 -11
  31. package/cli/util.ts +35 -0
  32. package/package.json +6 -2
  33. package/run/package.json +27 -0
  34. package/tests/array.run.js +7 -0
  35. package/tests/math.run.js +7 -0
  36. package/tests/sleep.run.js +7 -0
  37. package/transform/lib/coverage.js +325 -319
  38. package/transform/lib/index.js +51 -31
  39. package/transform/lib/index.js.map +1 -1
  40. package/transform/lib/mock.js +61 -55
  41. package/transform/lib/mock.js.map +1 -1
  42. package/transform/package.json +1 -1
  43. package/transform/src/index.ts +22 -3
  44. package/transform/src/mock.ts +1 -1
  45. package/asconfig.json +0 -31
  46. package/assembly/__tests__/example.spec.ts +0 -79
  47. package/assembly/reporters/tap.ts +0 -30
  48. package/assembly/src/group.ts +0 -44
  49. package/assembly/src/node.ts +0 -13
  50. package/test.config.json +0 -0
  51. package/tests/test.tap +0 -14
  52. package/unision +0 -38
  53. package/unision.pub +0 -1
  54. package/utils.ts +0 -1
@@ -1,39 +1,59 @@
1
1
  import { Transform } from "assemblyscript/dist/transform.js";
2
- import { Source, Tokenizer, } from "assemblyscript/dist/assemblyscript.js";
2
+ import { Node, Source, Tokenizer } from "assemblyscript/dist/assemblyscript.js";
3
3
  import { isStdlib } from "visitor-as/dist/utils.js";
4
4
  import { CoverageTransform } from "./coverage.js";
5
5
  import { MockTransform } from "./mock.js";
6
6
  export default class Transformer extends Transform {
7
- afterParse(parser) {
8
- const mock = new MockTransform();
9
- const coverage = new CoverageTransform();
10
- const sources = parser.sources
11
- .filter((source) => !isStdlib(source))
12
- .sort((_a, _b) => {
13
- const a = _a.internalPath;
14
- const b = _b.internalPath;
15
- if (a[0] === "~" && b[0] !== "~") {
16
- return -1;
17
- }
18
- else if (a[0] !== "~" && b[0] === "~") {
19
- return 1;
20
- }
21
- else {
22
- return 0;
23
- }
24
- });
25
- for (const source of sources) {
26
- mock.visit(source);
27
- coverage.visit(source);
28
- if (coverage.globalStatements.length) {
29
- source.statements.unshift(...coverage.globalStatements);
30
- const tokenizer = new Tokenizer(new Source(0, source.normalizedPath, 'import { __REGISTER, __COVER } from "as-test/assembly/coverage";'));
31
- parser.currentSource = tokenizer.source;
32
- source.statements.unshift(parser.parseTopLevelStatement(tokenizer));
33
- parser.currentSource = source;
34
- }
7
+ afterParse(parser) {
8
+ const mock = new MockTransform();
9
+ const coverage = new CoverageTransform();
10
+ const sources = parser.sources
11
+ .filter((source) => !isStdlib(source))
12
+ .sort((_a, _b) => {
13
+ const a = _a.internalPath;
14
+ const b = _b.internalPath;
15
+ if (a[0] === "~" && b[0] !== "~") {
16
+ return -1;
17
+ } else if (a[0] !== "~" && b[0] === "~") {
18
+ return 1;
19
+ } else {
20
+ return 0;
35
21
  }
36
- coverage.globalStatements = [];
22
+ });
23
+ const entryFile = sources.find((v) => v.sourceKind == 1).simplePath;
24
+ for (const source of sources) {
25
+ const node = Node.createVariableStatement(
26
+ null,
27
+ [
28
+ Node.createVariableDeclaration(
29
+ Node.createIdentifierExpression("ENTRY_FILE", source.range),
30
+ null,
31
+ 8,
32
+ null,
33
+ Node.createStringLiteralExpression(entryFile + ".ts", source.range),
34
+ source.range,
35
+ ),
36
+ ],
37
+ source.range,
38
+ );
39
+ source.statements.unshift(node);
40
+ mock.visit(source);
41
+ coverage.visit(source);
42
+ if (coverage.globalStatements.length) {
43
+ source.statements.unshift(...coverage.globalStatements);
44
+ const tokenizer = new Tokenizer(
45
+ new Source(
46
+ 0,
47
+ source.normalizedPath,
48
+ 'import { __REGISTER, __COVER } from "as-test/assembly/coverage";',
49
+ ),
50
+ );
51
+ parser.currentSource = tokenizer.source;
52
+ source.statements.unshift(parser.parseTopLevelStatement(tokenizer));
53
+ parser.currentSource = source;
54
+ }
37
55
  }
56
+ coverage.globalStatements = [];
57
+ }
38
58
  }
39
- //# sourceMappingURL=index.js.map
59
+ //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,kCAAkC,CAAC;AAC7D,OAAO,EAEL,MAAM,EAEN,SAAS,GACV,MAAM,uCAAuC,CAAC;AAE/C,OAAO,EAAE,QAAQ,EAAY,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAE1C,MAAM,CAAC,OAAO,OAAO,WAAY,SAAQ,SAAS;IAEhD,UAAU,CAAC,MAAc;QAEvB,MAAM,IAAI,GAAG,IAAI,aAAa,EAAE,CAAC;QACjC,MAAM,QAAQ,GAAG,IAAI,iBAAiB,EAAE,CAAC;QAGzC,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO;aAC3B,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;aACrC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE;YACf,MAAM,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC;YAC1B,MAAM,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC;YAC1B,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;gBACjC,OAAO,CAAC,CAAC,CAAC;YACZ,CAAC;iBAAM,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;gBACxC,OAAO,CAAC,CAAC;YACX,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,CAAC;YACX,CAAC;QACH,CAAC,CAAC,CAAC;QAGL,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YACnB,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YACvB,IAAI,QAAQ,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC;gBACrC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,QAAQ,CAAC,gBAAgB,CAAC,CAAC;gBACxD,MAAM,SAAS,GAAG,IAAI,SAAS,CAC7B,IAAI,MAAM,IAER,MAAM,CAAC,cAAc,EACrB,kEAAkE,CACnE,CACF,CAAC;gBACF,MAAM,CAAC,aAAa,GAAG,SAAS,CAAC,MAAM,CAAC;gBACxC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,sBAAsB,CAAC,SAAS,CAAE,CAAC,CAAC;gBACrE,MAAM,CAAC,aAAa,GAAG,MAAM,CAAC;YAChC,CAAC;QACH,CAAC;QACD,QAAQ,CAAC,gBAAgB,GAAG,EAAE,CAAC;IACjC,CAAC;CACF"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,kCAAkC,CAAC;AAC7D,OAAO,EAEL,IAAI,EAGJ,MAAM,EACN,SAAS,EACV,MAAM,uCAAuC,CAAC;AAE/C,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAE1C,MAAM,CAAC,OAAO,OAAO,WAAY,SAAQ,SAAS;IAEhD,UAAU,CAAC,MAAc;QAEvB,MAAM,IAAI,GAAG,IAAI,aAAa,EAAE,CAAC;QACjC,MAAM,QAAQ,GAAG,IAAI,iBAAiB,EAAE,CAAC;QAGzC,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO;aAC3B,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;aACrC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE;YACf,MAAM,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC;YAC1B,MAAM,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC;YAC1B,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;gBACjC,OAAO,CAAC,CAAC,CAAC;YACZ,CAAC;iBAAM,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;gBACxC,OAAO,CAAC,CAAC;YACX,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,CAAC;YACX,CAAC;QACH,CAAC,CAAC,CAAC;QACL,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAC5B,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,KAAwB,CAC5C,CAAC,UAAU,CAAC;QAEb,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,MAAM,IAAI,GAAG,IAAI,CAAC,uBAAuB,CACvC,IAAI,EACJ;gBACE,IAAI,CAAC,yBAAyB,CAC5B,IAAI,CAAC,0BAA0B,CAAC,YAAY,EAAE,MAAM,CAAC,KAAK,CAAC,EAC3D,IAAI,KAEJ,IAAI,EACJ,IAAI,CAAC,6BAA6B,CAAC,SAAS,GAAG,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,EACnE,MAAM,CAAC,KAAK,CACb;aACF,EACD,MAAM,CAAC,KAAK,CACb,CAAC;YACF,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAChC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YACnB,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YACvB,IAAI,QAAQ,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC;gBACrC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,QAAQ,CAAC,gBAAgB,CAAC,CAAC;gBACxD,MAAM,SAAS,GAAG,IAAI,SAAS,CAC7B,IAAI,MAAM,IAER,MAAM,CAAC,cAAc,EACrB,kEAAkE,CACnE,CACF,CAAC;gBACF,MAAM,CAAC,aAAa,GAAG,SAAS,CAAC,MAAM,CAAC;gBACxC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,sBAAsB,CAAC,SAAS,CAAE,CAAC,CAAC;gBACrE,MAAM,CAAC,aAAa,GAAG,MAAM,CAAC;YAChC,CAAC;QACH,CAAC;QACD,QAAQ,CAAC,gBAAgB,GAAG,EAAE,CAAC;IACjC,CAAC;CACF"}
@@ -1,62 +1,68 @@
1
- import { Node, } from "assemblyscript/dist/assemblyscript.js";
1
+ import { Node } from "assemblyscript/dist/assemblyscript.js";
2
2
  import { BaseVisitor } from "visitor-as/dist/index.js";
3
3
  import { isStdlib, toString } from "visitor-as/dist/utils.js";
4
4
  export class MockTransform extends BaseVisitor {
5
- currentSource;
6
- globalStatements = [];
7
- fn = new Map();
8
- mocked = new Set();
9
- visitCallExpression(node) {
10
- super.visitCallExpression(node);
11
- const name = toString(node.expression)
12
- .replaceAll(".", "_")
13
- .replaceAll("[", "_")
14
- .replaceAll("]", "_");
15
- if (this.mocked.has(name + "_mock")) {
16
- node.expression = Node.createIdentifierExpression(name + "_mock", node.expression.range);
17
- return;
18
- }
19
- if (name != "mockFn")
20
- return;
21
- const ov = node.args[0];
22
- const cb = node.args[1];
23
- const newName = ov.value
24
- .replaceAll(".", "_")
25
- .replaceAll("[", "_")
26
- .replaceAll("]", "_");
27
- const newFn = Node.createFunctionDeclaration(Node.createIdentifierExpression(newName + "_mock", cb.range), cb.declaration.decorators, 0, cb.declaration.typeParameters, cb.declaration.signature, cb.declaration.body, cb.declaration.arrowKind, cb.range);
28
- const stmts = this.currentSource.statements;
29
- let index = -1;
30
- for (let i = 0; i < stmts.length; i++) {
31
- const stmt = stmts[i];
32
- if (stmt.range.start != node.range.start)
33
- continue;
34
- index = i;
35
- break;
36
- }
37
- if (index === -1)
38
- return;
39
- stmts.splice(index, 1, newFn);
40
- this.mocked.add(newFn.name.text);
5
+ currentSource;
6
+ globalStatements = [];
7
+ fn = new Map();
8
+ mocked = new Set();
9
+ visitCallExpression(node) {
10
+ super.visitCallExpression(node);
11
+ const name = toString(node.expression)
12
+ .replaceAll(".", "_")
13
+ .replaceAll("[", "_")
14
+ .replaceAll("]", "_");
15
+ if (this.mocked.has(name + "_mock")) {
16
+ node.expression = Node.createIdentifierExpression(
17
+ name + "_mock",
18
+ node.expression.range,
19
+ );
20
+ return;
41
21
  }
42
- visitFunctionDeclaration(node, isDefault) {
43
- super.visitFunctionDeclaration(node, isDefault);
44
- const name = node.name.text;
45
- if (!name)
46
- return;
47
- this.fn.set(name, node);
22
+ if (name != "mockFn") return;
23
+ const ov = node.args[0];
24
+ const cb = node.args[1];
25
+ const newName = ov.value
26
+ .replaceAll(".", "_")
27
+ .replaceAll("[", "_")
28
+ .replaceAll("]", "_");
29
+ const newFn = Node.createFunctionDeclaration(
30
+ Node.createIdentifierExpression(newName + "_mock", cb.range),
31
+ cb.declaration.decorators,
32
+ 0,
33
+ cb.declaration.typeParameters,
34
+ cb.declaration.signature,
35
+ cb.declaration.body,
36
+ cb.declaration.arrowKind,
37
+ cb.range,
38
+ );
39
+ const stmts = this.currentSource.statements;
40
+ let index = -1;
41
+ for (let i = 0; i < stmts.length; i++) {
42
+ const stmt = stmts[i];
43
+ if (stmt.range.start != node.range.start) continue;
44
+ index = i;
45
+ break;
48
46
  }
49
- visitSource(node) {
50
- if (node.isLibrary || isStdlib(node)) {
51
- if (!node.normalizedPath.startsWith("~lib/as-test")) {
52
- console.log("Not Visiting: " + node.normalizedPath);
53
- return;
54
- }
55
- }
56
- console.log("Are Visiting: " + node.normalizedPath);
57
- this.mocked = new Set();
58
- this.currentSource = node;
59
- super.visitSource(node);
47
+ if (index === -1) return;
48
+ stmts.splice(index, 1, newFn);
49
+ this.mocked.add(newFn.name.text);
50
+ }
51
+ visitFunctionDeclaration(node, isDefault) {
52
+ super.visitFunctionDeclaration(node, isDefault);
53
+ const name = node.name.text;
54
+ if (!name) return;
55
+ this.fn.set(name, node);
56
+ }
57
+ visitSource(node) {
58
+ if (node.isLibrary || isStdlib(node)) {
59
+ if (!node.normalizedPath.startsWith("~lib/as-test")) {
60
+ return;
61
+ }
60
62
  }
63
+ this.mocked = new Set();
64
+ this.currentSource = node;
65
+ super.visitSource(node);
66
+ }
61
67
  }
62
- //# sourceMappingURL=mock.js.map
68
+ //# sourceMappingURL=mock.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"mock.js","sourceRoot":"","sources":["../src/mock.ts"],"names":[],"mappings":"AAAA,OAAO,EASL,IAAI,GAEL,MAAM,uCAAuC,CAAC;AAG/C,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAC9D,MAAM,OAAO,aAAc,SAAQ,WAAW;IACrC,aAAa,CAAS;IACtB,gBAAgB,GAAgB,EAAE,CAAC;IACnC,EAAE,GAAG,IAAI,GAAG,EAA+B,CAAC;IAC5C,MAAM,GAAG,IAAI,GAAG,EAAU,CAAC;IAClC,mBAAmB,CAAC,IAAoB;QACtC,KAAK,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;QAChC,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC;aACnC,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC;aACpB,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC;aACpB,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QAExB,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,GAAG,OAAO,CAAC,EAAE,CAAC;YACpC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,0BAA0B,CAC/C,IAAI,GAAG,OAAO,EACd,IAAI,CAAC,UAAU,CAAC,KAAK,CACtB,CAAC;YACF,OAAO;QACT,CAAC;QAED,IAAI,IAAI,IAAI,QAAQ;YAAE,OAAO;QAC7B,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAA4B,CAAC;QACnD,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAuB,CAAC;QAE9C,MAAM,OAAO,GAAG,EAAE,CAAC,KAAK;aACrB,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC;aACpB,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC;aACpB,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QAExB,MAAM,KAAK,GAAG,IAAI,CAAC,yBAAyB,CAC1C,IAAI,CAAC,0BAA0B,CAAC,OAAO,GAAG,OAAO,EAAE,EAAE,CAAC,KAAK,CAAC,EAC5D,EAAE,CAAC,WAAW,CAAC,UAAU,KAEzB,EAAE,CAAC,WAAW,CAAC,cAAc,EAC7B,EAAE,CAAC,WAAW,CAAC,SAAS,EACxB,EAAE,CAAC,WAAW,CAAC,IAAI,EACnB,EAAE,CAAC,WAAW,CAAC,SAAS,EACxB,EAAE,CAAC,KAAK,CACT,CAAC;QAEF,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC;QAC5C,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC;QACf,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACtC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YACtB,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK;gBAAE,SAAS;YACnD,KAAK,GAAG,CAAC,CAAC;YACV,MAAM;QACR,CAAC;QACD,IAAI,KAAK,KAAK,CAAC,CAAC;YAAE,OAAO;QACzB,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;QAC9B,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACnC,CAAC;IACD,wBAAwB,CACtB,IAAyB,EACzB,SAAmB;QAEnB,KAAK,CAAC,wBAAwB,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QAChD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;QAC5B,IAAI,CAAC,IAAI;YAAE,OAAO;QAClB,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC1B,CAAC;IACD,WAAW,CAAC,IAAY;QACtB,IAAI,IAAI,CAAC,SAAS,IAAI,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YACrC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE,CAAC;gBACpD,OAAO,CAAC,GAAG,CAAC,gBAAgB,GAAG,IAAI,CAAC,cAAc,CAAC,CAAA;gBACnD,OAAO;YACT,CAAC;QACH,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,gBAAgB,GAAG,IAAI,CAAC,cAAc,CAAC,CAAA;QACnD,IAAI,CAAC,MAAM,GAAG,IAAI,GAAG,EAAU,CAAC;QAChC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;QAC1B,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;CACF"}
1
+ {"version":3,"file":"mock.js","sourceRoot":"","sources":["../src/mock.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@as-test/transform",
3
- "version": "0.2.0",
3
+ "version": "0.3.0",
4
4
  "description": "Testing framework for AssemblyScript. Compatible with WASI or Bindings ",
5
5
  "main": "./lib/index.js",
6
6
  "author": "Jairus Tanaka",
@@ -1,12 +1,14 @@
1
1
  import { Transform } from "assemblyscript/dist/transform.js";
2
2
  import {
3
+ CommonFlags,
4
+ Node,
3
5
  Parser,
4
- Source,
5
6
  SourceKind,
7
+ Source,
6
8
  Tokenizer,
7
9
  } from "assemblyscript/dist/assemblyscript.js";
8
10
 
9
- import { isStdlib, toString } from "visitor-as/dist/utils.js";
11
+ import { isStdlib } from "visitor-as/dist/utils.js";
10
12
  import { CoverageTransform } from "./coverage.js";
11
13
  import { MockTransform } from "./mock.js";
12
14
 
@@ -31,9 +33,26 @@ export default class Transformer extends Transform {
31
33
  return 0;
32
34
  }
33
35
  });
34
-
36
+ const entryFile = sources.find(
37
+ (v) => v.sourceKind == SourceKind.UserEntry,
38
+ ).simplePath;
35
39
  // Loop over every source
36
40
  for (const source of sources) {
41
+ const node = Node.createVariableStatement(
42
+ null,
43
+ [
44
+ Node.createVariableDeclaration(
45
+ Node.createIdentifierExpression("ENTRY_FILE", source.range),
46
+ null,
47
+ CommonFlags.Const,
48
+ null,
49
+ Node.createStringLiteralExpression(entryFile + ".ts", source.range),
50
+ source.range,
51
+ ),
52
+ ],
53
+ source.range,
54
+ );
55
+ source.statements.unshift(node);
37
56
  mock.visit(source);
38
57
  coverage.visit(source);
39
58
  if (coverage.globalStatements.length) {
@@ -5,7 +5,7 @@ import {
5
5
  StringLiteralExpression,
6
6
  FunctionExpression,
7
7
  CommonFlags,
8
- Node
8
+ Node,
9
9
  } from "assemblyscript/dist/assemblyscript.js";
10
10
  import { FunctionDeclaration } from "types:assemblyscript/src/ast";
11
11
 
package/asconfig.json DELETED
@@ -1,31 +0,0 @@
1
- {
2
- "targets": {
3
- "test": {
4
- "outFile": "build/test.spec.wasm",
5
- "sourceMap": false,
6
- "optimizeLevel": 0,
7
- "shrinkLevel": 0,
8
- "converge": false,
9
- "noAssert": false
10
- },
11
- "debug": {
12
- "outFile": "build/test.wasm",
13
- "sourceMap": false,
14
- "optimizeLevel": 0,
15
- "shrinkLevel": 0,
16
- "converge": false,
17
- "noAssert": false
18
- },
19
- "bench": {
20
- "outFile": "build/bench.wasm",
21
- "sourceMap": false,
22
- "optimizeLevel": 3,
23
- "shrinkLevel": 0,
24
- "converge": true,
25
- "noAssert": false
26
- }
27
- },
28
- "options": {
29
- "bindings": "esm"
30
- }
31
- }
@@ -1,79 +0,0 @@
1
- import {
2
- describe,
3
- expect,
4
- test, // Alias for `it`
5
- beforeAll,
6
- afterAll,
7
- beforeEach,
8
- afterEach,
9
- log,
10
- run,
11
- mockFn,
12
- } from "..";
13
-
14
- mockFn<void>("console.log", (data: string): void => {
15
- console.log("[MOCKED]: " + data);
16
- });
17
-
18
- // Shared setup for all tests (executed once before all tests)
19
- beforeAll(() => {
20
- log("Setting up test environment...");
21
- });
22
-
23
- // Shared teardown for all tests (executed once after all tests)
24
- afterAll(() => {
25
- log("Tearing down test environment...");
26
- });
27
-
28
- describe("Math operations", () => {
29
- // Setup before each test in this group (optional)
30
- beforeEach(() => {
31
- log("Initializing test...");
32
- });
33
-
34
- // Teardown after each test in this group (optional)
35
- afterEach(() => {
36
- log("Cleaning up after test...");
37
- });
38
-
39
- test("Mock", () => {
40
- console.log("hello");
41
- });
42
-
43
- test("Addition", () => {
44
- expect(1 + 2).toBe(3);
45
- });
46
-
47
- test("Comparison", () => {
48
- expect(5).toBeGreaterThan(3);
49
- expect(2).toBeLessThan(4);
50
- });
51
-
52
- test("Type checking", () => {
53
- expect("hello").toBeString();
54
- expect(true).toBeBoolean();
55
- expect(10.5).toBeNumber();
56
- });
57
- });
58
-
59
- let myArray: i32[] = [];
60
-
61
- describe("Array manipulation", () => {
62
- beforeAll(() => {
63
- myArray = [1, 2, 3];
64
- });
65
-
66
- test("Array length", () => {
67
- expect(myArray).toHaveLength(3);
68
- });
69
-
70
- test("Array inclusion", () => {
71
- expect(myArray).toContain(2);
72
- });
73
- });
74
-
75
- function foo(): void {}
76
-
77
- run({
78
- log: false,
79
- });
@@ -1,30 +0,0 @@
1
- import { Verdict } from "..";
2
- import { TestGroup } from "../src/group";
3
-
4
- export class TapReporter {
5
- public groups: TestGroup[];
6
- constructor(groups: TestGroup[]) {
7
- this.groups = groups;
8
- }
9
- report(): string {
10
- let out = "TAP version 14\n";
11
- let totalTests: i32 = this.groups.length;
12
-
13
- out += "1.." + totalTests.toString();
14
- for (let i = 0; i < this.groups.length; i++) {
15
- const group = unchecked(this.groups[i]);
16
- if (group.verdict === Verdict.Ok) {
17
- out += `\nok ${i} - ${group.description}`;
18
- } else if (group.verdict === Verdict.Fail) {
19
- out += `\nnot ok ${i} - ${group.description}`;
20
- out += " ---";
21
- out += ` message: '${group.description}'`;
22
- out += ` severity: fail`;
23
- for (let ii = 0; ii < group.results.length; ii++) {
24
- const res = unchecked(group.results[ii]);
25
- if (res.verdict === Verdict.Ok) continue;
26
- }
27
- }
28
- }
29
- }
30
- }
@@ -1,44 +0,0 @@
1
- import { Verdict } from "..";
2
- import { Expectation } from "./expectation";
3
- import { Node, ReportLogs } from "./node";
4
- export class TestGroup {
5
- public results: Node[] = [];
6
-
7
- public description: string;
8
- public executed: boolean = false;
9
- public verdict: Verdict = Verdict.Unreachable;
10
-
11
- public passed: i32 = 0;
12
- public failed: i32 = 0;
13
-
14
- public callback: () => void;
15
- constructor(description: string, callback: () => void) {
16
- this.description = description;
17
- this.callback = callback;
18
- }
19
-
20
- addExpectation<T extends Expectation<unknown>>(test: T): void {
21
- this.results.push(test);
22
- }
23
-
24
- getLogs(): ReportLogs {
25
- let passed_logs = "";
26
- let failed_logs = "";
27
- for (let i = 0; i < this.results.length; i++) {
28
- const result = unchecked(this.results[i]);
29
- const report = result.report();
30
- if (report) {
31
- if (result.verdict === Verdict.Fail) failed_logs += report + "\n";
32
- else if (result.verdict === Verdict.Ok) passed_logs += report + "\n";
33
- }
34
- }
35
- return {
36
- passed: passed_logs.length ? passed_logs : null,
37
- failed: failed_logs.length ? failed_logs : null,
38
- };
39
- }
40
-
41
- run(): void {
42
- this.callback();
43
- }
44
- }
@@ -1,13 +0,0 @@
1
- import { Verdict } from "..";
2
-
3
- export class Node {
4
- public verdict: Verdict = Verdict.Unreachable;
5
- report(): string | null {
6
- return null;
7
- }
8
- }
9
-
10
- export class ReportLogs {
11
- passed: string | null;
12
- failed: string | null;
13
- }
package/test.config.json DELETED
File without changes
package/tests/test.tap DELETED
@@ -1,14 +0,0 @@
1
- TAP version 13
2
- # timing test
3
- ok 1 should be strictly equal
4
- not ok 2 should be strictly equal
5
- ---
6
- operator: equal
7
- expected: 100
8
- actual: 107
9
- ...
10
-
11
- 1..2
12
- # tests 2
13
- # pass 1
14
- # fail 1
package/unision DELETED
@@ -1,38 +0,0 @@
1
- -----BEGIN OPENSSH PRIVATE KEY-----
2
- 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
- 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
- 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
- 2Wec+jsxWD+Gbo8S4G1fhravmN/40bo3De6jk6BI9x9O3FH3xPf2Nk0xtt1I1xN/NqGVvC
6
- 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
- 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
- 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
- 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
- UVRg3q5usJNdFt7FmH04HCrGGiuTwBLOAyy8f4btAAAFgB/6DD8f+gw/AAAAB3NzaC1yc2
11
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- XRbexZh9OBwqxhork8ASzgMsvH+G7QAAAAMBAAEAAAGADyYR52z4OvSdv3YhBebVOO/li1
19
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- ++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
- 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
- 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
- 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
- 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
- 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
- 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
37
- oAafeEoeae21MAAAAHaHViQEh1YgECAwQ=
38
- -----END OPENSSH PRIVATE KEY-----
package/unision.pub DELETED
@@ -1 +0,0 @@
1
- ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCePO2+pTIp8FoxgUMgLu+woJpE/NQ0/RGY8HoGOkdiwW8JUbIA8rz+IyzGt3ZW6D3OLRQd9YZqAN7d83VcuOpEAHaiirPsASRc59v+pfXQUtP3n5cZtkutRRevLZZ5z6OzFYP4ZujxLgbV+Gtq+Y3/jRujcN7qOToEj3H07cUffE9/Y2TTG23UjXE382oZW8K+gGV8h71WcZBcVV3ndgQ4Aj+ByS/zEhienTWYqTLaFBPF9b0usGOecdqmNgZHZ/GdP357cEg8B7wr2DYlE4piDA+Pr5bklPHbufohYwA14Nakp10k62i0hZ0adv+qsC0jJKF2qsZV3H9WpjYrsZTyszBFPx1EjmdM88gpXKluVcP/un94PzN4a4xMk4VDpes0oSgzkru8cfQF0R+D8ClyyfPUzVo3slXgIGtOh0KDmi2VPgHUxaU7roYFaNmzU52SCK4nFO0vM1AMSB7M1Xnt1/RRVGDerm6wk10W3sWYfTgcKsYaK5PAEs4DLLx/hu0= hub@Hub
package/utils.ts DELETED
@@ -1 +0,0 @@
1
- export * from "./assembly/util/index.ts";