Skip to content

Commit db06b6d

Browse files
committed
modules.spec.ts
1 parent 6d594a2 commit db06b6d

5 files changed

Lines changed: 32 additions & 53 deletions

File tree

src/transpilation/transpilation.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,8 @@ export class Transpilation {
8787
try {
8888
const result = this.resolver.resolveSync({}, path.dirname(issuer), request);
8989
assert(typeof result === "string", `Invalid resolution result: ${result}`);
90-
resolvedPath = result;
90+
// https://github.com/webpack/enhanced-resolve#escaping
91+
resolvedPath = result.replace(/\0#/g, "#");
9192
} catch (error) {
9293
if (!isResolveError(error)) throw error;
9394
return { error: error.message };

test/translation/__snapshots__/transformation.spec.ts.snap

Lines changed: 0 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -154,26 +154,6 @@ local ____ = TestClass
154154
return ____exports"
155155
`;
156156

157-
exports[`Transformation (modulesImportNamedSpecialChars) 1`] = `
158-
"local ____exports = {}
159-
local ____kebab_2Dmodule = require(\\"kebab-module\\")
160-
local TestClass1 = ____kebab_2Dmodule.TestClass1
161-
local ____dollar_24module = require(\\"dollar$module\\")
162-
local TestClass2 = ____dollar_24module.TestClass2
163-
local ____singlequote_27module = require(\\"singlequote'module\\")
164-
local TestClass3 = ____singlequote_27module.TestClass3
165-
local ____hash_23module = require(\\"hash#module\\")
166-
local TestClass4 = ____hash_23module.TestClass4
167-
local ____space_20module = require(\\"space module\\")
168-
local TestClass5 = ____space_20module.TestClass5
169-
local ____ = TestClass1
170-
local ____ = TestClass2
171-
local ____ = TestClass3
172-
local ____ = TestClass4
173-
local ____ = TestClass5
174-
return ____exports"
175-
`;
176-
177157
exports[`Transformation (modulesImportRenamed) 1`] = `
178158
"local ____exports = {}
179159
local ____test = require(\\"test\\")

test/translation/transformation/modulesImportNamedSpecialChars.ts

Lines changed: 0 additions & 11 deletions
This file was deleted.
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
// Jest Snapshot v1, https://goo.gl/fbAQLP
2+
3+
exports[`Import module names with invalid lua identifier characters ("_̀ः٠‿"): local identifier 1`] = `"______300_903_660_203F"`;
4+
5+
exports[`Import module names with invalid lua identifier characters ("dollar$"): local identifier 1`] = `"____dollar_24"`;
6+
7+
exports[`Import module names with invalid lua identifier characters ("hash#"): local identifier 1`] = `"____hash_23"`;
8+
9+
exports[`Import module names with invalid lua identifier characters ("ke-bab"): local identifier 1`] = `"____ke_2Dbab"`;
10+
11+
exports[`Import module names with invalid lua identifier characters ("s p a c e"): local identifier 1`] = `"____s_20p_20a_20c_20e"`;
12+
13+
exports[`Import module names with invalid lua identifier characters ("singlequote'"): local identifier 1`] = `"____singlequote_27"`;
14+
15+
exports[`Import module names with invalid lua identifier characters ("ɥɣɎɌͼƛಠ"): local identifier 1`] = `"_____265_263_24E_24C_37C_19B_CA0"`;

test/unit/modules.spec.ts

Lines changed: 15 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -54,19 +54,21 @@ describe("module import/export elision", () => {
5454
test.each(["ke-bab", "dollar$", "singlequote'", "hash#", "s p a c e", "ɥɣɎɌͼƛಠ", "_̀ः٠‿"])(
5555
"Import module names with invalid lua identifier characters (%p)",
5656
name => {
57-
util.testModule`
57+
util.testBundle`
5858
import { foo } from "./${name}";
5959
export { foo };
6060
`
61-
.disableSemanticCheck()
62-
.setLuaHeader('setmetatable(package.loaded, { __index = function() return { foo = "bar" } end })')
63-
.setReturnExport("foo")
64-
.expectToEqual("bar");
61+
.addExtraFile(`${name}.ts`, "export const foo = true;")
62+
.expectToEqual({ foo: true })
63+
.tap(builder => {
64+
const identifier = builder.getMainLuaCodeChunk().match(/local (.+) = require\(/)?.[1];
65+
expect(identifier).toMatchSnapshot("local identifier");
66+
});
6567
}
6668
);
6769

6870
test.each(["export default value;", "export { value as default };"])("Export Default From (%p)", exportStatement => {
69-
util.testModule`
71+
util.testBundle`
7072
export { default } from "./module";
7173
`
7274
.addExtraFile(
@@ -80,7 +82,7 @@ test.each(["export default value;", "export { value as default };"])("Export Def
8082
});
8183

8284
test("Default Import and Export Expression", () => {
83-
util.testModule`
85+
util.testBundle`
8486
import defaultExport from "./module";
8587
export const value = defaultExport;
8688
`
@@ -89,16 +91,17 @@ test("Default Import and Export Expression", () => {
8991
});
9092

9193
test("Import and Export Assignment", () => {
92-
util.testModule`
93-
import * as m from "./module";
94+
util.testBundle`
95+
import m = require("./module");
9496
export const value = m;
9597
`
98+
.setOptions({ module: ts.ModuleKind.CommonJS })
9699
.addExtraFile("module.ts", "export = true;")
97100
.expectToEqual({ value: true });
98101
});
99102

100103
test("Mixed Exports, Default and Named Imports", () => {
101-
util.testModule`
104+
util.testBundle`
102105
import defaultExport, { a, b, c } from "./module";
103106
export const value = defaultExport + b + c;
104107
`
@@ -115,7 +118,7 @@ test("Mixed Exports, Default and Named Imports", () => {
115118
});
116119

117120
test("Mixed Exports, Default and Namespace Import", () => {
118-
util.testModule`
121+
util.testBundle`
119122
import defaultExport, * as ns from "./module";
120123
export const value = defaultExport + ns.b + ns.c;
121124
`
@@ -132,23 +135,14 @@ test("Mixed Exports, Default and Namespace Import", () => {
132135
});
133136

134137
test("Export Default Function", () => {
135-
util.testModule`
138+
util.testBundle`
136139
import defaultExport from "./module";
137140
export const value = defaultExport();
138141
`
139142
.addExtraFile("module.ts", "export default function() { return true; }")
140143
.expectToEqual({ value: true });
141144
});
142145

143-
test("Export Equals", () => {
144-
util.testModule`
145-
import * as module from "./module";
146-
export const value = module;
147-
`
148-
.addExtraFile("module.ts", "export = true;")
149-
.expectToEqual({ value: true });
150-
});
151-
152146
const reassignmentTestCases = [
153147
"x = 1",
154148
"x++",

0 commit comments

Comments
 (0)