36 lines
1.3 KiB
TypeScript
36 lines
1.3 KiB
TypeScript
import { afterEach, expect, test, rs } from "@rstest/core";
|
|
|
|
import pkg from "../../package.json";
|
|
|
|
const original = process.env.NEXT_PUBLIC_APP_VERSION;
|
|
|
|
afterEach(() => {
|
|
rs.resetModules();
|
|
if (original === undefined) {
|
|
delete process.env.NEXT_PUBLIC_APP_VERSION;
|
|
} else {
|
|
process.env.NEXT_PUBLIC_APP_VERSION = original;
|
|
}
|
|
});
|
|
|
|
test("APP_VERSION uses NEXT_PUBLIC_APP_VERSION when set (nightly build-arg)", async () => {
|
|
process.env.NEXT_PUBLIC_APP_VERSION = "2.1.0-nightly.20260712-abc1234";
|
|
const { APP_VERSION } = await import("@/version");
|
|
expect(APP_VERSION).toBe("2.1.0-nightly.20260712-abc1234");
|
|
});
|
|
|
|
test("APP_VERSION falls back to package.json version when env is unset (local dev)", async () => {
|
|
delete process.env.NEXT_PUBLIC_APP_VERSION;
|
|
const { APP_VERSION } = await import("@/version");
|
|
expect(APP_VERSION).toBe(pkg.version);
|
|
});
|
|
|
|
test("APP_VERSION treats an empty NEXT_PUBLIC_APP_VERSION as unset (release Docker build)", async () => {
|
|
// The frontend Dockerfile sets ENV NEXT_PUBLIC_APP_VERSION="" when nightly CI
|
|
// doesn't pass APP_VERSION; the empty string must fall through to the
|
|
// package.json version just like an unset var.
|
|
process.env.NEXT_PUBLIC_APP_VERSION = "";
|
|
const { APP_VERSION } = await import("@/version");
|
|
expect(APP_VERSION).toBe(pkg.version);
|
|
});
|