warpo 2.4.0 → 2.5.0-alpha-2
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/dist/debug_server/dapServer.d.ts +1 -0
- package/dist/debug_server/dapServer.js +27 -0
- package/dist/debug_server/dapServer.js.map +1 -0
- package/dist/debug_server/debugSession.d.ts +19 -0
- package/dist/debug_server/debugSession.js +71 -0
- package/dist/debug_server/debugSession.js.map +1 -0
- package/dist/debug_server/tests/debugSession.test.d.ts +1 -0
- package/dist/debug_server/tests/debugSession.test.js +61 -0
- package/dist/debug_server/tests/debugSession.test.js.map +1 -0
- package/dist/debug_server/tests/launcher.d.ts +10 -0
- package/dist/debug_server/tests/launcher.js +21 -0
- package/dist/debug_server/tests/launcher.js.map +1 -0
- package/dist/scripts/lib.d.ts +7 -0
- package/dist/{lib.js → scripts/lib.js} +20 -6
- package/dist/scripts/lib.js.map +1 -0
- package/dist/test_runner/cli.d.ts +2 -0
- package/dist/test_runner/cli.js +85 -0
- package/dist/test_runner/cli.js.map +1 -0
- package/dist/test_runner/core/analyze.d.ts +13 -0
- package/dist/test_runner/core/analyze.js +58 -0
- package/dist/test_runner/core/analyze.js.map +1 -0
- package/dist/test_runner/core/compile.d.ts +4 -0
- package/dist/test_runner/core/compile.js +23 -0
- package/dist/test_runner/core/compile.js.map +1 -0
- package/dist/test_runner/core/compiler.d.ts +11 -0
- package/dist/test_runner/core/compiler.js +47 -0
- package/dist/test_runner/core/compiler.js.map +1 -0
- package/dist/test_runner/core/covRecorder.d.ts +5 -0
- package/dist/test_runner/core/covRecorder.js +26 -0
- package/dist/test_runner/core/covRecorder.js.map +1 -0
- package/dist/test_runner/core/execute.d.ts +4 -0
- package/dist/test_runner/core/execute.js +76 -0
- package/dist/test_runner/core/execute.js.map +1 -0
- package/dist/test_runner/core/executionRecorder.d.ts +52 -0
- package/dist/test_runner/core/executionRecorder.js +164 -0
- package/dist/test_runner/core/executionRecorder.js.map +1 -0
- package/dist/test_runner/core/mockStatusRecorder.d.ts +10 -0
- package/dist/test_runner/core/mockStatusRecorder.js +62 -0
- package/dist/test_runner/core/mockStatusRecorder.js.map +1 -0
- package/dist/test_runner/executionResult.d.ts +11 -0
- package/dist/test_runner/executionResult.js +112 -0
- package/dist/test_runner/executionResult.js.map +1 -0
- package/dist/test_runner/generator/html-generator/genCode.d.ts +2 -0
- package/dist/test_runner/generator/html-generator/genCode.js +124 -0
- package/dist/test_runner/generator/html-generator/genCode.js.map +1 -0
- package/dist/test_runner/generator/html-generator/genFolder.d.ts +2 -0
- package/dist/test_runner/generator/html-generator/genFolder.js +155 -0
- package/dist/test_runner/generator/html-generator/genFolder.js.map +1 -0
- package/dist/test_runner/generator/html-generator/index.d.ts +2 -0
- package/dist/test_runner/generator/html-generator/index.js +33 -0
- package/dist/test_runner/generator/html-generator/index.js.map +1 -0
- package/dist/test_runner/generator/index.d.ts +9 -0
- package/dist/test_runner/generator/index.js +30 -0
- package/dist/test_runner/generator/index.js.map +1 -0
- package/dist/test_runner/generator/json-generator/index.d.ts +2 -0
- package/dist/test_runner/generator/json-generator/index.js +45 -0
- package/dist/test_runner/generator/json-generator/index.js.map +1 -0
- package/dist/test_runner/generator/table-generator/index.d.ts +2 -0
- package/dist/test_runner/generator/table-generator/index.js +85 -0
- package/dist/test_runner/generator/table-generator/index.js.map +1 -0
- package/dist/test_runner/index.d.ts +3 -0
- package/dist/test_runner/index.js +70 -0
- package/dist/test_runner/index.js.map +1 -0
- package/dist/test_runner/interface.d.ts +36 -0
- package/dist/test_runner/interface.js +12 -0
- package/dist/test_runner/interface.js.map +1 -0
- package/dist/test_runner/parser/index.d.ts +35 -0
- package/dist/test_runner/parser/index.js +146 -0
- package/dist/test_runner/parser/index.js.map +1 -0
- package/dist/test_runner/parser/singleFileAnalysis.d.ts +8 -0
- package/dist/test_runner/parser/singleFileAnalysis.js +51 -0
- package/dist/test_runner/parser/singleFileAnalysis.js.map +1 -0
- package/dist/test_runner/parser/singleFunctionAnalysis.d.ts +16 -0
- package/dist/test_runner/parser/singleFunctionAnalysis.js +97 -0
- package/dist/test_runner/parser/singleFunctionAnalysis.js.map +1 -0
- package/dist/test_runner/testOption.d.ts +16 -0
- package/dist/test_runner/testOption.js +2 -0
- package/dist/test_runner/testOption.js.map +1 -0
- package/dist/test_runner/utils/errorTraceHandler.d.ts +12 -0
- package/dist/test_runner/utils/errorTraceHandler.js +87 -0
- package/dist/test_runner/utils/errorTraceHandler.js.map +1 -0
- package/dist/test_runner/utils/escape.d.ts +1 -0
- package/dist/test_runner/utils/escape.js +14 -0
- package/dist/test_runner/utils/escape.js.map +1 -0
- package/dist/test_runner/utils/index.d.ts +14 -0
- package/dist/test_runner/utils/index.js +88 -0
- package/dist/test_runner/utils/index.js.map +1 -0
- package/dist/test_runner/utils/interface.d.ts +100 -0
- package/dist/test_runner/utils/interface.js +86 -0
- package/dist/test_runner/utils/interface.js.map +1 -0
- package/dist/test_runner/utils/name.d.ts +2 -0
- package/dist/test_runner/utils/name.js +3 -0
- package/dist/test_runner/utils/name.js.map +1 -0
- package/dist/test_runner/utils/pathResolver.d.ts +6 -0
- package/dist/test_runner/utils/pathResolver.js +98 -0
- package/dist/test_runner/utils/pathResolver.js.map +1 -0
- package/dist/test_runner/utils/projectRoot.d.ts +1 -0
- package/dist/test_runner/utils/projectRoot.js +4 -0
- package/dist/test_runner/utils/projectRoot.js.map +1 -0
- package/dist/test_runner/utils/wasm.d.ts +12 -0
- package/dist/test_runner/utils/wasm.js +45 -0
- package/dist/test_runner/utils/wasm.js.map +1 -0
- package/dist/warpo.js +10 -3
- package/dist/warpo.js.map +1 -0
- package/dist/warpo_internal.d.ts +7 -0
- package/dist/warpo_internal.js +74 -0
- package/dist/warpo_internal.js.map +1 -0
- package/package.json +37 -9
- package/types/std/index.d.ts +8 -261
- package/types/warpo/index.d.ts +94 -0
- package/dist/lib.d.ts +0 -5
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
export declare const COVERAGE_DEBUG_INFO_SECTION_NAME = "warpo.coverage.debug-info";
|
|
2
|
+
export declare const TEST_EXPECT_INFO_SECTION_NAME = "warpo.test.expect-info";
|
|
3
|
+
export type CodeSnippetIndex = number;
|
|
4
|
+
export type FunctionIndex = number;
|
|
5
|
+
export type LineIndex = number;
|
|
6
|
+
export type ColumnIndex = number;
|
|
7
|
+
export type FileIndex = number;
|
|
8
|
+
export type UncoveredBasicBlocks = Set<CodeSnippetIndex>;
|
|
9
|
+
export type UncoveredLines = Set<LineIndex>;
|
|
10
|
+
export type BranchInfo = [CodeSnippetIndex, CodeSnippetIndex];
|
|
11
|
+
export type BranchInfos = BranchInfo[];
|
|
12
|
+
export type LineRange = [FileIndex, LineIndex, ColumnIndex][];
|
|
13
|
+
export type LineInfos = (LineRange | null)[];
|
|
14
|
+
export type LineInfoMap = Map<number, Set<LineIndex>>;
|
|
15
|
+
export interface CovDebugInfo {
|
|
16
|
+
branchInfo: BranchInfos;
|
|
17
|
+
index: FunctionIndex;
|
|
18
|
+
lineInfo: LineInfos;
|
|
19
|
+
}
|
|
20
|
+
export interface CovInfo {
|
|
21
|
+
branchInfo: BranchInfos;
|
|
22
|
+
lineInfo: LineInfoMap;
|
|
23
|
+
}
|
|
24
|
+
export interface DebugInfo {
|
|
25
|
+
debugInfos: Record<string, CovDebugInfo>;
|
|
26
|
+
debugFiles: string[];
|
|
27
|
+
}
|
|
28
|
+
export type CovTrace = [FunctionIndex, CodeSnippetIndex];
|
|
29
|
+
export type TestCaseName = string;
|
|
30
|
+
export type ExpectInfoIndex = string;
|
|
31
|
+
export type AssertExpectValue = string;
|
|
32
|
+
export type AssertActualValue = string;
|
|
33
|
+
export type AssertMessage = [ExpectInfoIndex, AssertActualValue, AssertExpectValue];
|
|
34
|
+
export type AssertFailMessage = Record<TestCaseName, AssertMessage[]>;
|
|
35
|
+
export type CrashInfo = Set<TestCaseName>;
|
|
36
|
+
export type FailedLogMessages = Record<TestCaseName, string[]>;
|
|
37
|
+
export type FailedInfo = {
|
|
38
|
+
hasCrash: boolean;
|
|
39
|
+
assertMessages: string[];
|
|
40
|
+
logMessages: string[];
|
|
41
|
+
};
|
|
42
|
+
export type FailedInfoMap = Map<TestCaseName, FailedInfo>;
|
|
43
|
+
export type ExpectInfoDebugLocation = string;
|
|
44
|
+
export type ExpectInfo = Record<ExpectInfoIndex, ExpectInfoDebugLocation>;
|
|
45
|
+
export interface IExecutionResult {
|
|
46
|
+
fail: number;
|
|
47
|
+
total: number;
|
|
48
|
+
crashInfo: CrashInfo;
|
|
49
|
+
failedInfo: AssertFailMessage;
|
|
50
|
+
failedLogMessages: FailedLogMessages;
|
|
51
|
+
}
|
|
52
|
+
export declare class Rate {
|
|
53
|
+
used: number;
|
|
54
|
+
total: number;
|
|
55
|
+
getRate(): number;
|
|
56
|
+
toString(): string;
|
|
57
|
+
static summarize(rates: Rate[]): Rate;
|
|
58
|
+
}
|
|
59
|
+
export declare class FileCoverageResult {
|
|
60
|
+
filename: string;
|
|
61
|
+
constructor(filename: string);
|
|
62
|
+
statementCoverageRate: Rate;
|
|
63
|
+
branchCoverageRate: Rate;
|
|
64
|
+
functionCoverageRate: Rate;
|
|
65
|
+
lineCoverageRate: Rate;
|
|
66
|
+
sourceUsedCount: CodeCoverage[];
|
|
67
|
+
uncoveredLines: Set<number>;
|
|
68
|
+
}
|
|
69
|
+
export declare class FunctionCoverageResult {
|
|
70
|
+
functionName: string;
|
|
71
|
+
constructor(functionName: string);
|
|
72
|
+
branchCoverageRate: Rate;
|
|
73
|
+
uncoveredLines: UncoveredLines;
|
|
74
|
+
lineRange: [number, number];
|
|
75
|
+
/**
|
|
76
|
+
* first means lineIndex;
|
|
77
|
+
* second means usedCount;
|
|
78
|
+
*/
|
|
79
|
+
sourceUsedCount: Map<number, number>;
|
|
80
|
+
/**
|
|
81
|
+
* Now assemblyscript will compile foo<T>() to different function like foo<f64>() , foo<u32>() etc;
|
|
82
|
+
* We need merge the generic function to foo() for coverage statistics
|
|
83
|
+
*/
|
|
84
|
+
static mergeFromGeneric(nameWithoutGeneric: string, infos: FunctionCoverageResult[]): FunctionCoverageResult;
|
|
85
|
+
}
|
|
86
|
+
export declare class CodeCoverage {
|
|
87
|
+
static readonly default = -1;
|
|
88
|
+
source: string;
|
|
89
|
+
/**
|
|
90
|
+
* Default means not a effect line;
|
|
91
|
+
* 0 means not used but effect;
|
|
92
|
+
* more than 0 means a used line;
|
|
93
|
+
*/
|
|
94
|
+
usedCount: number;
|
|
95
|
+
constructor(src: string);
|
|
96
|
+
}
|
|
97
|
+
export interface TestNameInfo {
|
|
98
|
+
testName: string;
|
|
99
|
+
testFilePath: string;
|
|
100
|
+
}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
// NOTE: These custom section names must stay in sync with the C++ instrumentation:
|
|
2
|
+
// - defaultCoverageDebugInfoSectionName
|
|
3
|
+
// - defaultTestExpectInfoSectionName
|
|
4
|
+
// in passes/instrumentation/CoverageInstrumentation.cpp. If they diverge, the test runner
|
|
5
|
+
// will fail at runtime with a missing-section error.
|
|
6
|
+
export const COVERAGE_DEBUG_INFO_SECTION_NAME = "warpo.coverage.debug-info";
|
|
7
|
+
export const TEST_EXPECT_INFO_SECTION_NAME = "warpo.test.expect-info";
|
|
8
|
+
// output
|
|
9
|
+
export class Rate {
|
|
10
|
+
used = 0;
|
|
11
|
+
total = 0;
|
|
12
|
+
getRate() {
|
|
13
|
+
return this.total === 0 ? 100 : Math.round((this.used / this.total) * 10000) / 100;
|
|
14
|
+
}
|
|
15
|
+
toString() {
|
|
16
|
+
return `${this.used}/${this.total}`;
|
|
17
|
+
}
|
|
18
|
+
static summarize(rates) {
|
|
19
|
+
return rates.reduce((prev, curr) => {
|
|
20
|
+
prev.used += curr.used;
|
|
21
|
+
prev.total += curr.total;
|
|
22
|
+
return prev;
|
|
23
|
+
}, new Rate());
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
export class FileCoverageResult {
|
|
27
|
+
filename;
|
|
28
|
+
constructor(filename) {
|
|
29
|
+
this.filename = filename;
|
|
30
|
+
}
|
|
31
|
+
statementCoverageRate = new Rate();
|
|
32
|
+
branchCoverageRate = new Rate();
|
|
33
|
+
functionCoverageRate = new Rate();
|
|
34
|
+
lineCoverageRate = new Rate();
|
|
35
|
+
sourceUsedCount = [];
|
|
36
|
+
uncoveredLines = new Set();
|
|
37
|
+
}
|
|
38
|
+
export class FunctionCoverageResult {
|
|
39
|
+
functionName;
|
|
40
|
+
constructor(functionName) {
|
|
41
|
+
this.functionName = functionName;
|
|
42
|
+
}
|
|
43
|
+
branchCoverageRate = new Rate();
|
|
44
|
+
uncoveredLines = new Set();
|
|
45
|
+
lineRange = [Number.MAX_SAFE_INTEGER, Number.MIN_SAFE_INTEGER];
|
|
46
|
+
/**
|
|
47
|
+
* first means lineIndex;
|
|
48
|
+
* second means usedCount;
|
|
49
|
+
*/
|
|
50
|
+
sourceUsedCount = new Map();
|
|
51
|
+
/**
|
|
52
|
+
* Now assemblyscript will compile foo<T>() to different function like foo<f64>() , foo<u32>() etc;
|
|
53
|
+
* We need merge the generic function to foo() for coverage statistics
|
|
54
|
+
*/
|
|
55
|
+
static mergeFromGeneric(nameWithoutGeneric, infos) {
|
|
56
|
+
const result = new FunctionCoverageResult(nameWithoutGeneric);
|
|
57
|
+
result.lineRange = [
|
|
58
|
+
Math.min(...infos.map((info) => info.lineRange[0])),
|
|
59
|
+
Math.max(...infos.map((info) => info.lineRange[1])),
|
|
60
|
+
];
|
|
61
|
+
result.branchCoverageRate = Rate.summarize(infos.map((info) => info.branchCoverageRate));
|
|
62
|
+
for (const info of infos) {
|
|
63
|
+
for (const line of info.uncoveredLines)
|
|
64
|
+
result.uncoveredLines.add(line);
|
|
65
|
+
for (const [lineIndex, count] of info.sourceUsedCount.entries()) {
|
|
66
|
+
const srcLineUsedCount = result.sourceUsedCount.get(lineIndex);
|
|
67
|
+
result.sourceUsedCount.set(lineIndex, srcLineUsedCount === undefined ? count : srcLineUsedCount + count);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
return result;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
export class CodeCoverage {
|
|
74
|
+
static default = -1;
|
|
75
|
+
source;
|
|
76
|
+
/**
|
|
77
|
+
* Default means not a effect line;
|
|
78
|
+
* 0 means not used but effect;
|
|
79
|
+
* more than 0 means a used line;
|
|
80
|
+
*/
|
|
81
|
+
usedCount = CodeCoverage.default;
|
|
82
|
+
constructor(src) {
|
|
83
|
+
this.source = src;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
//# sourceMappingURL=interface.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interface.js","sourceRoot":"","sources":["../../../tools/test_runner/utils/interface.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"name.js","sourceRoot":"","sources":["../../../tools/test_runner/utils/name.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,gBAAgB,GAAG,gBAAgB,CAAC;AACjD,MAAM,CAAC,MAAM,UAAU,GAAG,yCAAyC,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export declare function splitCommand(cmdline: string): {
|
|
2
|
+
cmd: string;
|
|
3
|
+
argv: string[];
|
|
4
|
+
};
|
|
5
|
+
export declare function findRoot(filePaths: string[]): string;
|
|
6
|
+
export declare function getIncludeFiles(includePatterns: string[], filter: (path: string) => boolean): string[];
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import assert from "node:assert";
|
|
2
|
+
import fs from "fs-extra";
|
|
3
|
+
import { glob } from "glob";
|
|
4
|
+
import { dirname, join, relative, resolve } from "node:path";
|
|
5
|
+
export function splitCommand(cmdline) {
|
|
6
|
+
const res = new Array();
|
|
7
|
+
let depth = 0;
|
|
8
|
+
let last = 0;
|
|
9
|
+
for (let i = 0; i < cmdline.length; i++) {
|
|
10
|
+
const ch = cmdline.charAt(i);
|
|
11
|
+
if (ch === '"' || ch === "'" || ch === "`") {
|
|
12
|
+
depth++;
|
|
13
|
+
}
|
|
14
|
+
else if (ch === " " && depth % 2 === 0 && (i === 0 || cmdline.charAt(i - 1) !== "\\")) {
|
|
15
|
+
if (last !== i) {
|
|
16
|
+
const argv = cmdline.slice(last, i).replaceAll(/\\ /g, " ");
|
|
17
|
+
res.push(argv);
|
|
18
|
+
}
|
|
19
|
+
last = i + 1;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
if (last !== cmdline.length) {
|
|
23
|
+
res.push(cmdline.slice(last));
|
|
24
|
+
}
|
|
25
|
+
const cmd = res[0];
|
|
26
|
+
if (cmd === undefined)
|
|
27
|
+
throw new Error(`Invalid Command: ${cmdline}`);
|
|
28
|
+
const argv = res.slice(1);
|
|
29
|
+
return { cmd: cmd, argv: argv };
|
|
30
|
+
}
|
|
31
|
+
function getAllFileInFolder(folder, filter = () => true) {
|
|
32
|
+
const res = [];
|
|
33
|
+
let sub;
|
|
34
|
+
try {
|
|
35
|
+
sub = fs.readdirSync(folder).map((v) => join(folder, v));
|
|
36
|
+
}
|
|
37
|
+
catch (error) {
|
|
38
|
+
if (error instanceof Error) {
|
|
39
|
+
console.error(error.stack);
|
|
40
|
+
}
|
|
41
|
+
throw new Error(`read "${folder}" info failed`);
|
|
42
|
+
}
|
|
43
|
+
for (const f of sub) {
|
|
44
|
+
const st = fs.statSync(f);
|
|
45
|
+
if (st.isFile() && filter(f)) {
|
|
46
|
+
res.push(f);
|
|
47
|
+
}
|
|
48
|
+
else if (st.isDirectory()) {
|
|
49
|
+
res.push(...getAllFileInFolder(f, filter));
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
return res;
|
|
53
|
+
}
|
|
54
|
+
export function findRoot(filePaths) {
|
|
55
|
+
if (filePaths.length === 1) {
|
|
56
|
+
const filePath = filePaths[0];
|
|
57
|
+
assert(filePath !== undefined);
|
|
58
|
+
return dirname(filePath);
|
|
59
|
+
}
|
|
60
|
+
const absPaths = filePaths.map((p) => {
|
|
61
|
+
return resolve(p);
|
|
62
|
+
});
|
|
63
|
+
const p0 = absPaths[0];
|
|
64
|
+
if (p0 === undefined) {
|
|
65
|
+
throw new Error("include length is zeros");
|
|
66
|
+
}
|
|
67
|
+
let root = p0;
|
|
68
|
+
while (!absPaths.every((v) => v.startsWith(root))) {
|
|
69
|
+
root = dirname(root);
|
|
70
|
+
}
|
|
71
|
+
root = relative(".", root);
|
|
72
|
+
if (root === "") {
|
|
73
|
+
root = ".";
|
|
74
|
+
}
|
|
75
|
+
if (root.startsWith("..")) {
|
|
76
|
+
throw new Error("file path out of project range");
|
|
77
|
+
}
|
|
78
|
+
return root;
|
|
79
|
+
}
|
|
80
|
+
export function getIncludeFiles(includePatterns, filter) {
|
|
81
|
+
const flatPatterns = includePatterns.flatMap((pattern) => {
|
|
82
|
+
return glob.sync(pattern);
|
|
83
|
+
});
|
|
84
|
+
const files = flatPatterns.flatMap((flatPattern) => {
|
|
85
|
+
const st = fs.statSync(flatPattern);
|
|
86
|
+
if (st.isDirectory()) {
|
|
87
|
+
return getAllFileInFolder(flatPattern, filter);
|
|
88
|
+
}
|
|
89
|
+
else if (st.isFile() && filter(flatPattern)) {
|
|
90
|
+
return [flatPattern];
|
|
91
|
+
}
|
|
92
|
+
else {
|
|
93
|
+
return [];
|
|
94
|
+
}
|
|
95
|
+
});
|
|
96
|
+
return files;
|
|
97
|
+
}
|
|
98
|
+
//# sourceMappingURL=pathResolver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pathResolver.js","sourceRoot":"","sources":["../../../tools/test_runner/utils/pathResolver.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const projectRoot: string;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"projectRoot.js","sourceRoot":"","sources":["../../../tools/test_runner/utils/projectRoot.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,aAAa,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAE9C,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export declare class WebAssemblyModule {
|
|
2
|
+
baseName: string;
|
|
3
|
+
private m;
|
|
4
|
+
constructor(baseName: string);
|
|
5
|
+
get wasm(): string;
|
|
6
|
+
get sourceMap(): string;
|
|
7
|
+
get traceFile(): string;
|
|
8
|
+
getModule(): Promise<WebAssembly.Module>;
|
|
9
|
+
getCustomSectionPayload(sectionName: string): Promise<Uint8Array | null>;
|
|
10
|
+
getCustomSectionUtf8(sectionName: string): Promise<string | null>;
|
|
11
|
+
getImports(): Promise<WebAssembly.ModuleImportDescriptor[]>;
|
|
12
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
// Copyright (C) 2025 wasm-ecosystem
|
|
2
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
import { openAsBlob } from "fs";
|
|
4
|
+
import { relative } from "path";
|
|
5
|
+
export class WebAssemblyModule {
|
|
6
|
+
baseName;
|
|
7
|
+
m = null;
|
|
8
|
+
constructor(baseName) {
|
|
9
|
+
this.baseName = relative(process.cwd(), baseName).replaceAll(/\\/g, "/");
|
|
10
|
+
}
|
|
11
|
+
get wasm() {
|
|
12
|
+
return this.baseName.concat(".instrumented.wasm");
|
|
13
|
+
}
|
|
14
|
+
get sourceMap() {
|
|
15
|
+
return this.baseName.concat(".instrumented.wasm.map");
|
|
16
|
+
}
|
|
17
|
+
get traceFile() {
|
|
18
|
+
return this.baseName.concat(".trace");
|
|
19
|
+
}
|
|
20
|
+
async getModule() {
|
|
21
|
+
if (this.m)
|
|
22
|
+
return this.m;
|
|
23
|
+
const bytes = await (await openAsBlob(this.wasm)).arrayBuffer();
|
|
24
|
+
this.m = new WebAssembly.Module(bytes);
|
|
25
|
+
return this.m;
|
|
26
|
+
}
|
|
27
|
+
async getCustomSectionPayload(sectionName) {
|
|
28
|
+
const sections = WebAssembly.Module.customSections(await this.getModule(), sectionName);
|
|
29
|
+
if (sections.length === 0)
|
|
30
|
+
return null;
|
|
31
|
+
if (sections.length > 1)
|
|
32
|
+
throw new Error(`multiple wasm custom sections found: '${sectionName}'`);
|
|
33
|
+
return new Uint8Array(sections[0]);
|
|
34
|
+
}
|
|
35
|
+
async getCustomSectionUtf8(sectionName) {
|
|
36
|
+
const payload = await this.getCustomSectionPayload(sectionName);
|
|
37
|
+
if (payload === null)
|
|
38
|
+
return null;
|
|
39
|
+
return new TextDecoder("utf-8").decode(payload);
|
|
40
|
+
}
|
|
41
|
+
async getImports() {
|
|
42
|
+
return WebAssembly.Module.imports(await this.getModule());
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=wasm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wasm.js","sourceRoot":"","sources":["../../../tools/test_runner/utils/wasm.ts"],"names":[],"mappings":"AAAA,oCAAoC;AACpC,sCAAsC;AAEtC,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAChC,OAAO,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AAEhC,MAAM,OAAO,iBAAiB;IAC5B,QAAQ,CAAS;IACT,CAAC,GAA8B,IAAI,CAAC;IAC5C,YAAY,QAAgB;QAC1B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,QAAQ,CAAC,CAAC,UAAU,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAC3E,CAAC;IACD,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;IACpD,CAAC;IACD,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,wBAAwB,CAAC,CAAC;IACxD,CAAC;IACD,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACxC,CAAC;IAED,KAAK,CAAC,SAAS;QACb,IAAI,IAAI,CAAC,CAAC;YAAE,OAAO,IAAI,CAAC,CAAC,CAAC;QAC1B,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;QAChE,IAAI,CAAC,CAAC,GAAG,IAAI,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACvC,OAAO,IAAI,CAAC,CAAE,CAAC;IACjB,CAAC;IAED,KAAK,CAAC,uBAAuB,CAAC,WAAmB;QAC/C,MAAM,QAAQ,GAAG,WAAW,CAAC,MAAM,CAAC,cAAc,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,EAAE,WAAW,CAAC,CAAC;QACxF,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;QACvC,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,yCAAyC,WAAW,GAAG,CAAC,CAAC;QAClG,OAAO,IAAI,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAE,CAAC,CAAC;IACtC,CAAC;IAED,KAAK,CAAC,oBAAoB,CAAC,WAAmB;QAC5C,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,uBAAuB,CAAC,WAAW,CAAC,CAAC;QAChE,IAAI,OAAO,KAAK,IAAI;YAAE,OAAO,IAAI,CAAC;QAClC,OAAO,IAAI,WAAW,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAClD,CAAC;IAED,KAAK,CAAC,UAAU;QACd,OAAO,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;IAC5D,CAAC;CACF"}
|
package/dist/warpo.js
CHANGED
|
@@ -1,4 +1,11 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
2
|
+
// Copyright (C) 2025 wasm-ecosystem
|
|
3
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
4
|
+
import { argv as processArgv, env as processEnv, exit as processExit } from "node:process";
|
|
5
|
+
import { main } from "./warpo_internal.js";
|
|
6
|
+
main({ argv: processArgv.slice(2), env: processEnv })
|
|
7
|
+
.then((code) => processExit(code))
|
|
8
|
+
.catch(() => {
|
|
9
|
+
processExit(255);
|
|
10
|
+
});
|
|
11
|
+
//# sourceMappingURL=warpo.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"warpo.js","sourceRoot":"","sources":["../tools/warpo.ts"],"names":[],"mappings":";AAEA,oCAAoC;AACpC,sCAAsC;AAEtC,OAAO,EAAE,IAAI,IAAI,WAAW,EAAE,GAAG,IAAI,UAAU,EAAE,IAAI,IAAI,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3F,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAE3C,IAAI,CAAC,EAAE,IAAI,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,UAAU,EAAE,CAAC;KAClD,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;KACjC,KAAK,CAAC,GAAG,EAAE;IACV,WAAW,CAAC,GAAG,CAAC,CAAC;AACnB,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
// Copyright (C) 2026 wasm-ecosystem
|
|
2
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
import { existsSync, readFileSync } from "node:fs";
|
|
4
|
+
import { join } from "node:path";
|
|
5
|
+
import { Command } from "commander";
|
|
6
|
+
import { build as runCompiler } from "./scripts/lib.js";
|
|
7
|
+
import { runFromCliArgs as runUnitTestsFromCliArgs } from "./test_runner/cli.js";
|
|
8
|
+
const warpoRoot = join(import.meta.dirname, "..");
|
|
9
|
+
function getVersion() {
|
|
10
|
+
try {
|
|
11
|
+
return JSON.parse(readFileSync(join(warpoRoot, "package.json"), "utf8")).version;
|
|
12
|
+
}
|
|
13
|
+
catch {
|
|
14
|
+
return "unknown";
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
export async function main(options) {
|
|
18
|
+
const args = options.argv;
|
|
19
|
+
// Preserve legacy behavior: direct compiler invocation when not using subcommands.
|
|
20
|
+
const first = args[0];
|
|
21
|
+
if (first !== undefined &&
|
|
22
|
+
first !== "build" &&
|
|
23
|
+
first !== "test" &&
|
|
24
|
+
first !== "-h" &&
|
|
25
|
+
first !== "--help" &&
|
|
26
|
+
first !== "--version" &&
|
|
27
|
+
first !== "-v") {
|
|
28
|
+
return await runCompiler({ argv: args, env: options.env, cwd: options.cwd });
|
|
29
|
+
}
|
|
30
|
+
let returnCode = 0;
|
|
31
|
+
const program = new Command();
|
|
32
|
+
program.name("warpo").description("compiler + tooling");
|
|
33
|
+
program.showHelpAfterError(true);
|
|
34
|
+
program.version(getVersion(), "-v, --version", "Print version");
|
|
35
|
+
program
|
|
36
|
+
.command("build")
|
|
37
|
+
.description("Build AssemblyScript project via WARPO compiler")
|
|
38
|
+
.allowUnknownOption(true)
|
|
39
|
+
.argument("[buildArgs...]", "Arguments passed through to warpo_asc")
|
|
40
|
+
.action(async () => {
|
|
41
|
+
const index = args.indexOf("build");
|
|
42
|
+
const buildArgs = index === -1 ? [] : args.slice(index + 1);
|
|
43
|
+
const cwd = options.cwd ?? process.cwd();
|
|
44
|
+
const handleConfigOption = (args) => {
|
|
45
|
+
const configPath = join(cwd, "asconfig.json");
|
|
46
|
+
const hasConfig = args.includes("--config") || args.includes("-c");
|
|
47
|
+
return !hasConfig && existsSync(configPath) ? [...args, "--config", configPath] : args;
|
|
48
|
+
};
|
|
49
|
+
const handleProjectOption = (args) => {
|
|
50
|
+
const hasProject = args.includes("--project") || args.includes("-p");
|
|
51
|
+
return !hasProject && existsSync(join(cwd, "create.ts")) ? [...args, "--project", cwd] : args;
|
|
52
|
+
};
|
|
53
|
+
returnCode = await runCompiler({
|
|
54
|
+
argv: [handleConfigOption, handleProjectOption].reduce((args, handler) => handler(args), buildArgs),
|
|
55
|
+
env: options.env,
|
|
56
|
+
cwd: options.cwd,
|
|
57
|
+
onStdout: options.onStdout,
|
|
58
|
+
});
|
|
59
|
+
});
|
|
60
|
+
program
|
|
61
|
+
.command("test")
|
|
62
|
+
.description("Run unit tests via WARPO test runner")
|
|
63
|
+
.helpOption(false)
|
|
64
|
+
.allowUnknownOption(true)
|
|
65
|
+
.argument("[testArgs...]", "Arguments passed through to the test runner")
|
|
66
|
+
.action(async () => {
|
|
67
|
+
const index = args.indexOf("test");
|
|
68
|
+
const testArgs = index === -1 ? [] : args.slice(index + 1);
|
|
69
|
+
returnCode = await runUnitTestsFromCliArgs(testArgs);
|
|
70
|
+
});
|
|
71
|
+
await program.parseAsync(args, { from: "user" });
|
|
72
|
+
return returnCode;
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=warpo_internal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"warpo_internal.js","sourceRoot":"","sources":["../tools/warpo_internal.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,23 +1,25 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "warpo",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.5.0-alpha-2",
|
|
4
4
|
"description": "next generation AssemblyScript compiler with optimizations",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
7
7
|
"warpo": "dist/warpo.js"
|
|
8
8
|
},
|
|
9
9
|
"scripts": {
|
|
10
|
-
"
|
|
10
|
+
"update": "cmake -S . -B build && cmake --build build --parallel --target warpo_binaryen_enums_gen && ./build/bin/warpo_binaryen_enums_gen",
|
|
11
|
+
"build:ts": "tsc -p tools/tsconfig.json",
|
|
11
12
|
"build:cpp": "cmake -S . -B build && cmake --build build --parallel",
|
|
12
13
|
"build": "npm run build:ts && npm run build:cpp",
|
|
13
|
-
"test:as:ut": "
|
|
14
|
+
"test:as:ut": "node dist/warpo.js test",
|
|
14
15
|
"test:cpp:ut": "cd build && ctest --output-on-failure",
|
|
15
16
|
"test:as:snapshot": "cross-env-shell ./build/tests/frontend/warpo_frontend_test",
|
|
16
17
|
"test:opt:snapshot": "node tests/snapshot_diff/index.mjs",
|
|
17
18
|
"test:bootstrap:debug": "./tests/bootstrap/debug.sh",
|
|
18
19
|
"test:bootstrap:release": "./tests/bootstrap/release.sh",
|
|
19
|
-
"test:debug_symbol": "cross-env-shell ./build/tests/
|
|
20
|
-
"test:debug_symbol:update": "cross-env-shell build/tests/
|
|
20
|
+
"test:debug_symbol": "cross-env-shell ./build/tests/dwarf/TestDebugSymbol",
|
|
21
|
+
"test:debug_symbol:update": "cross-env-shell build/tests/dwarf/TestDebugSymbol --update-fixtures",
|
|
22
|
+
"test:debug_server": "node --import tsx --test tools/debug_server/tests/**/*.test.ts",
|
|
21
23
|
"test:driver": "node tests/driver/index.mjs",
|
|
22
24
|
"test": "npm run test:as:ut && npm run test:cpp:ut && npm run test:as:snapshot && npm run test:opt:snapshot && npm run test:driver && npm run test:debug_symbol",
|
|
23
25
|
"test:all": "npm run test && npm run test:bootstrap:debug && npm run test:bootstrap:release",
|
|
@@ -26,6 +28,7 @@
|
|
|
26
28
|
"docs:build": "vitepress build docs",
|
|
27
29
|
"prettier": "prettier --check .",
|
|
28
30
|
"prettier:fix": "prettier --write .",
|
|
31
|
+
"lint": "npx eslint --config tools/debug_server/eslint.config.mjs tools/debug_server/ && npx eslint --config debugger/eslint.config.mjs debugger/src/",
|
|
29
32
|
"cspell": "cspell ."
|
|
30
33
|
},
|
|
31
34
|
"license": "Apache-2.0",
|
|
@@ -49,16 +52,41 @@
|
|
|
49
52
|
],
|
|
50
53
|
"devDependencies": {
|
|
51
54
|
"@assemblyscript/loader": "^0.28.9",
|
|
55
|
+
"@eslint/js": "^9.0.0",
|
|
56
|
+
"@types/fs-extra": "^11.0.4",
|
|
52
57
|
"@types/node": "^22.15.21",
|
|
58
|
+
"@types/vscode": "^1.80.0",
|
|
59
|
+
"@vscode/debugadapter-testsupport": "^1.65.0",
|
|
60
|
+
"@vscode/vsce": "^3.0.0",
|
|
53
61
|
"assemblyscript": "^0.28.9",
|
|
54
|
-
"assemblyscript-prettier": "^3.0.
|
|
55
|
-
"assemblyscript-unittest-framework": "^2.0.1",
|
|
56
|
-
"chalk": "^5.6.2",
|
|
62
|
+
"assemblyscript-prettier": "^3.0.4",
|
|
57
63
|
"cross-env": "^10.1.0",
|
|
58
64
|
"cspell": "^9.3.0",
|
|
59
65
|
"diff": "^8.0.0",
|
|
60
|
-
"
|
|
66
|
+
"eslint": "^9.0.0",
|
|
67
|
+
"eslint-import-resolver-typescript": "^4.4.4",
|
|
68
|
+
"eslint-plugin-import": "^2.32.0",
|
|
69
|
+
"eslint-plugin-n": "^17.23.2",
|
|
70
|
+
"eslint-plugin-promise": "^7.2.1",
|
|
71
|
+
"eslint-plugin-sonarjs": "^4.0.0",
|
|
72
|
+
"eslint-plugin-unicorn": "^63.0.0",
|
|
73
|
+
"eslint-plugin-unused-imports": "^4.4.1",
|
|
74
|
+
"expect": "^30.2.0",
|
|
75
|
+
"mermaid": "^11.13.0",
|
|
76
|
+
"prettier": "^3.8.1",
|
|
77
|
+
"tsx": "^4.0.0",
|
|
61
78
|
"typescript": "^5.8.3",
|
|
79
|
+
"typescript-eslint": "^8.55.0",
|
|
62
80
|
"vitepress": "^2.0.0-alpha.15"
|
|
81
|
+
},
|
|
82
|
+
"dependencies": {
|
|
83
|
+
"@vscode/debugadapter": "^1.68.0",
|
|
84
|
+
"@vscode/debugprotocol": "^1.68.0",
|
|
85
|
+
"chalk": "^5.6.2",
|
|
86
|
+
"commander": "^14.0.3",
|
|
87
|
+
"fs-extra": "^11.3.3",
|
|
88
|
+
"glob": "^13.0.0",
|
|
89
|
+
"ignore": "^7.0.5",
|
|
90
|
+
"source-map": "^0.7.6"
|
|
63
91
|
}
|
|
64
92
|
}
|