Files
cloudflare--workers-sdk/packages/autoconfig/tests/get-installed-package-version.test.ts
wehub-resource-sync 70bf21e064
Deploy (to testing) and Test Playground Preview Worker / Deploy Playground Preview Worker (testing) (push) Has been skipped
Deploy Workers Shared Staging / Deploy Workers Shared Staging (push) Failing after 0s
Prerelease / build (push) Has been skipped
Handle Changesets / Handle Changesets (push) Has been cancelled
Semgrep OSS scan / semgrep-oss (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 12:30:11 +08:00

82 lines
2.3 KiB
TypeScript

import { runInTempDir, seed } from "@cloudflare/workers-utils/test-helpers";
import { describe, test } from "vitest";
import { getInstalledPackageVersion } from "../src/frameworks/utils/packages";
describe("getInstalledPackageVersion()", () => {
runInTempDir();
test("happy path", async ({ expect }) => {
await seed({
"node_modules/react-router/package.json": JSON.stringify({
name: "react-router",
version: "1.2.3",
main: "index.js",
}),
"node_modules/react-router/index.js": "console.log(1)",
});
expect(getInstalledPackageVersion("react-router", process.cwd())).toBe(
"1.2.3"
);
});
test("no node_modules", async ({ expect }) => {
expect(
getInstalledPackageVersion("react-router", process.cwd())
).toBeUndefined();
});
test("aliased package returns the bundled version of the requested package", async ({
expect,
}) => {
// vite+ installs `@voidzero-dev/vite-plus-core` under the `vite` alias, so
// the resolved package.json has a different `name` and its own `version`.
await seed({
"node_modules/vite/package.json": JSON.stringify({
name: "@voidzero-dev/vite-plus-core",
version: "0.2.2",
bundledVersions: {
vite: "8.1.2",
rolldown: "1.0.0",
tsdown: "0.15.0",
},
main: "index.js",
}),
"node_modules/vite/index.js": "console.log(1)",
});
expect(getInstalledPackageVersion("vite", process.cwd())).toBe("8.1.2");
});
test("aliased package without a matching bundled version falls back to its own version", async ({
expect,
}) => {
await seed({
"node_modules/vite/package.json": JSON.stringify({
name: "@voidzero-dev/vite-plus-core",
version: "0.2.2",
bundledVersions: {
rolldown: "1.0.0",
},
main: "index.js",
}),
"node_modules/vite/index.js": "console.log(1)",
});
expect(getInstalledPackageVersion("vite", process.cwd())).toBe("0.2.2");
});
test("package whose name matches ignores bundledVersions and returns its own version", async ({
expect,
}) => {
await seed({
"node_modules/vite/package.json": JSON.stringify({
name: "vite",
version: "6.3.0",
bundledVersions: {
vite: "8.1.2",
},
main: "index.js",
}),
"node_modules/vite/index.js": "console.log(1)",
});
expect(getInstalledPackageVersion("vite", process.cwd())).toBe("6.3.0");
});
});