as-test 0.3.3 → 0.3.5
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.
- package/CHANGELOG.md +3 -1
- package/README.md +1 -1
- package/assembly/__tests__/array.spec.ts +13 -7
- package/assembly/coverage.ts +1 -1
- package/assembly/src/expectation.ts +21 -13
- package/assembly/src/tests.ts +4 -3
- package/assembly/util/helpers.ts +13 -0
- package/bin/index.js +1 -1
- package/bin/init.js +2 -3
- package/bin/run.js +4 -4
- package/cli/index.ts +1 -1
- package/cli/init.ts +2 -2
- package/cli/run.ts +3 -3
- package/package.json +2 -2
- package/run/package.json +1 -1
- package/transform/lib/mock.js +6 -9
- package/transform/lib/mock.js.map +1 -1
- package/transform/package.json +1 -1
- package/transform/src/mock.ts +5 -10
package/CHANGELOG.md
CHANGED
|
@@ -26,4 +26,6 @@ v0.2.1 - Remove accidental logging
|
|
|
26
26
|
v0.3.0 - Pass metadata through terminal - Support for multiple files - Better reporting - Timing for suites - Terminal utilities
|
|
27
27
|
v0.3.1 - Add screenshot of completed tests to readme
|
|
28
28
|
v0.3.2 - Add `mockImport` to override imported functions
|
|
29
|
-
v0.3.3 - Allow `mockImport`'s return type to be any
|
|
29
|
+
v0.3.3 - Allow `mockImport`'s return type to be any
|
|
30
|
+
v0.3.4 - Fix: import functions were not received after visitSource
|
|
31
|
+
v0.3.5 - Fix: allow arrays to be used in `.toBe()`
|
package/README.md
CHANGED
|
@@ -3,17 +3,23 @@ import { describe, expect, test, run, it } from "..";
|
|
|
3
3
|
const myArray: i32[] = [1, 2, 3];
|
|
4
4
|
|
|
5
5
|
describe("Array manipulation", () => {
|
|
6
|
-
test("Array length", () => {
|
|
7
|
-
|
|
8
|
-
});
|
|
6
|
+
// test("Array length", () => {
|
|
7
|
+
// expect("foo").toBe("foo")
|
|
8
|
+
// });
|
|
9
9
|
|
|
10
|
-
test("Array inclusion", () => {
|
|
11
|
-
|
|
12
|
-
});
|
|
10
|
+
// test("Array inclusion", () => {
|
|
11
|
+
// expect(myArray).toContain(2);
|
|
12
|
+
// });
|
|
13
|
+
|
|
14
|
+
test("Array check", () => {
|
|
15
|
+
const a = [1,2,3];
|
|
16
|
+
const b = [1,2,3];
|
|
17
|
+
expect(a).toBe(b);
|
|
18
|
+
})
|
|
13
19
|
|
|
14
20
|
it("should be empty", () => {});
|
|
15
21
|
});
|
|
16
22
|
|
|
17
23
|
run({
|
|
18
|
-
log:
|
|
24
|
+
log: true,
|
|
19
25
|
});
|
package/assembly/coverage.ts
CHANGED
|
@@ -1,11 +1,14 @@
|
|
|
1
1
|
import { visualize } from "../util/helpers";
|
|
2
2
|
import { Tests } from "./tests";
|
|
3
|
-
import { after_each_callback, before_each_callback } from "..";
|
|
3
|
+
import { after_each_callback, before_each_callback, log } from "..";
|
|
4
|
+
import { JSON } from "json-as";
|
|
4
5
|
|
|
5
6
|
|
|
6
7
|
@json
|
|
7
8
|
export class Expectation<T> extends Tests {
|
|
8
9
|
public verdict: string = "none";
|
|
10
|
+
public right: JSON.Raw = "";
|
|
11
|
+
public left: JSON.Raw = "";
|
|
9
12
|
private _left: T;
|
|
10
13
|
// @ts-ignore
|
|
11
14
|
private _right: u64 = 0;
|
|
@@ -340,33 +343,38 @@ export class Expectation<T> extends Tests {
|
|
|
340
343
|
* @returns - void
|
|
341
344
|
*/
|
|
342
345
|
toBe(equals: T): void {
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
equals
|
|
346
|
-
|
|
347
|
-
);
|
|
348
|
-
if (isBoolean<T>()) {
|
|
346
|
+
if (isArray<T>()) {
|
|
347
|
+
// @ts-ignore
|
|
348
|
+
this.verdict = arrayEquals(this._left, equals) ? "ok" : "fail";
|
|
349
|
+
} else if (isBoolean<T>()) {
|
|
349
350
|
this.verdict = this._left === equals ? "ok" : "fail";
|
|
350
351
|
} else if (isString<T>()) {
|
|
351
352
|
this.verdict = this._left === equals ? "ok" : "fail";
|
|
352
353
|
} else if (isInteger<T>() || isFloat<T>()) {
|
|
353
354
|
this.verdict = this._left === equals ? "ok" : "fail";
|
|
354
|
-
} else if (isArray<T>()) {
|
|
355
|
-
// getArrayDepth<T>();
|
|
356
355
|
} else {
|
|
357
356
|
this.verdict = "none";
|
|
358
357
|
}
|
|
359
358
|
|
|
360
359
|
this.instr = "toBe";
|
|
361
360
|
|
|
362
|
-
this.left =
|
|
363
|
-
this.right =
|
|
364
|
-
load<T>(changetype<usize>(this), offsetof<Expectation<T>>("_right")),
|
|
365
|
-
);
|
|
361
|
+
this.left = JSON.stringify<T>(this._left);
|
|
362
|
+
this.right = JSON.stringify<T>(equals);
|
|
366
363
|
|
|
367
364
|
// @ts-ignore
|
|
368
365
|
if (after_each_callback) after_each_callback();
|
|
369
366
|
// @ts-ignore
|
|
370
367
|
if (before_each_callback) before_each_callback();
|
|
368
|
+
|
|
369
|
+
// store<T>(
|
|
370
|
+
// changetype<usize>(this),
|
|
371
|
+
// equals,
|
|
372
|
+
// offsetof<Expectation<T>>("_right"),
|
|
373
|
+
// );
|
|
371
374
|
}
|
|
372
375
|
}
|
|
376
|
+
|
|
377
|
+
function arrayEquals<T extends any[]>(a: T, b: T): boolean {
|
|
378
|
+
if (a.length != b.length) return false;
|
|
379
|
+
return JSON.stringify(a) == JSON.stringify(b);
|
|
380
|
+
}
|
package/assembly/src/tests.ts
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
|
+
import { JSON } from "json-as";
|
|
1
2
|
|
|
2
3
|
@json
|
|
3
4
|
export class Tests {
|
|
4
5
|
public order: i32 = 0;
|
|
5
|
-
public type
|
|
6
|
+
public type: string = "";
|
|
6
7
|
public verdict: string = "none";
|
|
7
|
-
public left:
|
|
8
|
-
public right:
|
|
8
|
+
public left: JSON.Raw = "";
|
|
9
|
+
public right: JSON.Raw = "";
|
|
9
10
|
public instr: string = "";
|
|
10
11
|
}
|
package/assembly/util/helpers.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { rainbow } from "as-rainbow";
|
|
2
|
+
import { JSON } from "json-as";
|
|
2
3
|
|
|
3
4
|
export function visualize<T>(value: T): string {
|
|
4
5
|
if (isNullable<T>() && changetype<usize>(value) == <usize>0) {
|
|
@@ -11,6 +12,18 @@ export function visualize<T>(value: T): string {
|
|
|
11
12
|
} else if (isInteger<T>() || isFloat<T>()) {
|
|
12
13
|
// @ts-ignore
|
|
13
14
|
return value.toString();
|
|
15
|
+
} else if (isArray<T>()) {
|
|
16
|
+
// @ts-ignore
|
|
17
|
+
if (!value.length) return "[]";
|
|
18
|
+
let out = "[";
|
|
19
|
+
// @ts-ignore
|
|
20
|
+
for (let i = 0; i < value.length - 1; i++) {
|
|
21
|
+
// @ts-ignore
|
|
22
|
+
out += visualize<valueof<T>>(value[i]);
|
|
23
|
+
}
|
|
24
|
+
// @ts-ignore
|
|
25
|
+
out += visualize<valueof<T>>(value[value.length - 1]);
|
|
26
|
+
return out;
|
|
14
27
|
}
|
|
15
28
|
|
|
16
29
|
return unreachable();
|
package/bin/index.js
CHANGED
|
@@ -7,7 +7,7 @@ const _args = process.argv.slice(2);
|
|
|
7
7
|
const flags = [];
|
|
8
8
|
const args = [];
|
|
9
9
|
const COMMANDS = ["run", "build", "test", "init"];
|
|
10
|
-
const version = "0.3.
|
|
10
|
+
const version = "0.3.5";
|
|
11
11
|
for (const arg of _args) {
|
|
12
12
|
if (arg.startsWith("-")) flags.push(arg);
|
|
13
13
|
else args.push(arg);
|
package/bin/init.js
CHANGED
|
@@ -9,7 +9,7 @@ export async function init(args) {
|
|
|
9
9
|
input: process.stdin,
|
|
10
10
|
output: process.stdout,
|
|
11
11
|
});
|
|
12
|
-
console.log(chalk.bold("as-test init v0.3.
|
|
12
|
+
console.log(chalk.bold("as-test init v0.3.5") + "\n");
|
|
13
13
|
console.log(chalk.dim("[1/3]") + " select a target [wasi/bindings]");
|
|
14
14
|
const target = await ask(chalk.dim(" -> "), rl);
|
|
15
15
|
if (!TARGETS.includes(target)) {
|
|
@@ -174,7 +174,6 @@ const exports = instantiate(module, {});`,
|
|
|
174
174
|
existsSync(PKG_PATH) ? readFileSync(PKG_PATH).toString() : "{}",
|
|
175
175
|
);
|
|
176
176
|
if (!pkg["scripts"]) pkg["scripts"] = {};
|
|
177
|
-
if (pkg.scripts["test"]) process.exit(0);
|
|
178
177
|
if (!pkg.scripts["pretest"]) {
|
|
179
178
|
pkg.scripts["pretest"] = "as-test build";
|
|
180
179
|
pkg.scripts["test"] = "as-test run";
|
|
@@ -183,7 +182,7 @@ const exports = instantiate(module, {});`,
|
|
|
183
182
|
}
|
|
184
183
|
if (!pkg["devDependencies"]) pkg["devDependencies"] = {};
|
|
185
184
|
if (!pkg["devDependencies"]["as-test"])
|
|
186
|
-
pkg["devDependencies"]["as-test"] = "^0.3.
|
|
185
|
+
pkg["devDependencies"]["as-test"] = "^0.3.5";
|
|
187
186
|
if (target == "bindings") {
|
|
188
187
|
pkg["type"] = "module";
|
|
189
188
|
}
|
package/bin/run.js
CHANGED
|
@@ -35,7 +35,7 @@ export async function run() {
|
|
|
35
35
|
chalk.bold.blueBright(`|__|__||_____| |_| |_____||_____| |_| `),
|
|
36
36
|
);
|
|
37
37
|
console.log(
|
|
38
|
-
chalk.dim("\n------------------- v0.3.
|
|
38
|
+
chalk.dim("\n------------------- v0.3.5 -------------------\n"),
|
|
39
39
|
);
|
|
40
40
|
}
|
|
41
41
|
for (const plugin of Object.keys(config.plugins)) {
|
|
@@ -114,10 +114,10 @@ export async function run() {
|
|
|
114
114
|
);
|
|
115
115
|
for (const test of failed.tests) {
|
|
116
116
|
const diffResult = diff(
|
|
117
|
-
JSON.stringify(test.
|
|
118
|
-
JSON.stringify(test.
|
|
117
|
+
JSON.stringify(test.left),
|
|
118
|
+
JSON.stringify(test.right),
|
|
119
119
|
);
|
|
120
|
-
let expected = chalk.dim(JSON.stringify(test.
|
|
120
|
+
let expected = chalk.dim(JSON.stringify(test.left));
|
|
121
121
|
let received = "";
|
|
122
122
|
for (const res of diffResult.diff) {
|
|
123
123
|
switch (res.type) {
|
package/cli/index.ts
CHANGED
package/cli/init.ts
CHANGED
|
@@ -9,7 +9,7 @@ export async function init(args: string[]) {
|
|
|
9
9
|
input: process.stdin,
|
|
10
10
|
output: process.stdout,
|
|
11
11
|
});
|
|
12
|
-
console.log(chalk.bold("as-test init v0.3.
|
|
12
|
+
console.log(chalk.bold("as-test init v0.3.5") + "\n");
|
|
13
13
|
console.log(chalk.dim("[1/3]") + " select a target [wasi/bindings]");
|
|
14
14
|
const target = await ask(chalk.dim(" -> "), rl);
|
|
15
15
|
if (!TARGETS.includes(target)) {
|
|
@@ -192,7 +192,7 @@ const exports = instantiate(module, {});`,
|
|
|
192
192
|
}
|
|
193
193
|
if (!pkg["devDependencies"]) pkg["devDependencies"] = {};
|
|
194
194
|
if (!pkg["devDependencies"]["as-test"])
|
|
195
|
-
pkg["devDependencies"]["as-test"] = "^0.3.
|
|
195
|
+
pkg["devDependencies"]["as-test"] = "^0.3.5";
|
|
196
196
|
if (target == "bindings") {
|
|
197
197
|
pkg["type"] = "module";
|
|
198
198
|
}
|
package/cli/run.ts
CHANGED
|
@@ -42,7 +42,7 @@ export async function run() {
|
|
|
42
42
|
chalk.bold.blueBright(`|__|__||_____| |_| |_____||_____| |_| `),
|
|
43
43
|
);
|
|
44
44
|
console.log(
|
|
45
|
-
chalk.dim("\n------------------- v0.3.
|
|
45
|
+
chalk.dim("\n------------------- v0.3.5 -------------------\n"),
|
|
46
46
|
);
|
|
47
47
|
}
|
|
48
48
|
|
|
@@ -128,8 +128,8 @@ export async function run() {
|
|
|
128
128
|
);
|
|
129
129
|
for (const test of failed.tests) {
|
|
130
130
|
const diffResult = diff(
|
|
131
|
-
JSON.stringify(test.
|
|
132
|
-
JSON.stringify(test.
|
|
131
|
+
JSON.stringify(test.left),
|
|
132
|
+
JSON.stringify(test.right),
|
|
133
133
|
);
|
|
134
134
|
let expected = chalk.dim(JSON.stringify(test._left));
|
|
135
135
|
let received = "";
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "as-test",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.5",
|
|
4
4
|
"description": "Testing framework for AssemblyScript. Compatible with WASI or Bindings ",
|
|
5
5
|
"types": "assembly/index.ts",
|
|
6
6
|
"author": "Jairus Tanaka",
|
|
@@ -31,7 +31,7 @@
|
|
|
31
31
|
"as-variant": "^0.4.1",
|
|
32
32
|
"chalk": "^5.3.0",
|
|
33
33
|
"glob": "^11.0.0",
|
|
34
|
-
"json-as": "^0.9.
|
|
34
|
+
"json-as": "^0.9.21",
|
|
35
35
|
"typer-diff": "^1.1.1"
|
|
36
36
|
},
|
|
37
37
|
"overrides": {
|
package/run/package.json
CHANGED
package/transform/lib/mock.js
CHANGED
|
@@ -3,7 +3,7 @@ import {
|
|
|
3
3
|
FunctionDeclaration,
|
|
4
4
|
} from "assemblyscript/dist/assemblyscript.js";
|
|
5
5
|
import { BaseVisitor } from "visitor-as/dist/index.js";
|
|
6
|
-
import {
|
|
6
|
+
import { toString } from "visitor-as/dist/utils.js";
|
|
7
7
|
export class MockTransform extends BaseVisitor {
|
|
8
8
|
currentSource;
|
|
9
9
|
globalStatements = [];
|
|
@@ -25,6 +25,7 @@ export class MockTransform extends BaseVisitor {
|
|
|
25
25
|
}
|
|
26
26
|
if (name == "mockImport") {
|
|
27
27
|
this.importMocked.add(node.args[0].value);
|
|
28
|
+
return;
|
|
28
29
|
}
|
|
29
30
|
if (name != "mockFn") return;
|
|
30
31
|
const ov = toString(node.args[0]);
|
|
@@ -60,18 +61,16 @@ export class MockTransform extends BaseVisitor {
|
|
|
60
61
|
super.visitFunctionDeclaration(node, isDefault);
|
|
61
62
|
}
|
|
62
63
|
visitSource(node) {
|
|
63
|
-
if (node.isLibrary || isStdlib(node)) {
|
|
64
|
-
if (!node.normalizedPath.startsWith("~lib/as-test")) {
|
|
65
|
-
return;
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
64
|
this.mocked = new Set();
|
|
69
65
|
this.currentSource = node;
|
|
66
|
+
this.importFns = [];
|
|
70
67
|
super.visitSource(node);
|
|
71
68
|
for (const node of this.importFns) {
|
|
72
69
|
let path = "";
|
|
73
70
|
const dec = node.decorators?.find((v) => v.name.text == "external");
|
|
74
|
-
if (dec
|
|
71
|
+
if (!dec) {
|
|
72
|
+
path = "env." + node.name.text;
|
|
73
|
+
} else if (dec.args[0] && dec.args[1])
|
|
75
74
|
path = dec.args.map((v) => v.value).join(".");
|
|
76
75
|
else if (dec.args[0])
|
|
77
76
|
path = this.currentSource.simplePath + "." + dec.args[0].value;
|
|
@@ -115,7 +114,6 @@ export class MockTransform extends BaseVisitor {
|
|
|
115
114
|
0,
|
|
116
115
|
node.range,
|
|
117
116
|
);
|
|
118
|
-
newFn.signature = node.signature;
|
|
119
117
|
const stmts = this.currentSource.statements;
|
|
120
118
|
let index = -1;
|
|
121
119
|
for (let i = 0; i < stmts.length; i++) {
|
|
@@ -131,7 +129,6 @@ export class MockTransform extends BaseVisitor {
|
|
|
131
129
|
if (index === -1) return;
|
|
132
130
|
stmts.splice(index, 1, newFn);
|
|
133
131
|
}
|
|
134
|
-
this.importFns = [];
|
|
135
132
|
}
|
|
136
133
|
}
|
|
137
134
|
//# sourceMappingURL=mock.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mock.js","sourceRoot":"","sources":["../src/mock.ts"],"names":[],"mappings":"AAAA,OAAO,EAOL,IAAI,EAIJ,mBAAmB,GACpB,MAAM,uCAAuC,CAAC;AAE/C,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,
|
|
1
|
+
{"version":3,"file":"mock.js","sourceRoot":"","sources":["../src/mock.ts"],"names":[],"mappings":"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"}
|
package/transform/package.json
CHANGED
package/transform/src/mock.ts
CHANGED
|
@@ -37,6 +37,7 @@ export class MockTransform extends BaseVisitor {
|
|
|
37
37
|
|
|
38
38
|
if (name == "mockImport") {
|
|
39
39
|
this.importMocked.add((node.args[0] as StringLiteralExpression).value);
|
|
40
|
+
return;
|
|
40
41
|
}
|
|
41
42
|
if (name != "mockFn") return;
|
|
42
43
|
const ov = toString(node.args[0]);
|
|
@@ -77,13 +78,9 @@ export class MockTransform extends BaseVisitor {
|
|
|
77
78
|
super.visitFunctionDeclaration(node, isDefault);
|
|
78
79
|
}
|
|
79
80
|
visitSource(node: Source): void {
|
|
80
|
-
if (node.isLibrary || isStdlib(node)) {
|
|
81
|
-
if (!node.normalizedPath.startsWith("~lib/as-test")) {
|
|
82
|
-
return;
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
81
|
this.mocked = new Set<string>();
|
|
86
82
|
this.currentSource = node;
|
|
83
|
+
this.importFns = [];
|
|
87
84
|
super.visitSource(node);
|
|
88
85
|
|
|
89
86
|
for (const node of this.importFns) {
|
|
@@ -91,7 +88,9 @@ export class MockTransform extends BaseVisitor {
|
|
|
91
88
|
const dec = node.decorators?.find(
|
|
92
89
|
(v) => (v.name as IdentifierExpression).text == "external",
|
|
93
90
|
);
|
|
94
|
-
if (dec
|
|
91
|
+
if (!dec) {
|
|
92
|
+
path = "env." + node.name.text;
|
|
93
|
+
} else if (dec.args[0] && dec.args[1])
|
|
95
94
|
path = dec.args
|
|
96
95
|
.map((v) => (v as StringLiteralExpression).value)
|
|
97
96
|
.join(".");
|
|
@@ -101,7 +100,6 @@ export class MockTransform extends BaseVisitor {
|
|
|
101
100
|
"." +
|
|
102
101
|
(dec.args[0] as StringLiteralExpression).value;
|
|
103
102
|
else path = this.currentSource.simplePath + "." + node.name.text;
|
|
104
|
-
|
|
105
103
|
if (!this.importMocked.has(path)) return;
|
|
106
104
|
|
|
107
105
|
let args: Expression[] = [
|
|
@@ -147,8 +145,6 @@ export class MockTransform extends BaseVisitor {
|
|
|
147
145
|
node.range,
|
|
148
146
|
);
|
|
149
147
|
|
|
150
|
-
newFn.signature = node.signature;
|
|
151
|
-
|
|
152
148
|
const stmts = this.currentSource.statements;
|
|
153
149
|
let index = -1;
|
|
154
150
|
for (let i = 0; i < stmts.length; i++) {
|
|
@@ -164,6 +160,5 @@ export class MockTransform extends BaseVisitor {
|
|
|
164
160
|
if (index === -1) return;
|
|
165
161
|
stmts.splice(index, 1, newFn);
|
|
166
162
|
}
|
|
167
|
-
this.importFns = [];
|
|
168
163
|
}
|
|
169
164
|
}
|