mirror of
https://github.com/oven-sh/bun
synced 2026-02-10 02:48:50 +00:00
208 lines
4.9 KiB
TypeScript
208 lines
4.9 KiB
TypeScript
// Bundle tests are tests concerning bundling bugs that only occur in DevServer.
|
|
import { devTest, minimalFramework } from "../dev-server-harness";
|
|
|
|
const liveBindingTest = devTest("live bindings with `var`", {
|
|
framework: minimalFramework,
|
|
files: {
|
|
"state.ts": `
|
|
export var value = 0;
|
|
export function increment() {
|
|
value++;
|
|
}
|
|
`,
|
|
"routes/index.ts": `
|
|
import { value, increment } from '../state';
|
|
export default function(req, meta) {
|
|
increment();
|
|
return new Response('State: ' + value);
|
|
}
|
|
`,
|
|
},
|
|
async test(dev) {
|
|
await dev.fetch("/").expect("State: 1");
|
|
await dev.fetch("/").expect("State: 2");
|
|
await dev.fetch("/").expect("State: 3");
|
|
await dev.patch("routes/index.ts", {
|
|
find: "State",
|
|
replace: "Value",
|
|
});
|
|
await dev.fetch("/").expect("Value: 4");
|
|
await dev.fetch("/").expect("Value: 5");
|
|
await dev.write(
|
|
"state.ts",
|
|
`
|
|
export var value = 0;
|
|
export function increment() {
|
|
value--;
|
|
}
|
|
`,
|
|
);
|
|
await dev.fetch("/").expect("Value: -1");
|
|
await dev.fetch("/").expect("Value: -2");
|
|
},
|
|
});
|
|
devTest("live bindings through export clause", {
|
|
framework: minimalFramework,
|
|
files: {
|
|
"state.ts": `
|
|
export var value = 0;
|
|
export function increment() {
|
|
value++;
|
|
}
|
|
`,
|
|
"proxy.ts": `
|
|
import { value } from './state';
|
|
export { value as live };
|
|
`,
|
|
"routes/index.ts": `
|
|
import { increment } from '../state';
|
|
import { live } from '../proxy';
|
|
export default function(req, meta) {
|
|
increment();
|
|
return new Response('State: ' + live);
|
|
}
|
|
`,
|
|
},
|
|
test: liveBindingTest.test,
|
|
});
|
|
devTest("live bindings through export from", {
|
|
framework: minimalFramework,
|
|
files: {
|
|
"state.ts": `
|
|
export var value = 0;
|
|
export function increment() {
|
|
value++;
|
|
}
|
|
`,
|
|
"proxy.ts": `
|
|
export { value as live } from './state';
|
|
`,
|
|
"routes/index.ts": `
|
|
import { increment } from '../state';
|
|
import { live } from '../proxy';
|
|
export default function(req, meta) {
|
|
increment();
|
|
return new Response('State: ' + live);
|
|
}
|
|
`,
|
|
},
|
|
test: liveBindingTest.test,
|
|
});
|
|
// devTest("live bindings through export star", {
|
|
// framework: minimalFramework,
|
|
// files: {
|
|
// "state.ts": `
|
|
// export var value = 0;
|
|
// export function increment() {
|
|
// value++;
|
|
// }
|
|
// `,
|
|
// "proxy.ts": `
|
|
// export * from './state';
|
|
// `,
|
|
// "routes/index.ts": `
|
|
// import { increment } from '../state';
|
|
// import { live } from '../proxy';
|
|
// export default function(req, meta) {
|
|
// increment();
|
|
// return new Response('State: ' + live);
|
|
// }
|
|
// `,
|
|
// },
|
|
// test: liveBindingTest.test,
|
|
// });
|
|
devTest("export { x as y }", {
|
|
framework: minimalFramework,
|
|
files: {
|
|
"module.ts": `
|
|
function x(value) {
|
|
return value + 1;
|
|
}
|
|
export { x as y };
|
|
`,
|
|
"routes/index.ts": `
|
|
import { y } from '../module';
|
|
export default function(req, meta) {
|
|
return new Response('Value: ' + y(1));
|
|
}
|
|
`,
|
|
},
|
|
async test(dev) {
|
|
await dev.fetch("/").expect("Value: 2");
|
|
await dev.patch("module.ts", {
|
|
find: "1",
|
|
replace: "2",
|
|
});
|
|
await dev.fetch("/").expect("Value: 3");
|
|
}
|
|
});
|
|
devTest("import { x as y }", {
|
|
framework: minimalFramework,
|
|
files: {
|
|
"module.ts": `
|
|
export const x = 1;
|
|
`,
|
|
"routes/index.ts": `
|
|
import { x as y } from '../module';
|
|
export default function(req, meta) {
|
|
return new Response('Value: ' + y);
|
|
}
|
|
`,
|
|
},
|
|
async test(dev) {
|
|
await dev.fetch("/").expect("Value: 1");
|
|
await dev.patch("module.ts", {
|
|
find: "1",
|
|
replace: "2",
|
|
});
|
|
await dev.fetch("/").expect("Value: 2");
|
|
}
|
|
});
|
|
devTest("import { default as y }", {
|
|
framework: minimalFramework,
|
|
files: {
|
|
"module.ts": `
|
|
export default 1;
|
|
`,
|
|
"routes/index.ts": `
|
|
import { default as y } from '../module';
|
|
export default function(req, meta) {
|
|
return new Response('Value: ' + y);
|
|
}
|
|
`,
|
|
},
|
|
async test(dev) {
|
|
await dev.fetch("/").expect("Value: 1");
|
|
await dev.patch("module.ts", {
|
|
find: "1",
|
|
replace: "2",
|
|
});
|
|
await dev.fetch("/").expect("Value: 2");
|
|
}
|
|
});
|
|
devTest("export { default as y }", {
|
|
framework: minimalFramework,
|
|
files: {
|
|
"module.ts": `
|
|
export default 1;
|
|
`,
|
|
"middle.ts": `
|
|
export { default as y } from './module';
|
|
`,
|
|
"routes/index.ts": `
|
|
import { y } from '../middle';
|
|
export default function(req, meta) {
|
|
return new Response('Value: ' + y);
|
|
}
|
|
`,
|
|
},
|
|
async test(dev) {
|
|
await dev.fetch("/").expect("Value: 1");
|
|
await dev.patch("module.ts", {
|
|
find: "1",
|
|
replace: "2",
|
|
});
|
|
await dev.fetch("/").expect("Value: 2");
|
|
}
|
|
});
|