Skip to content

Commit 0d78b99

Browse files
committed
fix
1 parent 8be960c commit 0d78b99

File tree

6 files changed

+131
-54
lines changed

6 files changed

+131
-54
lines changed

src/executionResult.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ export class ExecutionResultSummary {
5959
* It should be called after other error processed to append log messages.
6060
*/
6161
#processLogMessages(failedLogMessages: FailedLogMessages) {
62-
for (let [testcaseName, failedInfo] of this.failedInfos) {
62+
for (const [testcaseName, failedInfo] of this.failedInfos) {
6363
if (failedLogMessages[testcaseName] !== undefined) {
6464
failedInfo.logMessages = failedInfo.logMessages.concat(failedLogMessages[testcaseName]);
6565
}

src/interface.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,8 +85,8 @@ export type ExpectInfo = Record<ExpectInfoIndex, ExpectInfoDebugLocation>;
8585
export interface IExecutionResult {
8686
fail: number;
8787
total: number;
88-
failedInfo: AssertFailMessage;
8988
crashInfo: CrashInfo;
89+
failedInfo: AssertFailMessage;
9090
failedLogMessages: FailedLogMessages;
9191
}
9292

src/utils/wasmparser.ts

Lines changed: 7 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -84,27 +84,14 @@ export function parseSourceMapPath(buf: ArrayBuffer): string | null {
8484
if (!reader.read()) {
8585
return null;
8686
}
87-
switch (reader.state) {
88-
case BinaryReaderState.BEGIN_SECTION: {
89-
const sectionInfo = reader.result as ISectionInformation;
90-
switch (sectionInfo.id) {
91-
case SectionCode.Custom: {
92-
break;
93-
}
94-
default: {
95-
reader.skipSection();
96-
break;
97-
}
98-
}
99-
break;
100-
}
101-
case BinaryReaderState.SOURCE_MAPPING_URL: {
102-
const sectionInfo = reader.result as ISourceMappingURL;
103-
return new TextDecoder("utf-8").decode(sectionInfo.url);
104-
}
105-
default: {
106-
break;
87+
if (reader.state === BinaryReaderState.BEGIN_SECTION) {
88+
const sectionInfo = reader.result as ISectionInformation;
89+
if (sectionInfo.id !== SectionCode.Custom) {
90+
reader.skipSection();
10791
}
92+
} else if (reader.state == BinaryReaderState.SOURCE_MAPPING_URL) {
93+
const sectionInfo = reader.result as ISourceMappingURL;
94+
return new TextDecoder("utf8").decode(sectionInfo.url);
10895
}
10996
}
11097
}
Lines changed: 32 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
// Jest Snapshot v1, https://goo.gl/fbAQLP
22

3-
exports[`print 1`] = `
3+
exports[`print assert failed 1`] = `
44
"
55
test case: 27/28 (success/total)
66
@@ -9,10 +9,11 @@ Error Message:
99
tests/as/comparison.test.ts:10:20 value: 100 expect: = 200
1010
log message 1
1111
log message 2
12-
log message 3"
12+
log message 3
13+
"
1314
`;
1415

15-
exports[`print 2`] = `
16+
exports[`print assert failed 2`] = `
1617
"
1718
test case: 27/28 (success/total)
1819
@@ -21,5 +22,32 @@ test case: 27/28 (success/total)
2122
tests/as/comparison.test.ts:10:20 value: 100 expect: = 200
2223
log message 1
2324
log message 2
24-
log message 3"
25+
log message 3
26+
"
27+
`;
28+
29+
exports[`print crash 1`] = `
30+
"
31+
test case: 27/28 (success/total)
32+
33+
Error Message:
34+
A:
35+
Test Crashed!
36+
log message 1
37+
log message 2
38+
log message 3
39+
"
40+
`;
41+
42+
exports[`print crash 2`] = `
43+
"
44+
test case: 27/28 (success/total)
45+
46+
Error Message: 
47+
A:
48+
Test Crashed!
49+
log message 1
50+
log message 2
51+
log message 3
52+
"
2553
`;

tests/ts/test/core/instrument.test.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
import fs from "fs-extra";
2-
import { join } from "node:path";
2+
import { join, relative } from "node:path";
33
import { tmpdir } from "node:os";
44
import { fileURLToPath, URL } from "node:url";
55
import { compile } from "../../../../src/core/compile.js";
66
import { instrument } from "../../../../src/core/instrument.js";
77

88
const fixturePath = join(fileURLToPath(new URL(".", import.meta.url)), "..", "..", "fixture", "constructor.ts");
9-
const outputDir = join(tmpdir(), "assemblyscript-unittest-framework");
9+
const outputDir = relative(process.cwd(), join(tmpdir(), "assemblyscript-unittest-framework"));
1010

1111
test("Instrument", async () => {
1212
await compile([fixturePath], outputDir, "--memoryBase 16 --exportTable");

tests/ts/test/executionResult.test.ts

Lines changed: 88 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,17 @@
11
import { join } from "node:path";
22
import { fileURLToPath, URL } from "node:url";
3-
import { FailedInfoMap, IAssertResult } from "../../../src/interface.js";
4-
import { ExecutionResult } from "../../../src/executionResult.js";
3+
import { FailedInfoMap, IExecutionResult } from "../../../src/interface.js";
4+
import { ExecutionResultSummary } from "../../../src/executionResult.js";
55
import chalk from "chalk";
66

77
const __dirname = fileURLToPath(new URL(".", import.meta.url));
88

99
test("no failedInfo merge", async () => {
10-
const executionResult = new ExecutionResult();
11-
const testcaseA: IAssertResult = {
10+
const executionResult = new ExecutionResultSummary();
11+
const testcaseA: IExecutionResult = {
1212
fail: 0,
1313
total: 28,
14+
crashInfo: new Set<string>(),
1415
failedInfo: {},
1516
failedLogMessages: {},
1617
};
@@ -21,13 +22,14 @@ test("no failedInfo merge", async () => {
2122
expect(executionResult.failedInfos).toEqual(new Map<string, string[]>());
2223
});
2324

24-
test("equal failed", async () => {
25-
const executionResult = new ExecutionResult();
25+
test("equal assert failed", async () => {
26+
const executionResult = new ExecutionResultSummary();
2627
const actualString = "A long sentence for testing errorMsg.length > 160 in executionResult.ts merge function";
2728
const expectString = "= A long sentence for testing errorMsg.length > 160 in executionResult.ts merge function ";
28-
const testcaseA: IAssertResult = {
29+
const testcaseA: IExecutionResult = {
2930
fail: 1,
3031
total: 28,
32+
crashInfo: new Set<string>(),
3133
failedInfo: {
3234
A: [
3335
["1", "100", "= 200"],
@@ -44,6 +46,7 @@ test("equal failed", async () => {
4446
await executionResult.merge(testcaseA, expectInfoFIlePath);
4547
const expectFailedInfo: FailedInfoMap = new Map();
4648
expectFailedInfo.set("A", {
49+
hasCrash: false,
4750
assertMessages: [
4851
"tests/as/comparison.test.ts:10:20 value: 100 expect: = 200",
4952
"tests/as/comparison.test.ts:15:27 value: [10] expect: = [1]",
@@ -57,31 +60,90 @@ test("equal failed", async () => {
5760
expect(executionResult.failedInfos).toEqual(expectFailedInfo);
5861
});
5962

60-
test("print", async () => {
61-
const executionResult = new ExecutionResult();
62-
const testcaseA: IAssertResult = {
63+
test("equal crash", async () => {
64+
const executionResult = new ExecutionResultSummary();
65+
const actualString = "A long sentence for testing errorMsg.length > 160 in executionResult.ts merge function";
66+
const expectString = "= A long sentence for testing errorMsg.length > 160 in executionResult.ts merge function ";
67+
const testcaseA: IExecutionResult = {
6368
fail: 1,
64-
total: 28,
65-
failedInfo: {
66-
A: [["1", "100", "= 200"]],
67-
},
69+
total: 1,
70+
crashInfo: new Set<string>(),
71+
failedInfo: {},
6872
failedLogMessages: {
6973
A: ["log message 1", "log message 2", "log message 3"],
7074
},
7175
};
76+
testcaseA.crashInfo.add("A");
7277
const expectInfoFIlePath = join(__dirname, "..", "fixture", "assertResultTest.expectInfo.json");
7378
await executionResult.merge(testcaseA, expectInfoFIlePath);
79+
const expectFailedInfo: FailedInfoMap = new Map();
80+
expectFailedInfo.set("A", {
81+
hasCrash: true,
82+
assertMessages: [],
83+
logMessages: ["log message 1", "log message 2", "log message 3"],
84+
});
85+
expect(executionResult.fail).toEqual(1);
86+
expect(executionResult.total).toEqual(1);
87+
expect(executionResult.failedInfos).toEqual(expectFailedInfo);
88+
});
89+
90+
describe("print", () => {
91+
test("assert failed", async () => {
92+
const executionResult = new ExecutionResultSummary();
93+
const testcaseA: IExecutionResult = {
94+
fail: 1,
95+
total: 28,
96+
crashInfo: new Set<string>(),
97+
failedInfo: {
98+
A: [["1", "100", "= 200"]],
99+
},
100+
failedLogMessages: {
101+
A: ["log message 1", "log message 2", "log message 3"],
102+
},
103+
};
104+
const expectInfoFIlePath = join(__dirname, "..", "fixture", "assertResultTest.expectInfo.json");
105+
await executionResult.merge(testcaseA, expectInfoFIlePath);
74106

75-
{
76-
const outputs: string[] = [];
77-
chalk.level = 0; // disable color
78-
executionResult.print((msg) => outputs.push(msg));
79-
expect(outputs.join("\n")).toMatchSnapshot();
80-
}
81-
{
82-
const outputs: string[] = [];
83-
chalk.level = 1; // force enable color
84-
executionResult.print((msg) => outputs.push(msg));
85-
expect(outputs.join("\n")).toMatchSnapshot();
86-
}
107+
{
108+
const outputs: string[] = [];
109+
chalk.level = 0; // disable color
110+
executionResult.print((msg) => outputs.push(msg));
111+
expect(outputs.join("\n")).toMatchSnapshot();
112+
}
113+
{
114+
const outputs: string[] = [];
115+
chalk.level = 1; // force enable color
116+
executionResult.print((msg) => outputs.push(msg));
117+
expect(outputs.join("\n")).toMatchSnapshot();
118+
}
119+
});
120+
121+
test("crash", async () => {
122+
const executionResult = new ExecutionResultSummary();
123+
const testcaseA: IExecutionResult = {
124+
fail: 1,
125+
total: 28,
126+
crashInfo: new Set<string>(),
127+
failedInfo: {},
128+
failedLogMessages: {
129+
A: ["log message 1", "log message 2", "log message 3"],
130+
},
131+
};
132+
testcaseA.crashInfo.add("A");
133+
const expectInfoFIlePath = join(__dirname, "..", "fixture", "assertResultTest.expectInfo.json");
134+
await executionResult.merge(testcaseA, expectInfoFIlePath);
135+
136+
{
137+
const outputs: string[] = [];
138+
chalk.level = 0; // disable color
139+
executionResult.print((msg) => outputs.push(msg));
140+
expect(outputs.join("\n")).toMatchSnapshot();
141+
}
142+
{
143+
const outputs: string[] = [];
144+
chalk.level = 1; // force enable color
145+
executionResult.print((msg) => outputs.push(msg));
146+
expect(outputs.join("\n")).toMatchSnapshot();
147+
}
148+
});
87149
});

0 commit comments

Comments
 (0)