Skip to content

Commit d1a0291

Browse files
committed
Refactor transformers.spec.ts test
1 parent 1b58f0a commit d1a0291

7 files changed

Lines changed: 75 additions & 97 deletions

File tree

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
import * as path from "path";
2+
import * as tstl from "../../../src";
3+
import * as util from "../../util";
4+
5+
const optionsOfTransformer = (transformer: tstl.TransformerImport): tstl.CompilerOptions => ({
6+
plugins: [transformer],
7+
});
8+
9+
test("should ignore language service plugins", () => {
10+
util.testFunction`
11+
return;
12+
`
13+
.setOptions({ plugins: [{ name: path.join(__dirname, "resolve.ts") }] })
14+
.expectToEqual(undefined);
15+
});
16+
17+
describe("resolution", () => {
18+
const testTransform = (transformer: tstl.TransformerImport) => {
19+
util.testFunction`
20+
return;
21+
`
22+
.setOptions(optionsOfTransformer(transformer))
23+
.expectToEqual(true);
24+
};
25+
26+
test("resolve relative transformer paths", () => {
27+
jest.spyOn(process, "cwd").mockReturnValue(__dirname);
28+
testTransform({ transform: "./resolve.ts" });
29+
});
30+
31+
test("load .js transformers", () => {
32+
testTransform({ transform: path.join(__dirname, "resolve.js") });
33+
});
34+
35+
test("load .ts transformers", () => {
36+
testTransform({ transform: path.join(__dirname, "resolve.ts") });
37+
});
38+
39+
test('"import" option', () => {
40+
testTransform({ transform: path.join(__dirname, "import.ts"), import: "transformer" });
41+
});
42+
43+
test("error if transformer could not be resolved", () => {
44+
util.testModule``
45+
.setOptions(optionsOfTransformer({ transform: path.join(__dirname, "error.ts") }))
46+
.expectToHaveDiagnostics();
47+
});
48+
});
49+
50+
describe("factory types", () => {
51+
for (const type of ["program", "config", "checker", "raw", "compilerOptions"] as const) {
52+
test(type, () => {
53+
const options = optionsOfTransformer({
54+
transform: path.join(__dirname, "types.ts"),
55+
type,
56+
import: type,
57+
value: true,
58+
});
59+
60+
util.testFunction`
61+
return false;
62+
`
63+
.setOptions(options)
64+
.expectToEqual(true);
65+
});
66+
}
67+
});
Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import * as assert from "assert";
12
import * as ts from "typescript";
23
import * as tstl from "../../../src";
34
import { visitAndReplace } from "./utils";
@@ -7,7 +8,7 @@ export const program = (program: ts.Program, options: { value: any }): ts.Transf
78

89
export const config = ({ value }: { value: any }): ts.TransformerFactory<ts.SourceFile> => context => file =>
910
visitAndReplace(context, file, node => {
10-
if (!ts.isReturnStatement(node) || node.expression) return;
11+
if (!ts.isReturnStatement(node)) return;
1112
return ts.updateReturn(node, ts.createLiteral(value));
1213
});
1314

@@ -24,19 +25,16 @@ export const checker = (
2425

2526
export const raw: ts.TransformerFactory<ts.SourceFile> = context => file =>
2627
visitAndReplace(context, file, node => {
27-
if (!ts.isReturnStatement(node) || node.expression) return;
28+
if (!ts.isReturnStatement(node)) return;
2829
return ts.updateReturn(node, ts.createLiteral(true));
2930
});
3031

31-
export const compilerOptions = ({
32-
luaTarget,
33-
}: tstl.CompilerOptions): ts.TransformerFactory<ts.SourceFile> => context => file => {
34-
if (luaTarget !== tstl.LuaTarget.LuaJIT) {
35-
throw new Error("Transformer supports only LuaJIT target");
36-
}
37-
32+
export const compilerOptions = (
33+
options: tstl.CompilerOptions
34+
): ts.TransformerFactory<ts.SourceFile> => context => file => {
35+
assert(options.plugins?.length === 1);
3836
return visitAndReplace(context, file, node => {
39-
if (!ts.isReturnStatement(node) || node.expression) return;
37+
if (!ts.isReturnStatement(node)) return;
4038
return ts.updateReturn(node, ts.createLiteral(true));
4139
});
4240
};

test/unit/transformers/transformers.spec.ts

Lines changed: 0 additions & 87 deletions
This file was deleted.

0 commit comments

Comments
 (0)