Skip to content

Commit 9fd7b52

Browse files
committed
testProject test util
1 parent 006f706 commit 9fd7b52

3 files changed

Lines changed: 32 additions & 7 deletions

File tree

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
import * as path from "path";
2+
import * as util from "../util";
3+
4+
const projectPath = path.resolve(__dirname, "module-resolution", "project-with-node-modules");
5+
6+
test("moduleResolution", () => {
7+
util.testProject(path.join(projectPath, "tsconfig.json"))
8+
.setMainFileName(path.join(projectPath, "main.ts"))
9+
.debug()
10+
.expectToEqual({});
11+
})

test/transpile/module-resolution/project-with-node-modules/main.ts

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,3 @@ export const testResult = [
3131

3232
moduleWithDependency.callDependency()
3333
];
34-
35-
export function sup() {
36-
return 3;
37-
}

test/util.ts

Lines changed: 21 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import * as ts from "typescript";
99
import * as vm from "vm";
1010
import * as tstl from "../src";
1111
import { createEmitOutputCollector } from "../src/transpilation/output-collector";
12+
import { transpileProject } from "../src";
1213

1314
const jsonLib = fs.readFileSync(path.join(__dirname, "json.lua"), "utf8");
1415
const luaLib = fs.readFileSync(path.resolve(__dirname, "../dist/lualib/lualib_bundle.lua"), "utf8");
@@ -128,7 +129,7 @@ export abstract class TestBuilder {
128129
return this;
129130
}
130131

131-
private options: tstl.CompilerOptions = {
132+
protected options: tstl.CompilerOptions = {
132133
luaTarget: tstl.LuaTarget.Lua54,
133134
noHeader: true,
134135
skipLibCheck: true,
@@ -148,7 +149,7 @@ export abstract class TestBuilder {
148149
protected mainFileName = "main.ts";
149150
public setMainFileName(mainFileName: string): this {
150151
expect(this.hasProgram).toBe(false);
151-
this.mainFileName = mainFileName;
152+
this.mainFileName = path.normalize(mainFileName);
152153
return this;
153154
}
154155

@@ -202,7 +203,8 @@ export abstract class TestBuilder {
202203
const { transpiledFiles } = this.getLuaResult();
203204
const mainFile = this.options.luaBundle
204205
? transpiledFiles[0]
205-
: transpiledFiles.find(({ sourceFiles }) => sourceFiles.some(f => f.fileName === this.mainFileName));
206+
: transpiledFiles.find(({ sourceFiles }) => sourceFiles.some(f => path.normalize(f.fileName) === this.mainFileName));
207+
206208
expect(mainFile).toMatchObject({ lua: expect.any(String), luaSourceMap: expect.any(String) });
207209
return mainFile as ExecutableTranspiledFile;
208210
}
@@ -539,6 +541,21 @@ class ExpressionTestBuilder extends AccessorTestBuilder {
539541
}
540542
}
541543

544+
class ProjectTestBuilder extends ModuleTestBuilder {
545+
constructor(private tsConfig: string) {
546+
super("");
547+
}
548+
549+
@memoize
550+
public getLuaResult(): tstl.TranspileVirtualProjectResult {
551+
// Override getLuaResult to use transpileProject with tsconfig.json instead
552+
const collector = createEmitOutputCollector();
553+
const { diagnostics } = transpileProject(this.tsConfig, this.options, collector.writeFile);
554+
555+
return { diagnostics: [...diagnostics], transpiledFiles: collector.files };
556+
}
557+
}
558+
542559
const createTestBuilderFactory = <T extends TestBuilder>(
543560
builder: new (_tsCode: string) => T,
544561
serializeSubstitutions: boolean
@@ -566,3 +583,4 @@ export const testFunction = createTestBuilderFactory(FunctionTestBuilder, false)
566583
export const testFunctionTemplate = createTestBuilderFactory(FunctionTestBuilder, true);
567584
export const testExpression = createTestBuilderFactory(ExpressionTestBuilder, false);
568585
export const testExpressionTemplate = createTestBuilderFactory(ExpressionTestBuilder, true);
586+
export const testProject = createTestBuilderFactory(ProjectTestBuilder, false);

0 commit comments

Comments
 (0)