@typespec/compiler 1.2.0-dev.4 → 1.2.0-dev.6
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/manifest.js +2 -2
- package/dist/src/testing/fourslash.d.ts +16 -0
- package/dist/src/testing/fourslash.d.ts.map +1 -0
- package/dist/src/testing/fourslash.js +17 -0
- package/dist/src/testing/fourslash.js.map +1 -0
- package/dist/src/testing/fs.d.ts +12 -0
- package/dist/src/testing/fs.d.ts.map +1 -0
- package/dist/src/testing/fs.js +133 -0
- package/dist/src/testing/fs.js.map +1 -0
- package/dist/src/testing/index.d.ts +9 -2
- package/dist/src/testing/index.d.ts.map +1 -1
- package/dist/src/testing/index.js +7 -1
- package/dist/src/testing/index.js.map +1 -1
- package/dist/src/testing/marked-template.d.ts +96 -0
- package/dist/src/testing/marked-template.d.ts.map +1 -0
- package/dist/src/testing/marked-template.js +107 -0
- package/dist/src/testing/marked-template.js.map +1 -0
- package/dist/src/testing/rule-tester.d.ts +2 -2
- package/dist/src/testing/rule-tester.d.ts.map +1 -1
- package/dist/src/testing/rule-tester.js +2 -1
- package/dist/src/testing/rule-tester.js.map +1 -1
- package/dist/src/testing/test-compiler-host.d.ts +11 -0
- package/dist/src/testing/test-compiler-host.d.ts.map +1 -0
- package/dist/src/testing/test-compiler-host.js +138 -0
- package/dist/src/testing/test-compiler-host.js.map +1 -0
- package/dist/src/testing/test-host.d.ts +3 -9
- package/dist/src/testing/test-host.d.ts.map +1 -1
- package/dist/src/testing/test-host.js +6 -218
- package/dist/src/testing/test-host.js.map +1 -1
- package/dist/src/testing/test-server-host.d.ts +1 -1
- package/dist/src/testing/test-server-host.d.ts.map +1 -1
- package/dist/src/testing/test-server-host.js +2 -1
- package/dist/src/testing/test-server-host.js.map +1 -1
- package/dist/src/testing/tester.d.ts +12 -0
- package/dist/src/testing/tester.d.ts.map +1 -0
- package/dist/src/testing/tester.js +339 -0
- package/dist/src/testing/tester.js.map +1 -0
- package/dist/src/testing/types.d.ts +146 -3
- package/dist/src/testing/types.d.ts.map +1 -1
- package/dist/src/testing/types.js +1 -0
- package/dist/src/testing/types.js.map +1 -1
- package/dist/src/typekit/kits/literal.d.ts.map +1 -1
- package/dist/src/typekit/kits/literal.js +4 -25
- package/dist/src/typekit/kits/literal.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
import { fileURLToPath, pathToFileURL } from "url";
|
|
2
|
+
import { CompilerPackageRoot, NodeHost } from "../core/node-host.js";
|
|
3
|
+
import { createSourceFile, getSourceFileKindFromExt } from "../core/source-file.js";
|
|
4
|
+
import { resolveVirtualPath } from "./fs.js";
|
|
5
|
+
import { TestHostError } from "./types.js";
|
|
6
|
+
export const StandardTestLibrary = {
|
|
7
|
+
name: "@typespec/compiler",
|
|
8
|
+
packageRoot: CompilerPackageRoot,
|
|
9
|
+
files: [
|
|
10
|
+
{ virtualPath: "./.tsp/dist/src/lib", realDir: "./dist/src/lib", pattern: "**" },
|
|
11
|
+
{ virtualPath: "./.tsp/lib", realDir: "./lib", pattern: "**" },
|
|
12
|
+
],
|
|
13
|
+
};
|
|
14
|
+
export function createTestCompilerHost(virtualFs, jsImports, options) {
|
|
15
|
+
const libDirs = [resolveVirtualPath(".tsp/lib/std")];
|
|
16
|
+
if (!options?.excludeTestLib) {
|
|
17
|
+
libDirs.push(resolveVirtualPath(".tsp/test-lib"));
|
|
18
|
+
}
|
|
19
|
+
return {
|
|
20
|
+
async readUrl(url) {
|
|
21
|
+
const contents = virtualFs.get(url);
|
|
22
|
+
if (contents === undefined) {
|
|
23
|
+
throw new TestHostError(`File ${url} not found.`, "ENOENT");
|
|
24
|
+
}
|
|
25
|
+
return createSourceFile(contents, url);
|
|
26
|
+
},
|
|
27
|
+
async readFile(path) {
|
|
28
|
+
path = resolveVirtualPath(path);
|
|
29
|
+
const contents = virtualFs.get(path);
|
|
30
|
+
if (contents === undefined) {
|
|
31
|
+
throw new TestHostError(`File ${path} not found.`, "ENOENT");
|
|
32
|
+
}
|
|
33
|
+
return createSourceFile(contents, path);
|
|
34
|
+
},
|
|
35
|
+
async writeFile(path, content) {
|
|
36
|
+
path = resolveVirtualPath(path);
|
|
37
|
+
virtualFs.set(path, content);
|
|
38
|
+
},
|
|
39
|
+
async readDir(path) {
|
|
40
|
+
path = resolveVirtualPath(path);
|
|
41
|
+
const fileFolder = [...virtualFs.keys()]
|
|
42
|
+
.filter((x) => x.startsWith(`${path}/`))
|
|
43
|
+
.map((x) => x.replace(`${path}/`, ""))
|
|
44
|
+
.map((x) => {
|
|
45
|
+
const index = x.indexOf("/");
|
|
46
|
+
return index !== -1 ? x.substring(0, index) : x;
|
|
47
|
+
});
|
|
48
|
+
return [...new Set(fileFolder)];
|
|
49
|
+
},
|
|
50
|
+
async rm(path, options) {
|
|
51
|
+
path = resolveVirtualPath(path);
|
|
52
|
+
if (options.recursive && !virtualFs.has(path)) {
|
|
53
|
+
for (const key of virtualFs.keys()) {
|
|
54
|
+
if (key.startsWith(`${path}/`)) {
|
|
55
|
+
virtualFs.delete(key);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
else {
|
|
60
|
+
virtualFs.delete(path);
|
|
61
|
+
}
|
|
62
|
+
},
|
|
63
|
+
getLibDirs() {
|
|
64
|
+
return libDirs;
|
|
65
|
+
},
|
|
66
|
+
getExecutionRoot() {
|
|
67
|
+
return resolveVirtualPath(".tsp");
|
|
68
|
+
},
|
|
69
|
+
async getJsImport(path) {
|
|
70
|
+
path = resolveVirtualPath(path);
|
|
71
|
+
const module = jsImports.get(path);
|
|
72
|
+
if (module === undefined) {
|
|
73
|
+
throw new TestHostError(`Module ${path} not found`, "ERR_MODULE_NOT_FOUND");
|
|
74
|
+
}
|
|
75
|
+
return module;
|
|
76
|
+
},
|
|
77
|
+
async stat(path) {
|
|
78
|
+
path = resolveVirtualPath(path);
|
|
79
|
+
if (virtualFs.has(path)) {
|
|
80
|
+
return {
|
|
81
|
+
isDirectory() {
|
|
82
|
+
return false;
|
|
83
|
+
},
|
|
84
|
+
isFile() {
|
|
85
|
+
return true;
|
|
86
|
+
},
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
for (const fsPath of virtualFs.keys()) {
|
|
90
|
+
if (fsPath.startsWith(path) && fsPath !== path) {
|
|
91
|
+
return {
|
|
92
|
+
isDirectory() {
|
|
93
|
+
return true;
|
|
94
|
+
},
|
|
95
|
+
isFile() {
|
|
96
|
+
return false;
|
|
97
|
+
},
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
throw new TestHostError(`File ${path} not found`, "ENOENT");
|
|
102
|
+
},
|
|
103
|
+
// symlinks not supported in test-host
|
|
104
|
+
async realpath(path) {
|
|
105
|
+
return path;
|
|
106
|
+
},
|
|
107
|
+
getSourceFileKind: getSourceFileKindFromExt,
|
|
108
|
+
logSink: { log: NodeHost.logSink.log },
|
|
109
|
+
mkdirp: async (path) => path,
|
|
110
|
+
fileURLToPath,
|
|
111
|
+
pathToFileURL(path) {
|
|
112
|
+
return pathToFileURL(path).href;
|
|
113
|
+
},
|
|
114
|
+
...options?.compilerHostOverrides,
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
export function addTestLib(fs) {
|
|
118
|
+
const testTypes = {};
|
|
119
|
+
// add test decorators
|
|
120
|
+
fs.add(".tsp/test-lib/main.tsp", 'import "./test.js";');
|
|
121
|
+
fs.addJsFile(".tsp/test-lib/test.js", {
|
|
122
|
+
namespace: "TypeSpec",
|
|
123
|
+
$test(_, target, nameLiteral) {
|
|
124
|
+
let name = nameLiteral?.value;
|
|
125
|
+
if (!name) {
|
|
126
|
+
if ("name" in target && typeof target.name === "string") {
|
|
127
|
+
name = target.name;
|
|
128
|
+
}
|
|
129
|
+
else {
|
|
130
|
+
throw new Error("Need to specify a name for test type");
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
testTypes[name] = target;
|
|
134
|
+
},
|
|
135
|
+
});
|
|
136
|
+
return testTypes;
|
|
137
|
+
}
|
|
138
|
+
//# sourceMappingURL=test-compiler-host.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test-compiler-host.js","sourceRoot":"","sources":["../../../src/testing/test-compiler-host.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACnD,OAAO,EAAE,mBAAmB,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACrE,OAAO,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAEpF,OAAO,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAC7C,OAAO,EAAkB,aAAa,EAAuB,MAAM,YAAY,CAAC;AAEhF,MAAM,CAAC,MAAM,mBAAmB,GAAwB;IACtD,IAAI,EAAE,oBAAoB;IAC1B,WAAW,EAAE,mBAAmB;IAChC,KAAK,EAAE;QACL,EAAE,WAAW,EAAE,qBAAqB,EAAE,OAAO,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE;QAChF,EAAE,WAAW,EAAE,YAAY,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE;KAC/D;CACF,CAAC;AAQF,MAAM,UAAU,sBAAsB,CACpC,SAA8B,EAC9B,SAA2C,EAC3C,OAAyB;IAEzB,MAAM,OAAO,GAAG,CAAC,kBAAkB,CAAC,cAAc,CAAC,CAAC,CAAC;IACrD,IAAI,CAAC,OAAO,EAAE,cAAc,EAAE,CAAC;QAC7B,OAAO,CAAC,IAAI,CAAC,kBAAkB,CAAC,eAAe,CAAC,CAAC,CAAC;IACpD,CAAC;IAED,OAAO;QACL,KAAK,CAAC,OAAO,CAAC,GAAW;YACvB,MAAM,QAAQ,GAAG,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACpC,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;gBAC3B,MAAM,IAAI,aAAa,CAAC,QAAQ,GAAG,aAAa,EAAE,QAAQ,CAAC,CAAC;YAC9D,CAAC;YACD,OAAO,gBAAgB,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;QACzC,CAAC;QACD,KAAK,CAAC,QAAQ,CAAC,IAAY;YACzB,IAAI,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;YAChC,MAAM,QAAQ,GAAG,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACrC,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;gBAC3B,MAAM,IAAI,aAAa,CAAC,QAAQ,IAAI,aAAa,EAAE,QAAQ,CAAC,CAAC;YAC/D,CAAC;YACD,OAAO,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QAC1C,CAAC;QAED,KAAK,CAAC,SAAS,CAAC,IAAY,EAAE,OAAe;YAC3C,IAAI,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;YAChC,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAC/B,CAAC;QAED,KAAK,CAAC,OAAO,CAAC,IAAY;YACxB,IAAI,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;YAChC,MAAM,UAAU,GAAG,CAAC,GAAG,SAAS,CAAC,IAAI,EAAE,CAAC;iBACrC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC;iBACvC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,IAAI,GAAG,EAAE,EAAE,CAAC,CAAC;iBACrC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;gBACT,MAAM,KAAK,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;gBAC7B,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAClD,CAAC,CAAC,CAAC;YACL,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC;QAClC,CAAC;QAED,KAAK,CAAC,EAAE,CAAC,IAAY,EAAE,OAAkB;YACvC,IAAI,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;YAEhC,IAAI,OAAO,CAAC,SAAS,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC9C,KAAK,MAAM,GAAG,IAAI,SAAS,CAAC,IAAI,EAAE,EAAE,CAAC;oBACnC,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,IAAI,GAAG,CAAC,EAAE,CAAC;wBAC/B,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;oBACxB,CAAC;gBACH,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACzB,CAAC;QACH,CAAC;QAED,UAAU;YACR,OAAO,OAAO,CAAC;QACjB,CAAC;QAED,gBAAgB;YACd,OAAO,kBAAkB,CAAC,MAAM,CAAC,CAAC;QACpC,CAAC;QAED,KAAK,CAAC,WAAW,CAAC,IAAI;YACpB,IAAI,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;YAChC,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACnC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;gBACzB,MAAM,IAAI,aAAa,CAAC,UAAU,IAAI,YAAY,EAAE,sBAAsB,CAAC,CAAC;YAC9E,CAAC;YACD,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,KAAK,CAAC,IAAI,CAAC,IAAY;YACrB,IAAI,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;YAEhC,IAAI,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;gBACxB,OAAO;oBACL,WAAW;wBACT,OAAO,KAAK,CAAC;oBACf,CAAC;oBACD,MAAM;wBACJ,OAAO,IAAI,CAAC;oBACd,CAAC;iBACF,CAAC;YACJ,CAAC;YAED,KAAK,MAAM,MAAM,IAAI,SAAS,CAAC,IAAI,EAAE,EAAE,CAAC;gBACtC,IAAI,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;oBAC/C,OAAO;wBACL,WAAW;4BACT,OAAO,IAAI,CAAC;wBACd,CAAC;wBACD,MAAM;4BACJ,OAAO,KAAK,CAAC;wBACf,CAAC;qBACF,CAAC;gBACJ,CAAC;YACH,CAAC;YAED,MAAM,IAAI,aAAa,CAAC,QAAQ,IAAI,YAAY,EAAE,QAAQ,CAAC,CAAC;QAC9D,CAAC;QAED,sCAAsC;QACtC,KAAK,CAAC,QAAQ,CAAC,IAAI;YACjB,OAAO,IAAI,CAAC;QACd,CAAC;QACD,iBAAiB,EAAE,wBAAwB;QAE3C,OAAO,EAAE,EAAE,GAAG,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE;QACtC,MAAM,EAAE,KAAK,EAAE,IAAY,EAAE,EAAE,CAAC,IAAI;QACpC,aAAa;QACb,aAAa,CAAC,IAAY;YACxB,OAAO,aAAa,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC;QAClC,CAAC;QAED,GAAG,OAAO,EAAE,qBAAqB;KAClC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,EAAkB;IAC3C,MAAM,SAAS,GAAyB,EAAE,CAAC;IAC3C,sBAAsB;IACtB,EAAE,CAAC,GAAG,CAAC,wBAAwB,EAAE,qBAAqB,CAAC,CAAC;IACxD,EAAE,CAAC,SAAS,CAAC,uBAAuB,EAAE;QACpC,SAAS,EAAE,UAAU;QACrB,KAAK,CAAC,CAAM,EAAE,MAAY,EAAE,WAA2B;YACrD,IAAI,IAAI,GAAG,WAAW,EAAE,KAAK,CAAC;YAC9B,IAAI,CAAC,IAAI,EAAE,CAAC;gBACV,IAAI,MAAM,IAAI,MAAM,IAAI,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;oBACxD,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;gBACrB,CAAC;qBAAM,CAAC;oBACN,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;gBAC1D,CAAC;YACH,CAAC;YAED,SAAS,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;QAC3B,CAAC;KACF,CAAC,CAAC;IACH,OAAO,SAAS,CAAC;AACnB,CAAC"}
|
|
@@ -1,13 +1,7 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
3
|
-
export interface TestHostOptions {
|
|
4
|
-
caseInsensitiveFileSystem?: boolean;
|
|
5
|
-
excludeTestLib?: boolean;
|
|
6
|
-
compilerHostOverrides?: Partial<CompilerHost>;
|
|
7
|
-
}
|
|
8
|
-
export declare function createTestFileSystem(options?: TestHostOptions): Promise<TestFileSystem>;
|
|
9
|
-
export declare const StandardTestLibrary: TypeSpecTestLibrary;
|
|
1
|
+
import { BasicTestRunner, TestHost, TestHostConfig } from "./types.js";
|
|
2
|
+
/** Use {@link createTester} */
|
|
10
3
|
export declare function createTestHost(config?: TestHostConfig): Promise<TestHost>;
|
|
4
|
+
/** Use {@link createTester} */
|
|
11
5
|
export declare function createTestRunner(host?: TestHost): Promise<BasicTestRunner>;
|
|
12
6
|
export declare function findFilesFromPattern(directory: string, pattern: string): Promise<string[]>;
|
|
13
7
|
//# sourceMappingURL=test-host.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test-host.d.ts","sourceRoot":"","sources":["../../../src/testing/test-host.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"test-host.d.ts","sourceRoot":"","sources":["../../../src/testing/test-host.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,cAAc,EAAuB,MAAM,YAAY,CAAC;AAE5F,+BAA+B;AAC/B,wBAAsB,cAAc,CAAC,MAAM,GAAE,cAAmB,GAAG,OAAO,CAAC,QAAQ,CAAC,CASnF;AAED,+BAA+B;AAC/B,wBAAsB,gBAAgB,CAAC,IAAI,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC,eAAe,CAAC,CAGhF;AAsDD,wBAAsB,oBAAoB,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAKhG"}
|
|
@@ -1,201 +1,13 @@
|
|
|
1
1
|
import assert from "assert";
|
|
2
|
-
import { readdir, readFile, stat } from "fs/promises";
|
|
3
2
|
import { globby } from "globby";
|
|
4
|
-
import { join } from "path";
|
|
5
|
-
import { fileURLToPath, pathToFileURL } from "url";
|
|
6
3
|
import { logDiagnostics, logVerboseTestOutput } from "../core/diagnostics.js";
|
|
7
4
|
import { createLogger } from "../core/logger/logger.js";
|
|
8
|
-
import { NodeHost } from "../core/node-host.js";
|
|
9
|
-
import { getAnyExtensionFromPath, resolvePath } from "../core/path-utils.js";
|
|
10
5
|
import { compile as compileProgram } from "../core/program.js";
|
|
11
|
-
import { createSourceFile, getSourceFileKindFromExt } from "../index.js";
|
|
12
|
-
import { createStringMap } from "../utils/misc.js";
|
|
13
6
|
import { expectDiagnosticEmpty } from "./expect.js";
|
|
14
|
-
import {
|
|
15
|
-
import {
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
if (!options?.excludeTestLib) {
|
|
19
|
-
libDirs.push(resolveVirtualPath(".tsp/test-lib"));
|
|
20
|
-
}
|
|
21
|
-
return {
|
|
22
|
-
async readUrl(url) {
|
|
23
|
-
const contents = virtualFs.get(url);
|
|
24
|
-
if (contents === undefined) {
|
|
25
|
-
throw new TestHostError(`File ${url} not found.`, "ENOENT");
|
|
26
|
-
}
|
|
27
|
-
return createSourceFile(contents, url);
|
|
28
|
-
},
|
|
29
|
-
async readFile(path) {
|
|
30
|
-
path = resolveVirtualPath(path);
|
|
31
|
-
const contents = virtualFs.get(path);
|
|
32
|
-
if (contents === undefined) {
|
|
33
|
-
throw new TestHostError(`File ${path} not found.`, "ENOENT");
|
|
34
|
-
}
|
|
35
|
-
return createSourceFile(contents, path);
|
|
36
|
-
},
|
|
37
|
-
async writeFile(path, content) {
|
|
38
|
-
path = resolveVirtualPath(path);
|
|
39
|
-
virtualFs.set(path, content);
|
|
40
|
-
},
|
|
41
|
-
async readDir(path) {
|
|
42
|
-
path = resolveVirtualPath(path);
|
|
43
|
-
const fileFolder = [...virtualFs.keys()]
|
|
44
|
-
.filter((x) => x.startsWith(`${path}/`))
|
|
45
|
-
.map((x) => x.replace(`${path}/`, ""))
|
|
46
|
-
.map((x) => {
|
|
47
|
-
const index = x.indexOf("/");
|
|
48
|
-
return index !== -1 ? x.substring(0, index) : x;
|
|
49
|
-
});
|
|
50
|
-
return [...new Set(fileFolder)];
|
|
51
|
-
},
|
|
52
|
-
async rm(path, options) {
|
|
53
|
-
path = resolveVirtualPath(path);
|
|
54
|
-
if (options.recursive && !virtualFs.has(path)) {
|
|
55
|
-
for (const key of virtualFs.keys()) {
|
|
56
|
-
if (key.startsWith(`${path}/`)) {
|
|
57
|
-
virtualFs.delete(key);
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
else {
|
|
62
|
-
virtualFs.delete(path);
|
|
63
|
-
}
|
|
64
|
-
},
|
|
65
|
-
getLibDirs() {
|
|
66
|
-
return libDirs;
|
|
67
|
-
},
|
|
68
|
-
getExecutionRoot() {
|
|
69
|
-
return resolveVirtualPath(".tsp");
|
|
70
|
-
},
|
|
71
|
-
async getJsImport(path) {
|
|
72
|
-
path = resolveVirtualPath(path);
|
|
73
|
-
const module = jsImports.get(path);
|
|
74
|
-
if (module === undefined) {
|
|
75
|
-
throw new TestHostError(`Module ${path} not found`, "ERR_MODULE_NOT_FOUND");
|
|
76
|
-
}
|
|
77
|
-
return module;
|
|
78
|
-
},
|
|
79
|
-
async stat(path) {
|
|
80
|
-
path = resolveVirtualPath(path);
|
|
81
|
-
if (virtualFs.has(path)) {
|
|
82
|
-
return {
|
|
83
|
-
isDirectory() {
|
|
84
|
-
return false;
|
|
85
|
-
},
|
|
86
|
-
isFile() {
|
|
87
|
-
return true;
|
|
88
|
-
},
|
|
89
|
-
};
|
|
90
|
-
}
|
|
91
|
-
for (const fsPath of virtualFs.keys()) {
|
|
92
|
-
if (fsPath.startsWith(path) && fsPath !== path) {
|
|
93
|
-
return {
|
|
94
|
-
isDirectory() {
|
|
95
|
-
return true;
|
|
96
|
-
},
|
|
97
|
-
isFile() {
|
|
98
|
-
return false;
|
|
99
|
-
},
|
|
100
|
-
};
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
throw new TestHostError(`File ${path} not found`, "ENOENT");
|
|
104
|
-
},
|
|
105
|
-
// symlinks not supported in test-host
|
|
106
|
-
async realpath(path) {
|
|
107
|
-
return path;
|
|
108
|
-
},
|
|
109
|
-
getSourceFileKind: getSourceFileKindFromExt,
|
|
110
|
-
logSink: { log: NodeHost.logSink.log },
|
|
111
|
-
mkdirp: async (path) => path,
|
|
112
|
-
fileURLToPath,
|
|
113
|
-
pathToFileURL(path) {
|
|
114
|
-
return pathToFileURL(path).href;
|
|
115
|
-
},
|
|
116
|
-
...options?.compilerHostOverrides,
|
|
117
|
-
};
|
|
118
|
-
}
|
|
119
|
-
export async function createTestFileSystem(options) {
|
|
120
|
-
const virtualFs = createStringMap(!!options?.caseInsensitiveFileSystem);
|
|
121
|
-
const jsImports = createStringMap(!!options?.caseInsensitiveFileSystem);
|
|
122
|
-
const compilerHost = createTestCompilerHost(virtualFs, jsImports, options);
|
|
123
|
-
return {
|
|
124
|
-
addTypeSpecFile,
|
|
125
|
-
addJsFile,
|
|
126
|
-
addRealTypeSpecFile,
|
|
127
|
-
addRealJsFile,
|
|
128
|
-
addRealFolder,
|
|
129
|
-
addTypeSpecLibrary,
|
|
130
|
-
compilerHost,
|
|
131
|
-
fs: virtualFs,
|
|
132
|
-
};
|
|
133
|
-
function addTypeSpecFile(path, contents) {
|
|
134
|
-
virtualFs.set(resolveVirtualPath(path), contents);
|
|
135
|
-
}
|
|
136
|
-
function addJsFile(path, contents) {
|
|
137
|
-
const key = resolveVirtualPath(path);
|
|
138
|
-
virtualFs.set(key, ""); // don't need contents
|
|
139
|
-
jsImports.set(key, new Promise((r) => r(contents)));
|
|
140
|
-
}
|
|
141
|
-
async function addRealTypeSpecFile(path, existingPath) {
|
|
142
|
-
virtualFs.set(resolveVirtualPath(path), await readFile(existingPath, "utf8"));
|
|
143
|
-
}
|
|
144
|
-
async function addRealFolder(folder, existingFolder) {
|
|
145
|
-
const entries = await readdir(existingFolder);
|
|
146
|
-
for (const entry of entries) {
|
|
147
|
-
const existingPath = join(existingFolder, entry);
|
|
148
|
-
const virtualPath = join(folder, entry);
|
|
149
|
-
const s = await stat(existingPath);
|
|
150
|
-
if (s.isFile()) {
|
|
151
|
-
if (existingPath.endsWith(".js")) {
|
|
152
|
-
await addRealJsFile(virtualPath, existingPath);
|
|
153
|
-
}
|
|
154
|
-
else {
|
|
155
|
-
await addRealTypeSpecFile(virtualPath, existingPath);
|
|
156
|
-
}
|
|
157
|
-
}
|
|
158
|
-
if (s.isDirectory()) {
|
|
159
|
-
await addRealFolder(virtualPath, existingPath);
|
|
160
|
-
}
|
|
161
|
-
}
|
|
162
|
-
}
|
|
163
|
-
async function addRealJsFile(path, existingPath) {
|
|
164
|
-
const key = resolveVirtualPath(path);
|
|
165
|
-
const exports = await import(pathToFileURL(existingPath).href);
|
|
166
|
-
virtualFs.set(key, "");
|
|
167
|
-
jsImports.set(key, exports);
|
|
168
|
-
}
|
|
169
|
-
async function addTypeSpecLibrary(testLibrary) {
|
|
170
|
-
for (const { realDir, pattern, virtualPath } of testLibrary.files) {
|
|
171
|
-
const lookupDir = resolvePath(testLibrary.packageRoot, realDir);
|
|
172
|
-
const entries = await findFilesFromPattern(lookupDir, pattern);
|
|
173
|
-
for (const entry of entries) {
|
|
174
|
-
const fileRealPath = resolvePath(lookupDir, entry);
|
|
175
|
-
const fileVirtualPath = resolveVirtualPath(virtualPath, entry);
|
|
176
|
-
switch (getAnyExtensionFromPath(fileRealPath)) {
|
|
177
|
-
case ".tsp":
|
|
178
|
-
case ".json":
|
|
179
|
-
const contents = await readFile(fileRealPath, "utf-8");
|
|
180
|
-
addTypeSpecFile(fileVirtualPath, contents);
|
|
181
|
-
break;
|
|
182
|
-
case ".js":
|
|
183
|
-
case ".mjs":
|
|
184
|
-
await addRealJsFile(fileVirtualPath, fileRealPath);
|
|
185
|
-
break;
|
|
186
|
-
}
|
|
187
|
-
}
|
|
188
|
-
}
|
|
189
|
-
}
|
|
190
|
-
}
|
|
191
|
-
export const StandardTestLibrary = {
|
|
192
|
-
name: "@typespec/compiler",
|
|
193
|
-
packageRoot: await findTestPackageRoot(import.meta.url),
|
|
194
|
-
files: [
|
|
195
|
-
{ virtualPath: "./.tsp/dist/src/lib", realDir: "./dist/src/lib", pattern: "**" },
|
|
196
|
-
{ virtualPath: "./.tsp/lib", realDir: "./lib", pattern: "**" },
|
|
197
|
-
],
|
|
198
|
-
};
|
|
7
|
+
import { createTestFileSystem } from "./fs.js";
|
|
8
|
+
import { addTestLib, StandardTestLibrary } from "./test-compiler-host.js";
|
|
9
|
+
import { createTestWrapper, resolveVirtualPath } from "./test-utils.js";
|
|
10
|
+
/** Use {@link createTester} */
|
|
199
11
|
export async function createTestHost(config = {}) {
|
|
200
12
|
const testHost = await createTestHostInternal();
|
|
201
13
|
await testHost.addTypeSpecLibrary(StandardTestLibrary);
|
|
@@ -206,6 +18,7 @@ export async function createTestHost(config = {}) {
|
|
|
206
18
|
}
|
|
207
19
|
return testHost;
|
|
208
20
|
}
|
|
21
|
+
/** Use {@link createTester} */
|
|
209
22
|
export async function createTestRunner(host) {
|
|
210
23
|
const testHost = host ?? (await createTestHost());
|
|
211
24
|
return createTestWrapper(testHost);
|
|
@@ -213,33 +26,8 @@ export async function createTestRunner(host) {
|
|
|
213
26
|
async function createTestHostInternal() {
|
|
214
27
|
let program;
|
|
215
28
|
const libraries = [];
|
|
216
|
-
const testTypes = {};
|
|
217
29
|
const fileSystem = await createTestFileSystem();
|
|
218
|
-
|
|
219
|
-
fileSystem.addTypeSpecFile(".tsp/test-lib/main.tsp", 'import "./test.js";');
|
|
220
|
-
fileSystem.addJsFile(".tsp/test-lib/test.js", {
|
|
221
|
-
namespace: "TypeSpec",
|
|
222
|
-
$test(_, target, nameLiteral) {
|
|
223
|
-
let name = nameLiteral?.value;
|
|
224
|
-
if (!name) {
|
|
225
|
-
if (target.kind === "Model" ||
|
|
226
|
-
target.kind === "Scalar" ||
|
|
227
|
-
target.kind === "Namespace" ||
|
|
228
|
-
target.kind === "Enum" ||
|
|
229
|
-
target.kind === "Operation" ||
|
|
230
|
-
target.kind === "ModelProperty" ||
|
|
231
|
-
target.kind === "EnumMember" ||
|
|
232
|
-
target.kind === "Interface" ||
|
|
233
|
-
(target.kind === "Union" && !target.expression)) {
|
|
234
|
-
name = target.name;
|
|
235
|
-
}
|
|
236
|
-
else {
|
|
237
|
-
throw new Error("Need to specify a name for test type");
|
|
238
|
-
}
|
|
239
|
-
}
|
|
240
|
-
testTypes[name] = target;
|
|
241
|
-
},
|
|
242
|
-
});
|
|
30
|
+
const testTypes = addTestLib(fileSystem);
|
|
243
31
|
return {
|
|
244
32
|
...fileSystem,
|
|
245
33
|
addTypeSpecLibrary: async (lib) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test-host.js","sourceRoot":"","sources":["../../../src/testing/test-host.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"test-host.js","sourceRoot":"","sources":["../../../src/testing/test-host.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,7 +2,7 @@ import { TextDocument } from "vscode-languageserver-textdocument";
|
|
|
2
2
|
import { Diagnostic } from "vscode-languageserver/node.js";
|
|
3
3
|
import { IdentifierNode } from "../core/types.js";
|
|
4
4
|
import { Server, ServerHost } from "../server/index.js";
|
|
5
|
-
import { TestHostOptions } from "./test-host.js";
|
|
5
|
+
import { TestHostOptions } from "./test-compiler-host.js";
|
|
6
6
|
import { TestFileSystem } from "./types.js";
|
|
7
7
|
export interface TestServerHost extends ServerHost, TestFileSystem {
|
|
8
8
|
server: Server;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test-server-host.d.ts","sourceRoot":"","sources":["../../../src/testing/test-server-host.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAClE,OAAO,EAAE,UAAU,EAAkB,MAAM,+BAA+B,CAAC;AAG3E,OAAO,EAAE,cAAc,EAAc,MAAM,kBAAkB,CAAC;AAE9D,OAAO,EAAE,MAAM,EAAE,UAAU,EAAgB,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"test-server-host.d.ts","sourceRoot":"","sources":["../../../src/testing/test-server-host.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAClE,OAAO,EAAE,UAAU,EAAkB,MAAM,+BAA+B,CAAC;AAG3E,OAAO,EAAE,cAAc,EAAc,MAAM,kBAAkB,CAAC;AAE9D,OAAO,EAAE,MAAM,EAAE,UAAU,EAAgB,MAAM,oBAAoB,CAAC;AAGtE,OAAO,EAAuB,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAE/E,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAE5C,MAAM,WAAW,cAAe,SAAQ,UAAU,EAAE,cAAc;IAChE,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC;IAC/B,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS,CAAC;IACxD,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,YAAY,CAAC;IACjE,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,CAAC;IACzC,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,UAAU,EAAE,CAAC;IACpD,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;CAC9B;AAED,wBAAsB,oBAAoB,CAAC,OAAO,CAAC,EAAE,eAAe,GAAG;IAAE,YAAY,CAAC,EAAE,MAAM,CAAA;CAAE,2BAmG/F;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,cAAc,EAAE,CAanE"}
|
|
@@ -7,7 +7,8 @@ import { SyntaxKind } from "../core/types.js";
|
|
|
7
7
|
import { createClientConfigProvider } from "../server/client-config-provider.js";
|
|
8
8
|
import { createServer } from "../server/index.js";
|
|
9
9
|
import { createStringMap } from "../utils/misc.js";
|
|
10
|
-
import {
|
|
10
|
+
import { createTestFileSystem } from "./fs.js";
|
|
11
|
+
import { StandardTestLibrary } from "./test-compiler-host.js";
|
|
11
12
|
import { resolveVirtualPath } from "./test-utils.js";
|
|
12
13
|
export async function createTestServerHost(options) {
|
|
13
14
|
const logMessages = [];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test-server-host.js","sourceRoot":"","sources":["../../../src/testing/test-server-host.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAClE,OAAO,EAAc,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC3E,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAkB,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,EAAE,0BAA0B,EAAE,MAAM,qCAAqC,CAAC;AACjF,OAAO,EAAsB,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACtE,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"test-server-host.js","sourceRoot":"","sources":["../../../src/testing/test-server-host.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { Diagnostic } from "../core/types.js";
|
|
2
|
+
import type { Tester } from "./types.js";
|
|
3
|
+
export interface TesterOptions {
|
|
4
|
+
libraries: string[];
|
|
5
|
+
}
|
|
6
|
+
export declare function createTester(base: string, options: TesterOptions): Tester;
|
|
7
|
+
export interface Compilable<A extends unknown[], R> {
|
|
8
|
+
compileAndDiagnose(...args: A): Promise<[R, readonly Diagnostic[]]>;
|
|
9
|
+
compile(...args: A): Promise<R>;
|
|
10
|
+
diagnose(...args: A): Promise<readonly Diagnostic[]>;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=tester.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tester.d.ts","sourceRoot":"","sources":["../../../src/testing/tester.ts"],"names":[],"mappings":"AAUA,OAAO,EAAgB,UAAU,EAAgC,MAAM,kBAAkB,CAAC;AAQ1F,OAAO,KAAK,EAQV,MAAM,EAGP,MAAM,YAAY,CAAC;AAEpB,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AACD,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,GAAG,MAAM,CAKzE;AAwZD,MAAM,WAAW,UAAU,CAAC,CAAC,SAAS,OAAO,EAAE,EAAE,CAAC;IAChD,kBAAkB,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,EAAE,SAAS,UAAU,EAAE,CAAC,CAAC,CAAC;IACpE,OAAO,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IAChC,QAAQ,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,OAAO,CAAC,SAAS,UAAU,EAAE,CAAC,CAAC;CACtD"}
|