1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
|
import assert from "assert";
import dedent from "dedent";
import { bundlerTest, expectBundled, itBundled, testForFile } from "./expectBundled";
var { describe, test, expect } = testForFile(import.meta.path);
describe("bundler", () => {
itBundled("edgecase/EmptyFile", {
files: {
"/entry.js": "",
},
});
itBundled("edgecase/ImportStarFunction", {
files: {
"/entry.js": /* js */ `
import * as foo from "./foo.js";
console.log(foo.fn());
`,
"/foo.js": /* js */ `
export function fn() {
return "foo";
}
`,
},
run: { stdout: "foo" },
});
itBundled("edgecase/ImportStarSyntaxErrorBug", {
// bug: 'import {ns}, * as import_x from "x";'
files: {
"/entry.js": /* js */ `
export {ns} from 'x'
export * as ns2 from 'x'
`,
},
external: ["x"],
runtimeFiles: {
"/node_modules/x/index.js": `export const ns = 1`,
},
run: true,
});
itBundled("edgecase/BunPluginTreeShakeImport", {
// This only appears at runtime and not with bun build, even with --transform
files: {
"/entry.ts": /* js */ `
import { A, B } from "./somewhere-else";
import { plugin } from "bun";
plugin(B());
new A().chainedMethods();
`,
"/somewhere-else.ts": /* js */ `
export class A {
chainedMethods() {
console.log("hey");
}
}
export function B() {
return { name: 'hey' }
}
`,
},
external: ["external"],
mode: "transform",
minifySyntax: true,
platform: "bun",
run: { file: "/entry.ts" },
});
itBundled("edgecase/TemplateStringIssue622", {
files: {
"/entry.ts": /* js */ `
capture(\`\\?\`);
capture(hello\`\\?\`);
`,
},
capture: ["`\\\\?`", "hello`\\\\?`"],
platform: "bun",
});
itBundled("edgecase/StringNullBytes", {
files: {
"/entry.ts": /* js */ `
capture("Hello\0");
`,
},
capture: ['"Hello\0"'],
});
});
|