@typespec/compiler 0.41.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.
- package/LICENSE +21 -0
- package/README.md +9 -0
- package/cmd/tsp-server.js +3 -0
- package/cmd/tsp.js +3 -0
- package/dist/cmd/runner.d.ts +9 -0
- package/dist/cmd/runner.d.ts.map +1 -0
- package/dist/cmd/runner.js +62 -0
- package/dist/cmd/runner.js.map +1 -0
- package/dist/config/config-interpolation.d.ts +11 -0
- package/dist/config/config-interpolation.d.ts.map +1 -0
- package/dist/config/config-interpolation.js +109 -0
- package/dist/config/config-interpolation.js.map +1 -0
- package/dist/config/config-loader.d.ts +25 -0
- package/dist/config/config-loader.d.ts.map +1 -0
- package/dist/config/config-loader.js +182 -0
- package/dist/config/config-loader.js.map +1 -0
- package/dist/config/config-schema.d.ts +4 -0
- package/dist/config/config-schema.d.ts.map +1 -0
- package/dist/config/config-schema.js +84 -0
- package/dist/config/config-schema.js.map +1 -0
- package/dist/config/index.d.ts +3 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +3 -0
- package/dist/config/index.js.map +1 -0
- package/dist/config/types.d.ts +79 -0
- package/dist/config/types.d.ts.map +1 -0
- package/dist/config/types.js +2 -0
- package/dist/config/types.js.map +1 -0
- package/dist/core/binder.d.ts +29 -0
- package/dist/core/binder.d.ts.map +1 -0
- package/dist/core/binder.js +455 -0
- package/dist/core/binder.js.map +1 -0
- package/dist/core/charcode.d.ts +130 -0
- package/dist/core/charcode.d.ts.map +1 -0
- package/dist/core/charcode.js +115 -0
- package/dist/core/charcode.js.map +1 -0
- package/dist/core/checker.d.ts +138 -0
- package/dist/core/checker.d.ts.map +1 -0
- package/dist/core/checker.js +4070 -0
- package/dist/core/checker.js.map +1 -0
- package/dist/core/cli/args.d.ts +18 -0
- package/dist/core/cli/args.d.ts.map +1 -0
- package/dist/core/cli/args.js +108 -0
- package/dist/core/cli/args.js.map +1 -0
- package/dist/core/cli/cli.d.ts +2 -0
- package/dist/core/cli/cli.d.ts.map +1 -0
- package/dist/core/cli/cli.js +477 -0
- package/dist/core/cli/cli.js.map +1 -0
- package/dist/core/cli/index.d.ts +2 -0
- package/dist/core/cli/index.d.ts.map +1 -0
- package/dist/core/cli/index.js +2 -0
- package/dist/core/cli/index.js.map +1 -0
- package/dist/core/decorator-utils.d.ts +108 -0
- package/dist/core/decorator-utils.d.ts.map +1 -0
- package/dist/core/decorator-utils.js +326 -0
- package/dist/core/decorator-utils.js.map +1 -0
- package/dist/core/diagnostics.d.ts +93 -0
- package/dist/core/diagnostics.d.ts.map +1 -0
- package/dist/core/diagnostics.js +315 -0
- package/dist/core/diagnostics.js.map +1 -0
- package/dist/core/emitter-utils.d.ts +14 -0
- package/dist/core/emitter-utils.d.ts.map +1 -0
- package/dist/core/emitter-utils.js +16 -0
- package/dist/core/emitter-utils.js.map +1 -0
- package/dist/core/formatter-fs.d.ts +21 -0
- package/dist/core/formatter-fs.d.ts.map +1 -0
- package/dist/core/formatter-fs.js +79 -0
- package/dist/core/formatter-fs.js.map +1 -0
- package/dist/core/formatter.d.ts +10 -0
- package/dist/core/formatter.d.ts.map +1 -0
- package/dist/core/formatter.js +24 -0
- package/dist/core/formatter.js.map +1 -0
- package/dist/core/helpers/discriminator-utils.d.ts +14 -0
- package/dist/core/helpers/discriminator-utils.d.ts.map +1 -0
- package/dist/core/helpers/discriminator-utils.js +169 -0
- package/dist/core/helpers/discriminator-utils.js.map +1 -0
- package/dist/core/helpers/index.d.ts +6 -0
- package/dist/core/helpers/index.d.ts.map +1 -0
- package/dist/core/helpers/index.js +6 -0
- package/dist/core/helpers/index.js.map +1 -0
- package/dist/core/helpers/operation-utils.d.ts +15 -0
- package/dist/core/helpers/operation-utils.d.ts.map +1 -0
- package/dist/core/helpers/operation-utils.js +35 -0
- package/dist/core/helpers/operation-utils.js.map +1 -0
- package/dist/core/helpers/projected-names-utils.d.ts +20 -0
- package/dist/core/helpers/projected-names-utils.d.ts.map +1 -0
- package/dist/core/helpers/projected-names-utils.js +40 -0
- package/dist/core/helpers/projected-names-utils.js.map +1 -0
- package/dist/core/helpers/type-name-utils.d.ts +14 -0
- package/dist/core/helpers/type-name-utils.d.ts.map +1 -0
- package/dist/core/helpers/type-name-utils.js +122 -0
- package/dist/core/helpers/type-name-utils.js.map +1 -0
- package/dist/core/helpers/usage-resolver.d.ts +20 -0
- package/dist/core/helpers/usage-resolver.d.ts.map +1 -0
- package/dist/core/helpers/usage-resolver.js +108 -0
- package/dist/core/helpers/usage-resolver.js.map +1 -0
- package/dist/core/index.d.ts +26 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +26 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/install.d.ts +2 -0
- package/dist/core/install.d.ts.map +1 -0
- package/dist/core/install.js +26 -0
- package/dist/core/install.js.map +1 -0
- package/dist/core/library.d.ts +34 -0
- package/dist/core/library.d.ts.map +1 -0
- package/dist/core/library.js +100 -0
- package/dist/core/library.js.map +1 -0
- package/dist/core/logger/console-sink.browser.d.ts +4 -0
- package/dist/core/logger/console-sink.browser.d.ts.map +1 -0
- package/dist/core/logger/console-sink.browser.js +14 -0
- package/dist/core/logger/console-sink.browser.js.map +1 -0
- package/dist/core/logger/console-sink.d.ts +9 -0
- package/dist/core/logger/console-sink.d.ts.map +1 -0
- package/dist/core/logger/console-sink.js +81 -0
- package/dist/core/logger/console-sink.js.map +1 -0
- package/dist/core/logger/index.d.ts +3 -0
- package/dist/core/logger/index.d.ts.map +1 -0
- package/dist/core/logger/index.js +3 -0
- package/dist/core/logger/index.js.map +1 -0
- package/dist/core/logger/logger.d.ts +7 -0
- package/dist/core/logger/logger.d.ts.map +1 -0
- package/dist/core/logger/logger.js +32 -0
- package/dist/core/logger/logger.js.map +1 -0
- package/dist/core/logger/tracer.d.ts +3 -0
- package/dist/core/logger/tracer.d.ts.map +1 -0
- package/dist/core/logger/tracer.js +91 -0
- package/dist/core/logger/tracer.js.map +1 -0
- package/dist/core/manifest.d.ts +21 -0
- package/dist/core/manifest.d.ts.map +1 -0
- package/dist/core/manifest.js +8 -0
- package/dist/core/manifest.js.map +1 -0
- package/dist/core/messages.d.ts +2253 -0
- package/dist/core/messages.d.ts.map +1 -0
- package/dist/core/messages.js +749 -0
- package/dist/core/messages.js.map +1 -0
- package/dist/core/module-resolver.d.ts +84 -0
- package/dist/core/module-resolver.d.ts.map +1 -0
- package/dist/core/module-resolver.js +170 -0
- package/dist/core/module-resolver.js.map +1 -0
- package/dist/core/node-host.browser.d.ts +2 -0
- package/dist/core/node-host.browser.d.ts.map +1 -0
- package/dist/core/node-host.browser.js +2 -0
- package/dist/core/node-host.browser.js.map +1 -0
- package/dist/core/node-host.d.ts +7 -0
- package/dist/core/node-host.d.ts.map +1 -0
- package/dist/core/node-host.js +43 -0
- package/dist/core/node-host.js.map +1 -0
- package/dist/core/nonascii.d.ts +2 -0
- package/dist/core/nonascii.d.ts.map +1 -0
- package/dist/core/nonascii.js +712 -0
- package/dist/core/nonascii.js.map +1 -0
- package/dist/core/options.d.ts +46 -0
- package/dist/core/options.d.ts.map +1 -0
- package/dist/core/options.js +2 -0
- package/dist/core/options.js.map +1 -0
- package/dist/core/parser.d.ts +17 -0
- package/dist/core/parser.d.ts.map +1 -0
- package/dist/core/parser.js +2561 -0
- package/dist/core/parser.js.map +1 -0
- package/dist/core/path-utils.d.ts +193 -0
- package/dist/core/path-utils.d.ts.map +1 -0
- package/dist/core/path-utils.js +427 -0
- package/dist/core/path-utils.js.map +1 -0
- package/dist/core/program.d.ts +104 -0
- package/dist/core/program.d.ts.map +1 -0
- package/dist/core/program.js +898 -0
- package/dist/core/program.js.map +1 -0
- package/dist/core/projection-members.d.ts +8 -0
- package/dist/core/projection-members.d.ts.map +1 -0
- package/dist/core/projection-members.js +387 -0
- package/dist/core/projection-members.js.map +1 -0
- package/dist/core/projector.d.ts +26 -0
- package/dist/core/projector.d.ts.map +1 -0
- package/dist/core/projector.js +523 -0
- package/dist/core/projector.js.map +1 -0
- package/dist/core/scanner.d.ts +125 -0
- package/dist/core/scanner.d.ts.map +1 -0
- package/dist/core/scanner.js +1012 -0
- package/dist/core/scanner.js.map +1 -0
- package/dist/core/schema-validator.d.ts +6 -0
- package/dist/core/schema-validator.d.ts.map +1 -0
- package/dist/core/schema-validator.js +38 -0
- package/dist/core/schema-validator.js.map +1 -0
- package/dist/core/semantic-walker.d.ts +53 -0
- package/dist/core/semantic-walker.d.ts.map +1 -0
- package/dist/core/semantic-walker.js +355 -0
- package/dist/core/semantic-walker.js.map +1 -0
- package/dist/core/type-utils.d.ts +49 -0
- package/dist/core/type-utils.d.ts.map +1 -0
- package/dist/core/type-utils.js +95 -0
- package/dist/core/type-utils.js.map +1 -0
- package/dist/core/types.d.ts +1345 -0
- package/dist/core/types.d.ts.map +1 -0
- package/dist/core/types.js +105 -0
- package/dist/core/types.js.map +1 -0
- package/dist/core/util.d.ts +150 -0
- package/dist/core/util.d.ts.map +1 -0
- package/dist/core/util.js +417 -0
- package/dist/core/util.js.map +1 -0
- package/dist/emitter-framework/asset-emitter.d.ts +5 -0
- package/dist/emitter-framework/asset-emitter.d.ts.map +1 -0
- package/dist/emitter-framework/asset-emitter.js +610 -0
- package/dist/emitter-framework/asset-emitter.js.map +1 -0
- package/dist/emitter-framework/builders/array-builder.d.ts +7 -0
- package/dist/emitter-framework/builders/array-builder.d.ts.map +1 -0
- package/dist/emitter-framework/builders/array-builder.js +45 -0
- package/dist/emitter-framework/builders/array-builder.js.map +1 -0
- package/dist/emitter-framework/builders/object-builder.d.ts +9 -0
- package/dist/emitter-framework/builders/object-builder.d.ts.map +1 -0
- package/dist/emitter-framework/builders/object-builder.js +30 -0
- package/dist/emitter-framework/builders/object-builder.js.map +1 -0
- package/dist/emitter-framework/builders/string-builder.d.ts +13 -0
- package/dist/emitter-framework/builders/string-builder.d.ts.map +1 -0
- package/dist/emitter-framework/builders/string-builder.js +98 -0
- package/dist/emitter-framework/builders/string-builder.js.map +1 -0
- package/dist/emitter-framework/custom-key-map.d.ts +29 -0
- package/dist/emitter-framework/custom-key-map.d.ts.map +1 -0
- package/dist/emitter-framework/custom-key-map.js +62 -0
- package/dist/emitter-framework/custom-key-map.js.map +1 -0
- package/dist/emitter-framework/index.d.ts +8 -0
- package/dist/emitter-framework/index.d.ts.map +1 -0
- package/dist/emitter-framework/index.js +8 -0
- package/dist/emitter-framework/index.js.map +1 -0
- package/dist/emitter-framework/placeholder.d.ts +12 -0
- package/dist/emitter-framework/placeholder.d.ts.map +1 -0
- package/dist/emitter-framework/placeholder.js +27 -0
- package/dist/emitter-framework/placeholder.js.map +1 -0
- package/dist/emitter-framework/type-emitter.d.ts +314 -0
- package/dist/emitter-framework/type-emitter.d.ts.map +1 -0
- package/dist/emitter-framework/type-emitter.js +612 -0
- package/dist/emitter-framework/type-emitter.js.map +1 -0
- package/dist/emitter-framework/types.d.ts +124 -0
- package/dist/emitter-framework/types.d.ts.map +1 -0
- package/dist/emitter-framework/types.js +39 -0
- package/dist/emitter-framework/types.js.map +1 -0
- package/dist/formatter/index.d.ts +11 -0
- package/dist/formatter/index.d.ts.map +1 -0
- package/dist/formatter/index.js +28 -0
- package/dist/formatter/index.js.map +1 -0
- package/dist/formatter/parser.d.ts +16 -0
- package/dist/formatter/parser.d.ts.map +1 -0
- package/dist/formatter/parser.js +23 -0
- package/dist/formatter/parser.js.map +1 -0
- package/dist/formatter/print/comment-handler.d.ts +7 -0
- package/dist/formatter/print/comment-handler.d.ts.map +1 -0
- package/dist/formatter/print/comment-handler.js +81 -0
- package/dist/formatter/print/comment-handler.js.map +1 -0
- package/dist/formatter/print/index.d.ts +3 -0
- package/dist/formatter/print/index.d.ts.map +1 -0
- package/dist/formatter/print/index.js +3 -0
- package/dist/formatter/print/index.js.map +1 -0
- package/dist/formatter/print/needs-parens.d.ts +10 -0
- package/dist/formatter/print/needs-parens.d.ts.map +1 -0
- package/dist/formatter/print/needs-parens.js +27 -0
- package/dist/formatter/print/needs-parens.js.map +1 -0
- package/dist/formatter/print/printer.d.ts +62 -0
- package/dist/formatter/print/printer.d.ts.map +1 -0
- package/dist/formatter/print/printer.js +1025 -0
- package/dist/formatter/print/printer.js.map +1 -0
- package/dist/formatter/print/types.d.ts +9 -0
- package/dist/formatter/print/types.d.ts.map +1 -0
- package/dist/formatter/print/types.js +2 -0
- package/dist/formatter/print/types.js.map +1 -0
- package/dist/init/index.d.ts +2 -0
- package/dist/init/index.d.ts.map +1 -0
- package/dist/init/index.js +2 -0
- package/dist/init/index.js.map +1 -0
- package/dist/init/init-template.d.ts +45 -0
- package/dist/init/init-template.d.ts.map +1 -0
- package/dist/init/init-template.js +45 -0
- package/dist/init/init-template.js.map +1 -0
- package/dist/init/init.d.ts +49 -0
- package/dist/init/init.d.ts.map +1 -0
- package/dist/init/init.js +224 -0
- package/dist/init/init.js.map +1 -0
- package/dist/lib/decorators.d.ts +222 -0
- package/dist/lib/decorators.d.ts.map +1 -0
- package/dist/lib/decorators.js +745 -0
- package/dist/lib/decorators.js.map +1 -0
- package/dist/lib/service.d.ts +38 -0
- package/dist/lib/service.d.ts.map +1 -0
- package/dist/lib/service.js +78 -0
- package/dist/lib/service.js.map +1 -0
- package/dist/manifest.js +4 -0
- package/dist/server/completion.d.ts +10 -0
- package/dist/server/completion.d.ts.map +1 -0
- package/dist/server/completion.js +207 -0
- package/dist/server/completion.js.map +1 -0
- package/dist/server/index.d.ts +3 -0
- package/dist/server/index.d.ts.map +1 -0
- package/dist/server/index.js +3 -0
- package/dist/server/index.js.map +1 -0
- package/dist/server/language-config.d.ts +195 -0
- package/dist/server/language-config.d.ts.map +1 -0
- package/dist/server/language-config.js +102 -0
- package/dist/server/language-config.js.map +1 -0
- package/dist/server/server.d.ts +2 -0
- package/dist/server/server.d.ts.map +1 -0
- package/dist/server/server.js +131 -0
- package/dist/server/server.js.map +1 -0
- package/dist/server/serverlib.d.ts +72 -0
- package/dist/server/serverlib.d.ts.map +1 -0
- package/dist/server/serverlib.js +1034 -0
- package/dist/server/serverlib.js.map +1 -0
- package/dist/server/symbol-structure.d.ts +4 -0
- package/dist/server/symbol-structure.d.ts.map +1 -0
- package/dist/server/symbol-structure.js +121 -0
- package/dist/server/symbol-structure.js.map +1 -0
- package/dist/server/tmlanguage.d.ts +3 -0
- package/dist/server/tmlanguage.d.ts.map +1 -0
- package/dist/server/tmlanguage.js +713 -0
- package/dist/server/tmlanguage.js.map +1 -0
- package/dist/server/type-details.d.ts +11 -0
- package/dist/server/type-details.d.ts.map +1 -0
- package/dist/server/type-details.js +72 -0
- package/dist/server/type-details.js.map +1 -0
- package/dist/server/type-signature.d.ts +2 -0
- package/dist/server/type-signature.d.ts.map +1 -0
- package/dist/server/type-signature.js +108 -0
- package/dist/server/type-signature.js.map +1 -0
- package/dist/testing/expect.d.ts +49 -0
- package/dist/testing/expect.d.ts.map +1 -0
- package/dist/testing/expect.js +83 -0
- package/dist/testing/expect.js.map +1 -0
- package/dist/testing/index.d.ts +6 -0
- package/dist/testing/index.d.ts.map +1 -0
- package/dist/testing/index.js +6 -0
- package/dist/testing/index.js.map +1 -0
- package/dist/testing/test-host.d.ts +14 -0
- package/dist/testing/test-host.d.ts.map +1 -0
- package/dist/testing/test-host.js +271 -0
- package/dist/testing/test-host.js.map +1 -0
- package/dist/testing/test-server-host.d.ts +39 -0
- package/dist/testing/test-server-host.d.ts.map +1 -0
- package/dist/testing/test-server-host.js +112 -0
- package/dist/testing/test-server-host.js.map +1 -0
- package/dist/testing/test-utils.d.ts +22 -0
- package/dist/testing/test-utils.d.ts.map +1 -0
- package/dist/testing/test-utils.js +60 -0
- package/dist/testing/test-utils.js.map +1 -0
- package/dist/testing/types.d.ts +69 -0
- package/dist/testing/types.d.ts.map +1 -0
- package/dist/testing/types.js +7 -0
- package/dist/testing/types.js.map +1 -0
- package/dist/typespec.tmLanguage +1760 -0
- package/lib/decorators.tsp +420 -0
- package/lib/lib.tsp +158 -0
- package/lib/main.tsp +4 -0
- package/lib/projected-names.tsp +94 -0
- package/lib/reflection.tsp +10 -0
- package/package.json +119 -0
|
@@ -0,0 +1,271 @@
|
|
|
1
|
+
import assert from "assert";
|
|
2
|
+
import { readFile } from "fs/promises";
|
|
3
|
+
import { globby } from "globby";
|
|
4
|
+
import { fileURLToPath, pathToFileURL } from "url";
|
|
5
|
+
import { createSourceFile, logDiagnostics, logVerboseTestOutput } from "../core/diagnostics.js";
|
|
6
|
+
import { createLogger } from "../core/logger/logger.js";
|
|
7
|
+
import { NodeHost } from "../core/node-host.js";
|
|
8
|
+
import { getAnyExtensionFromPath, resolvePath } from "../core/path-utils.js";
|
|
9
|
+
import { compile as compileProgram } from "../core/program.js";
|
|
10
|
+
import { createStringMap, getSourceFileKindFromExt } from "../core/util.js";
|
|
11
|
+
import { expectDiagnosticEmpty } from "./expect.js";
|
|
12
|
+
import { createTestWrapper } from "./test-utils.js";
|
|
13
|
+
import { TestHostError, } from "./types.js";
|
|
14
|
+
export function resolveVirtualPath(path, ...paths) {
|
|
15
|
+
// NB: We should always resolve an absolute path, and there is no absolute
|
|
16
|
+
// path that works across OSes. This ensures that we can still rely on API
|
|
17
|
+
// like pathToFileURL in tests.
|
|
18
|
+
const rootDir = process.platform === "win32" ? "Z:/test" : "/test";
|
|
19
|
+
return resolvePath(rootDir, path, ...paths);
|
|
20
|
+
}
|
|
21
|
+
function createTestCompilerHost(virtualFs, jsImports, options) {
|
|
22
|
+
const libDirs = [resolveVirtualPath(".tsp/lib")];
|
|
23
|
+
if (!(options === null || options === void 0 ? void 0 : options.excludeTestLib)) {
|
|
24
|
+
libDirs.push(resolveVirtualPath(".tsp/test-lib"));
|
|
25
|
+
}
|
|
26
|
+
return {
|
|
27
|
+
async readUrl(url) {
|
|
28
|
+
const contents = virtualFs.get(url);
|
|
29
|
+
if (contents === undefined) {
|
|
30
|
+
throw new TestHostError(`File ${url} not found.`, "ENOENT");
|
|
31
|
+
}
|
|
32
|
+
return createSourceFile(contents, url);
|
|
33
|
+
},
|
|
34
|
+
async readFile(path) {
|
|
35
|
+
path = resolveVirtualPath(path);
|
|
36
|
+
const contents = virtualFs.get(path);
|
|
37
|
+
if (contents === undefined) {
|
|
38
|
+
throw new TestHostError(`File ${path} not found.`, "ENOENT");
|
|
39
|
+
}
|
|
40
|
+
return createSourceFile(contents, path);
|
|
41
|
+
},
|
|
42
|
+
async writeFile(path, content) {
|
|
43
|
+
path = resolveVirtualPath(path);
|
|
44
|
+
virtualFs.set(path, content);
|
|
45
|
+
},
|
|
46
|
+
async readDir(path) {
|
|
47
|
+
path = resolveVirtualPath(path);
|
|
48
|
+
const fileFolder = [...virtualFs.keys()]
|
|
49
|
+
.filter((x) => x.startsWith(`${path}/`))
|
|
50
|
+
.map((x) => x.replace(`${path}/`, ""))
|
|
51
|
+
.map((x) => {
|
|
52
|
+
const index = x.indexOf("/");
|
|
53
|
+
return index !== -1 ? x.substring(0, index) : x;
|
|
54
|
+
});
|
|
55
|
+
return [...new Set(fileFolder)];
|
|
56
|
+
},
|
|
57
|
+
async rm(path, options) {
|
|
58
|
+
path = resolveVirtualPath(path);
|
|
59
|
+
if (options.recursive && !virtualFs.has(path)) {
|
|
60
|
+
for (const key of virtualFs.keys()) {
|
|
61
|
+
if (key.startsWith(`${path}/`)) {
|
|
62
|
+
virtualFs.delete(key);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
else {
|
|
67
|
+
virtualFs.delete(path);
|
|
68
|
+
}
|
|
69
|
+
},
|
|
70
|
+
getLibDirs() {
|
|
71
|
+
return libDirs;
|
|
72
|
+
},
|
|
73
|
+
getExecutionRoot() {
|
|
74
|
+
return resolveVirtualPath(".tsp");
|
|
75
|
+
},
|
|
76
|
+
async getJsImport(path) {
|
|
77
|
+
path = resolveVirtualPath(path);
|
|
78
|
+
const module = jsImports.get(path);
|
|
79
|
+
if (module === undefined) {
|
|
80
|
+
throw new TestHostError(`Module ${path} not found`, "ERR_MODULE_NOT_FOUND");
|
|
81
|
+
}
|
|
82
|
+
return module;
|
|
83
|
+
},
|
|
84
|
+
async stat(path) {
|
|
85
|
+
path = resolveVirtualPath(path);
|
|
86
|
+
if (virtualFs.has(path)) {
|
|
87
|
+
return {
|
|
88
|
+
isDirectory() {
|
|
89
|
+
return false;
|
|
90
|
+
},
|
|
91
|
+
isFile() {
|
|
92
|
+
return true;
|
|
93
|
+
},
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
for (const fsPath of virtualFs.keys()) {
|
|
97
|
+
if (fsPath.startsWith(path) && fsPath !== path) {
|
|
98
|
+
return {
|
|
99
|
+
isDirectory() {
|
|
100
|
+
return true;
|
|
101
|
+
},
|
|
102
|
+
isFile() {
|
|
103
|
+
return false;
|
|
104
|
+
},
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
throw new TestHostError(`File ${path} not found`, "ENOENT");
|
|
109
|
+
},
|
|
110
|
+
// symlinks not supported in test-host
|
|
111
|
+
async realpath(path) {
|
|
112
|
+
return path;
|
|
113
|
+
},
|
|
114
|
+
getSourceFileKind: getSourceFileKindFromExt,
|
|
115
|
+
logSink: NodeHost.logSink,
|
|
116
|
+
mkdirp: async (path) => path,
|
|
117
|
+
fileURLToPath,
|
|
118
|
+
pathToFileURL(path) {
|
|
119
|
+
return pathToFileURL(path).href;
|
|
120
|
+
},
|
|
121
|
+
...options === null || options === void 0 ? void 0 : options.compilerHostOverrides,
|
|
122
|
+
};
|
|
123
|
+
}
|
|
124
|
+
export async function createTestFileSystem(options) {
|
|
125
|
+
const virtualFs = createStringMap(!!(options === null || options === void 0 ? void 0 : options.caseInsensitiveFileSystem));
|
|
126
|
+
const jsImports = createStringMap(!!(options === null || options === void 0 ? void 0 : options.caseInsensitiveFileSystem));
|
|
127
|
+
const compilerHost = createTestCompilerHost(virtualFs, jsImports, options);
|
|
128
|
+
return {
|
|
129
|
+
addTypeSpecFile,
|
|
130
|
+
addJsFile,
|
|
131
|
+
addRealTypeSpecFile,
|
|
132
|
+
addRealJsFile,
|
|
133
|
+
addTypeSpecLibrary,
|
|
134
|
+
compilerHost,
|
|
135
|
+
fs: virtualFs,
|
|
136
|
+
};
|
|
137
|
+
function addTypeSpecFile(path, contents) {
|
|
138
|
+
virtualFs.set(resolveVirtualPath(path), contents);
|
|
139
|
+
}
|
|
140
|
+
function addJsFile(path, contents) {
|
|
141
|
+
const key = resolveVirtualPath(path);
|
|
142
|
+
virtualFs.set(key, ""); // don't need contents
|
|
143
|
+
jsImports.set(key, new Promise((r) => r(contents)));
|
|
144
|
+
}
|
|
145
|
+
async function addRealTypeSpecFile(path, existingPath) {
|
|
146
|
+
virtualFs.set(resolveVirtualPath(path), await readFile(existingPath, "utf8"));
|
|
147
|
+
}
|
|
148
|
+
async function addRealJsFile(path, existingPath) {
|
|
149
|
+
const key = resolveVirtualPath(path);
|
|
150
|
+
const exports = await import(pathToFileURL(existingPath).href);
|
|
151
|
+
virtualFs.set(key, "");
|
|
152
|
+
jsImports.set(key, exports);
|
|
153
|
+
}
|
|
154
|
+
async function addTypeSpecLibrary(testLibrary) {
|
|
155
|
+
for (const { realDir, pattern, virtualPath } of testLibrary.files) {
|
|
156
|
+
const lookupDir = resolvePath(testLibrary.packageRoot, realDir);
|
|
157
|
+
const entries = await findFilesFromPattern(lookupDir, pattern);
|
|
158
|
+
for (const entry of entries) {
|
|
159
|
+
const fileRealPath = resolvePath(lookupDir, entry);
|
|
160
|
+
const fileVirtualPath = resolveVirtualPath(virtualPath, entry);
|
|
161
|
+
switch (getAnyExtensionFromPath(fileRealPath)) {
|
|
162
|
+
case ".tsp":
|
|
163
|
+
case ".json":
|
|
164
|
+
const contents = await readFile(fileRealPath, "utf-8");
|
|
165
|
+
addTypeSpecFile(fileVirtualPath, contents);
|
|
166
|
+
break;
|
|
167
|
+
case ".js":
|
|
168
|
+
case ".mjs":
|
|
169
|
+
await addRealJsFile(fileVirtualPath, fileRealPath);
|
|
170
|
+
break;
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
export const StandardTestLibrary = {
|
|
177
|
+
name: "@typespec/compiler",
|
|
178
|
+
packageRoot: resolvePath(fileURLToPath(import.meta.url), "../../../"),
|
|
179
|
+
files: [
|
|
180
|
+
{ virtualPath: "./.tsp/dist/lib", realDir: "./dist/lib", pattern: "*" },
|
|
181
|
+
{ virtualPath: "./.tsp/lib", realDir: "./lib", pattern: "*" },
|
|
182
|
+
],
|
|
183
|
+
};
|
|
184
|
+
export async function createTestHost(config = {}) {
|
|
185
|
+
const testHost = await createTestHostInternal();
|
|
186
|
+
await testHost.addTypeSpecLibrary(StandardTestLibrary);
|
|
187
|
+
if (config.libraries) {
|
|
188
|
+
for (const library of config.libraries) {
|
|
189
|
+
await testHost.addTypeSpecLibrary(library);
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
return testHost;
|
|
193
|
+
}
|
|
194
|
+
export async function createTestRunner(host) {
|
|
195
|
+
const testHost = host !== null && host !== void 0 ? host : (await createTestHost());
|
|
196
|
+
return createTestWrapper(testHost);
|
|
197
|
+
}
|
|
198
|
+
async function createTestHostInternal() {
|
|
199
|
+
let program;
|
|
200
|
+
const libraries = [];
|
|
201
|
+
const testTypes = {};
|
|
202
|
+
const fileSystem = await createTestFileSystem();
|
|
203
|
+
// add test decorators
|
|
204
|
+
fileSystem.addTypeSpecFile(".tsp/test-lib/main.tsp", 'import "./test.js";');
|
|
205
|
+
fileSystem.addJsFile(".tsp/test-lib/test.js", {
|
|
206
|
+
namespace: "TypeSpec",
|
|
207
|
+
$test(_, target, name) {
|
|
208
|
+
if (!name) {
|
|
209
|
+
if (target.kind === "Model" ||
|
|
210
|
+
target.kind === "Scalar" ||
|
|
211
|
+
target.kind === "Namespace" ||
|
|
212
|
+
target.kind === "Enum" ||
|
|
213
|
+
target.kind === "Operation" ||
|
|
214
|
+
target.kind === "ModelProperty" ||
|
|
215
|
+
target.kind === "EnumMember" ||
|
|
216
|
+
target.kind === "Interface" ||
|
|
217
|
+
(target.kind === "Union" && !target.expression)) {
|
|
218
|
+
name = target.name;
|
|
219
|
+
}
|
|
220
|
+
else {
|
|
221
|
+
throw new Error("Need to specify a name for test type");
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
testTypes[name] = target;
|
|
225
|
+
},
|
|
226
|
+
});
|
|
227
|
+
return {
|
|
228
|
+
...fileSystem,
|
|
229
|
+
addTypeSpecLibrary: async (lib) => {
|
|
230
|
+
if (lib !== StandardTestLibrary) {
|
|
231
|
+
libraries.push(lib);
|
|
232
|
+
}
|
|
233
|
+
await fileSystem.addTypeSpecLibrary(lib);
|
|
234
|
+
},
|
|
235
|
+
compile,
|
|
236
|
+
diagnose,
|
|
237
|
+
compileAndDiagnose,
|
|
238
|
+
testTypes,
|
|
239
|
+
libraries,
|
|
240
|
+
get program() {
|
|
241
|
+
assert(program, "Program cannot be accessed without calling compile, diagnose, or compileAndDiagnose.");
|
|
242
|
+
return program;
|
|
243
|
+
},
|
|
244
|
+
};
|
|
245
|
+
async function compile(main, options = {}) {
|
|
246
|
+
const [testTypes, diagnostics] = await compileAndDiagnose(main, options);
|
|
247
|
+
expectDiagnosticEmpty(diagnostics);
|
|
248
|
+
return testTypes;
|
|
249
|
+
}
|
|
250
|
+
async function diagnose(main, options = {}) {
|
|
251
|
+
const [, diagnostics] = await compileAndDiagnose(main, options);
|
|
252
|
+
return diagnostics;
|
|
253
|
+
}
|
|
254
|
+
async function compileAndDiagnose(mainFile, options = {}) {
|
|
255
|
+
if (options.noEmit === undefined) {
|
|
256
|
+
// default for tests is noEmit
|
|
257
|
+
options = { ...options, noEmit: true };
|
|
258
|
+
}
|
|
259
|
+
const p = await compileProgram(fileSystem.compilerHost, mainFile, options);
|
|
260
|
+
program = p;
|
|
261
|
+
logVerboseTestOutput((log) => logDiagnostics(p.diagnostics, createLogger({ sink: fileSystem.compilerHost.logSink })));
|
|
262
|
+
return [testTypes, p.diagnostics];
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
export async function findFilesFromPattern(directory, pattern) {
|
|
266
|
+
return globby(pattern, {
|
|
267
|
+
cwd: directory,
|
|
268
|
+
onlyFiles: true,
|
|
269
|
+
});
|
|
270
|
+
}
|
|
271
|
+
//# sourceMappingURL=test-host.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test-host.js","sourceRoot":"","sources":["../../testing/test-host.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { TextDocument } from "vscode-languageserver-textdocument";
|
|
2
|
+
import { Diagnostic } from "vscode-languageserver/node.js";
|
|
3
|
+
import { IdentifierNode } from "../core/types.js";
|
|
4
|
+
import { Server, ServerHost } from "../server/index.js";
|
|
5
|
+
import { TestHostOptions } from "./test-host.js";
|
|
6
|
+
import { TestFileSystem } from "./types.js";
|
|
7
|
+
export interface TestServerHost extends ServerHost, TestFileSystem {
|
|
8
|
+
server: Server;
|
|
9
|
+
logMessages: readonly string[];
|
|
10
|
+
getOpenDocument(path: string): TextDocument | undefined;
|
|
11
|
+
addOrUpdateDocument(path: string, content: string): TextDocument;
|
|
12
|
+
getDiagnostics(path: string): readonly Diagnostic[];
|
|
13
|
+
getURL(path: string): string;
|
|
14
|
+
}
|
|
15
|
+
export declare function createTestServerHost(options?: TestHostOptions): Promise<TestServerHost>;
|
|
16
|
+
/**
|
|
17
|
+
* Takes source code with a cursor position indicated by the given marker
|
|
18
|
+
* ("┆" by default), and returns the source without the marker along with
|
|
19
|
+
* the cursor position.
|
|
20
|
+
*/
|
|
21
|
+
export declare function extractCursor(sourceWithCursor: string, marker?: string): {
|
|
22
|
+
source: string;
|
|
23
|
+
pos: number;
|
|
24
|
+
};
|
|
25
|
+
/**
|
|
26
|
+
* Takes source code with start and end positions indicated by given marker
|
|
27
|
+
* ("~~~" by default) and returns the source without the markers along with
|
|
28
|
+
* the start and end positions.
|
|
29
|
+
*/
|
|
30
|
+
export declare function extractSquiggles(sourceWithSquiggles: string, marker?: string): {
|
|
31
|
+
source: string;
|
|
32
|
+
pos: number;
|
|
33
|
+
end: number;
|
|
34
|
+
};
|
|
35
|
+
/**
|
|
36
|
+
* Extracts all identifiers marked with trailing empty comments from source
|
|
37
|
+
*/
|
|
38
|
+
export declare function getTestIdentifiers(source: string): IdentifierNode[];
|
|
39
|
+
//# sourceMappingURL=test-server-host.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test-server-host.d.ts","sourceRoot":"","sources":["../../testing/test-server-host.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAClE,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAE3D,OAAO,EAAE,cAAc,EAAc,MAAM,kBAAkB,CAAC;AAE9D,OAAO,EAAgB,MAAM,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACtE,OAAO,EAIL,eAAe,EAChB,MAAM,gBAAgB,CAAC;AACxB,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,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,2BAkEnE;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAC3B,gBAAgB,EAAE,MAAM,EACxB,MAAM,SAAM,GACX;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAKjC;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAC9B,mBAAmB,EAAE,MAAM,EAC3B,MAAM,SAAQ,GACb;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAI9C;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,cAAc,EAAE,CAanE"}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
import { ok } from "assert";
|
|
2
|
+
import { pathToFileURL } from "url";
|
|
3
|
+
import { TextDocument } from "vscode-languageserver-textdocument";
|
|
4
|
+
import { parse, visitChildren } from "../core/parser.js";
|
|
5
|
+
import { SyntaxKind } from "../core/types.js";
|
|
6
|
+
import { createStringMap } from "../core/util.js";
|
|
7
|
+
import { createServer } from "../server/index.js";
|
|
8
|
+
import { createTestFileSystem, resolveVirtualPath, StandardTestLibrary, } from "./test-host.js";
|
|
9
|
+
export async function createTestServerHost(options) {
|
|
10
|
+
const logMessages = [];
|
|
11
|
+
const documents = createStringMap(!!(options === null || options === void 0 ? void 0 : options.caseInsensitiveFileSystem));
|
|
12
|
+
const diagnostics = createStringMap(!!(options === null || options === void 0 ? void 0 : options.caseInsensitiveFileSystem));
|
|
13
|
+
const fileSystem = await createTestFileSystem({ ...options, excludeTestLib: true });
|
|
14
|
+
await fileSystem.addTypeSpecLibrary(StandardTestLibrary);
|
|
15
|
+
const serverHost = {
|
|
16
|
+
...fileSystem,
|
|
17
|
+
throwInternalErrors: true,
|
|
18
|
+
server: undefined,
|
|
19
|
+
logMessages,
|
|
20
|
+
getOpenDocumentByURL(url) {
|
|
21
|
+
return documents.get(url);
|
|
22
|
+
},
|
|
23
|
+
getOpenDocument(path) {
|
|
24
|
+
return this.getOpenDocumentByURL(this.getURL(path));
|
|
25
|
+
},
|
|
26
|
+
addOrUpdateDocument(path, content) {
|
|
27
|
+
const url = this.getURL(path);
|
|
28
|
+
let version = 1;
|
|
29
|
+
const oldDocument = documents.get(url);
|
|
30
|
+
if (oldDocument) {
|
|
31
|
+
version = oldDocument.version;
|
|
32
|
+
if (oldDocument.getText() !== content) {
|
|
33
|
+
version++;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
const document = TextDocument.create(url, "typespec", version, content);
|
|
37
|
+
documents.set(url, document);
|
|
38
|
+
fileSystem.addTypeSpecFile(path, ""); // force virtual file system to create directory where document lives.
|
|
39
|
+
return document;
|
|
40
|
+
},
|
|
41
|
+
getDiagnostics(path) {
|
|
42
|
+
var _a;
|
|
43
|
+
return (_a = diagnostics.get(this.getURL(path))) !== null && _a !== void 0 ? _a : [];
|
|
44
|
+
},
|
|
45
|
+
sendDiagnostics(params) {
|
|
46
|
+
var _a;
|
|
47
|
+
if (params.version && ((_a = documents.get(params.uri)) === null || _a === void 0 ? void 0 : _a.version) !== params.version) {
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
diagnostics.set(params.uri, params.diagnostics);
|
|
51
|
+
},
|
|
52
|
+
log(message) {
|
|
53
|
+
logMessages.push(message);
|
|
54
|
+
},
|
|
55
|
+
getURL(path) {
|
|
56
|
+
if (path.startsWith("untitled:")) {
|
|
57
|
+
return path;
|
|
58
|
+
}
|
|
59
|
+
return pathToFileURL(resolveVirtualPath(path)).href;
|
|
60
|
+
},
|
|
61
|
+
};
|
|
62
|
+
const rootUri = serverHost.getURL("./");
|
|
63
|
+
const server = createServer(serverHost);
|
|
64
|
+
await server.initialize({
|
|
65
|
+
rootUri: (options === null || options === void 0 ? void 0 : options.caseInsensitiveFileSystem) ? rootUri.toUpperCase() : rootUri,
|
|
66
|
+
capabilities: {},
|
|
67
|
+
processId: null,
|
|
68
|
+
workspaceFolders: null,
|
|
69
|
+
});
|
|
70
|
+
server.initialized({});
|
|
71
|
+
serverHost.server = server;
|
|
72
|
+
return serverHost;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Takes source code with a cursor position indicated by the given marker
|
|
76
|
+
* ("┆" by default), and returns the source without the marker along with
|
|
77
|
+
* the cursor position.
|
|
78
|
+
*/
|
|
79
|
+
export function extractCursor(sourceWithCursor, marker = "┆") {
|
|
80
|
+
const pos = sourceWithCursor.indexOf(marker);
|
|
81
|
+
ok(pos >= 0, "marker not found");
|
|
82
|
+
const source = sourceWithCursor.replace(marker, "");
|
|
83
|
+
return { source, pos };
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Takes source code with start and end positions indicated by given marker
|
|
87
|
+
* ("~~~" by default) and returns the source without the markers along with
|
|
88
|
+
* the start and end positions.
|
|
89
|
+
*/
|
|
90
|
+
export function extractSquiggles(sourceWithSquiggles, marker = "~~~") {
|
|
91
|
+
const { source: sourceWithoutFistSquiggle, pos } = extractCursor(sourceWithSquiggles, marker);
|
|
92
|
+
const { source, pos: end } = extractCursor(sourceWithoutFistSquiggle, marker);
|
|
93
|
+
return { source, pos, end };
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Extracts all identifiers marked with trailing empty comments from source
|
|
97
|
+
*/
|
|
98
|
+
export function getTestIdentifiers(source) {
|
|
99
|
+
const identifiers = [];
|
|
100
|
+
const ast = parse(source);
|
|
101
|
+
visitChildren(ast, function visit(node) {
|
|
102
|
+
if (node.kind === SyntaxKind.Identifier) {
|
|
103
|
+
if (source.substring(node.end, node.end + "/**/".length) === "/**/") {
|
|
104
|
+
identifiers.push(node);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
visitChildren(node, visit);
|
|
108
|
+
});
|
|
109
|
+
identifiers.sort((x, y) => x.pos - y.pos);
|
|
110
|
+
return identifiers;
|
|
111
|
+
}
|
|
112
|
+
//# sourceMappingURL=test-server-host.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test-server-host.js","sourceRoot":"","sources":["../../testing/test-server-host.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { CompilerOptions } from "../core/options.js";
|
|
2
|
+
import { BasicTestRunner, TestHost, TypeSpecTestLibrary, TypeSpecTestLibraryInit } from "./types.js";
|
|
3
|
+
/**
|
|
4
|
+
* Define a test library defaulting to the most common library structure.
|
|
5
|
+
* @param init Library configuration.
|
|
6
|
+
* @returns TypeSpec Test library.
|
|
7
|
+
*/
|
|
8
|
+
export declare function createTestLibrary(init: TypeSpecTestLibraryInit): TypeSpecTestLibrary;
|
|
9
|
+
export interface TestWrapperOptions {
|
|
10
|
+
wrapper?: (code: string) => string;
|
|
11
|
+
/**
|
|
12
|
+
* List of imports to include automatically.
|
|
13
|
+
*/
|
|
14
|
+
autoImports?: string[];
|
|
15
|
+
/**
|
|
16
|
+
* List of usings to include automatically.
|
|
17
|
+
*/
|
|
18
|
+
autoUsings?: string[];
|
|
19
|
+
compilerOptions?: CompilerOptions;
|
|
20
|
+
}
|
|
21
|
+
export declare function createTestWrapper(host: TestHost, testWrapperOptions?: TestWrapperOptions): BasicTestRunner;
|
|
22
|
+
//# sourceMappingURL=test-utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test-utils.d.ts","sourceRoot":"","sources":["../../testing/test-utils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErD,OAAO,EACL,eAAe,EACf,QAAQ,EACR,mBAAmB,EACnB,uBAAuB,EACxB,MAAM,YAAY,CAAC;AAEpB;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,uBAAuB,GAAG,mBAAmB,CAqBpF;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;IAEnC;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IAEvB;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IAEtB,eAAe,CAAC,EAAE,eAAe,CAAC;CACnC;AACD,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,QAAQ,EACd,kBAAkB,GAAE,kBAAuB,GAC1C,eAAe,CAsCjB"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { resolvePath } from "../core/index.js";
|
|
2
|
+
import { StandardTestLibrary } from "./test-host.js";
|
|
3
|
+
/**
|
|
4
|
+
* Define a test library defaulting to the most common library structure.
|
|
5
|
+
* @param init Library configuration.
|
|
6
|
+
* @returns TypeSpec Test library.
|
|
7
|
+
*/
|
|
8
|
+
export function createTestLibrary(init) {
|
|
9
|
+
var _a, _b;
|
|
10
|
+
const { name } = init;
|
|
11
|
+
const typespecFileFolder = (_a = init.typespecFileFolder) !== null && _a !== void 0 ? _a : "lib";
|
|
12
|
+
const jsFileFolder = (_b = init.jsFileFolder) !== null && _b !== void 0 ? _b : "dist/src";
|
|
13
|
+
return {
|
|
14
|
+
name,
|
|
15
|
+
packageRoot: init.packageRoot,
|
|
16
|
+
files: [
|
|
17
|
+
{ realDir: "", pattern: "package.json", virtualPath: `./node_modules/${name}` },
|
|
18
|
+
{
|
|
19
|
+
realDir: typespecFileFolder,
|
|
20
|
+
pattern: "*.tsp",
|
|
21
|
+
virtualPath: resolvePath(`./node_modules/${name}`, typespecFileFolder),
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
realDir: jsFileFolder,
|
|
25
|
+
pattern: "**/*.js",
|
|
26
|
+
virtualPath: resolvePath(`./node_modules/${name}`, jsFileFolder),
|
|
27
|
+
},
|
|
28
|
+
],
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
export function createTestWrapper(host, testWrapperOptions = {}) {
|
|
32
|
+
const { autoImports, autoUsings, wrapper, compilerOptions: defaultCompilerOptions, } = testWrapperOptions;
|
|
33
|
+
const autoCode = [
|
|
34
|
+
...(autoImports !== null && autoImports !== void 0 ? autoImports : host.libraries.filter((x) => x !== StandardTestLibrary).map((x) => x.name)).map((x) => `import "${x}";`),
|
|
35
|
+
...(autoUsings !== null && autoUsings !== void 0 ? autoUsings : []).map((x) => `using ${x};`),
|
|
36
|
+
].join("\n");
|
|
37
|
+
const wrap = (code) => {
|
|
38
|
+
return `${autoCode}${wrapper ? wrapper(code) : code}`;
|
|
39
|
+
};
|
|
40
|
+
return {
|
|
41
|
+
get program() {
|
|
42
|
+
return host.program;
|
|
43
|
+
},
|
|
44
|
+
fs: host.fs,
|
|
45
|
+
autoCodeOffset: autoCode.length,
|
|
46
|
+
compile: (code, options) => {
|
|
47
|
+
host.addTypeSpecFile("./main.tsp", wrap(code));
|
|
48
|
+
return host.compile("./main.tsp", { ...defaultCompilerOptions, ...options });
|
|
49
|
+
},
|
|
50
|
+
diagnose: (code, options) => {
|
|
51
|
+
host.addTypeSpecFile("./main.tsp", wrap(code));
|
|
52
|
+
return host.diagnose("./main.tsp", { ...defaultCompilerOptions, ...options });
|
|
53
|
+
},
|
|
54
|
+
compileAndDiagnose: (code, options) => {
|
|
55
|
+
host.addTypeSpecFile("./main.tsp", wrap(code));
|
|
56
|
+
return host.compileAndDiagnose("./main.tsp", { ...defaultCompilerOptions, ...options });
|
|
57
|
+
},
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=test-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test-utils.js","sourceRoot":"","sources":["../../testing/test-utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { CompilerHost, Diagnostic, Program, Type } from "../core/index.js";
|
|
2
|
+
import { CompilerOptions } from "../core/options.js";
|
|
3
|
+
export interface TestFileSystem {
|
|
4
|
+
compilerHost: CompilerHost;
|
|
5
|
+
fs: Map<string, string>;
|
|
6
|
+
addTypeSpecFile(path: string, contents: string): void;
|
|
7
|
+
addJsFile(path: string, contents: Record<string, any>): void;
|
|
8
|
+
addRealTypeSpecFile(path: string, realPath: string): Promise<void>;
|
|
9
|
+
addRealJsFile(path: string, realPath: string): Promise<void>;
|
|
10
|
+
addTypeSpecLibrary(testLibrary: TypeSpecTestLibrary): Promise<void>;
|
|
11
|
+
}
|
|
12
|
+
export interface TestHost extends TestFileSystem {
|
|
13
|
+
program: Program;
|
|
14
|
+
libraries: TypeSpecTestLibrary[];
|
|
15
|
+
testTypes: Record<string, Type>;
|
|
16
|
+
compile(main: string, options?: CompilerOptions): Promise<Record<string, Type>>;
|
|
17
|
+
diagnose(main: string, options?: CompilerOptions): Promise<readonly Diagnostic[]>;
|
|
18
|
+
compileAndDiagnose(main: string, options?: CompilerOptions): Promise<[Record<string, Type>, readonly Diagnostic[]]>;
|
|
19
|
+
}
|
|
20
|
+
export interface TestFiles {
|
|
21
|
+
realDir: string;
|
|
22
|
+
pattern: string;
|
|
23
|
+
virtualPath: string;
|
|
24
|
+
}
|
|
25
|
+
export interface TypeSpecTestLibraryInit {
|
|
26
|
+
name: string;
|
|
27
|
+
packageRoot: string;
|
|
28
|
+
/**
|
|
29
|
+
* Folder @default "lib"
|
|
30
|
+
*/
|
|
31
|
+
typespecFileFolder?: string;
|
|
32
|
+
/**
|
|
33
|
+
* JS files folder. @default "dist"
|
|
34
|
+
*/
|
|
35
|
+
jsFileFolder?: string;
|
|
36
|
+
}
|
|
37
|
+
export interface TypeSpecTestLibrary {
|
|
38
|
+
name: string;
|
|
39
|
+
packageRoot: string;
|
|
40
|
+
files: TestFiles[];
|
|
41
|
+
}
|
|
42
|
+
export interface TestHostConfig {
|
|
43
|
+
libraries?: TypeSpecTestLibrary[];
|
|
44
|
+
}
|
|
45
|
+
export declare class TestHostError extends Error {
|
|
46
|
+
code: "ENOENT" | "ERR_MODULE_NOT_FOUND";
|
|
47
|
+
constructor(message: string, code: "ENOENT" | "ERR_MODULE_NOT_FOUND");
|
|
48
|
+
}
|
|
49
|
+
export interface BasicTestRunner {
|
|
50
|
+
readonly program: Program;
|
|
51
|
+
readonly fs: Map<string, string>;
|
|
52
|
+
/**
|
|
53
|
+
* Position to offset the automatically added code.
|
|
54
|
+
*/
|
|
55
|
+
readonly autoCodeOffset: number;
|
|
56
|
+
/**
|
|
57
|
+
* Compile the given code and assert no diagnostics are present.
|
|
58
|
+
*/
|
|
59
|
+
compile(code: string, options?: CompilerOptions): Promise<Record<string, Type>>;
|
|
60
|
+
/**
|
|
61
|
+
* Compile the code and return the list of diagnostics.
|
|
62
|
+
*/
|
|
63
|
+
diagnose(code: string, options?: CompilerOptions): Promise<readonly Diagnostic[]>;
|
|
64
|
+
/**
|
|
65
|
+
* Compile the code and return the test types as well as the list of diagnostics.
|
|
66
|
+
*/
|
|
67
|
+
compileAndDiagnose(code: string, options?: CompilerOptions): Promise<[Record<string, Type>, readonly Diagnostic[]]>;
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../testing/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../testing/types.ts"],"names":[],"mappings":"AAyDA,MAAM,OAAO,aAAc,SAAQ,KAAK;IACtC,YAAY,OAAe,EAAS,IAAuC;QACzE,KAAK,CAAC,OAAO,CAAC,CAAC;QADmB,SAAI,GAAJ,IAAI,CAAmC;IAE3E,CAAC;CACF"}
|