mirror of
https://github.com/better-auth/better-auth.git
synced 2026-10-19 11:24:57 -05:00
82 lines
2.2 KiB
TypeScript
82 lines
2.2 KiB
TypeScript
import fs from "node:fs/promises";
|
|
import os from "node:os";
|
|
import path from "node:path";
|
|
import { afterEach, describe, expect, test } from "vitest";
|
|
import { getInstalledPackageVersion } from "../src/utils/get-package-info";
|
|
|
|
/**
|
|
* @see https://github.com/better-auth/better-auth/issues/10997
|
|
*/
|
|
describe("getInstalledPackageVersion", () => {
|
|
const temporaryDirectories: string[] = [];
|
|
|
|
afterEach(async () => {
|
|
await Promise.all(
|
|
temporaryDirectories
|
|
.splice(0)
|
|
.map((directory) => fs.rm(directory, { recursive: true, force: true })),
|
|
);
|
|
});
|
|
|
|
test.for([
|
|
{
|
|
exports: { "./package.json": "./package.json" },
|
|
packageName: "example-package",
|
|
resolution: "its package manifest",
|
|
version: "1.2.3",
|
|
},
|
|
{
|
|
exports: "./index.js",
|
|
packageName: "@example/package",
|
|
resolution: "its package entry point",
|
|
version: "4.5.6",
|
|
},
|
|
{
|
|
exports: { ".": { import: "./index.js" } },
|
|
packageName: "esm-only-package",
|
|
resolution: "an import-only entry point",
|
|
version: "7.8.9",
|
|
},
|
|
])(
|
|
"resolves $packageName through $resolution",
|
|
async ({ exports, packageName, version }) => {
|
|
const workspaceRoot = await fs.mkdtemp(
|
|
path.join(os.tmpdir(), "better-auth-installed-version-"),
|
|
);
|
|
temporaryDirectories.push(workspaceRoot);
|
|
const projectDirectory = path.join(workspaceRoot, "apps", "web");
|
|
const packageDirectory = path.join(
|
|
workspaceRoot,
|
|
"node_modules",
|
|
...packageName.split("/"),
|
|
);
|
|
await fs.mkdir(projectDirectory, { recursive: true });
|
|
await fs.mkdir(packageDirectory, { recursive: true });
|
|
await fs.writeFile(
|
|
path.join(packageDirectory, "package.json"),
|
|
JSON.stringify({
|
|
name: packageName,
|
|
version,
|
|
exports,
|
|
}),
|
|
);
|
|
await fs.writeFile(path.join(packageDirectory, "index.js"), "");
|
|
|
|
expect(getInstalledPackageVersion(packageName, projectDirectory)).toBe(
|
|
version,
|
|
);
|
|
},
|
|
);
|
|
|
|
test("returns null when the package is not installed", async () => {
|
|
const projectDirectory = await fs.mkdtemp(
|
|
path.join(os.tmpdir(), "better-auth-missing-version-"),
|
|
);
|
|
temporaryDirectories.push(projectDirectory);
|
|
|
|
expect(
|
|
getInstalledPackageVersion("missing-package", projectDirectory),
|
|
).toBeNull();
|
|
});
|
|
});
|