import { describe, expect, test } from "bun:test"; import { validateVersion } from "../../scripts/bump-version-logic"; describe("build 版本注入", () => { test("validateVersion 接受有效版本", () => { expect(() => validateVersion("0.1.0")).not.toThrow(); expect(() => validateVersion("1.2.3")).not.toThrow(); }); test("validateVersion 拒绝无效版本", () => { expect(() => validateVersion("invalid")).toThrow(); expect(() => validateVersion("1.0.0-beta.1")).toThrow(); }); test("生成的 server-entry 包含版本字面量", () => { const version = "0.1.0"; const serverEntryTs = [ `import { bootstrap } from "../src/server/bootstrap";`, `import { parseRuntimeArgs } from "../src/server/config";`, `import { staticAssets } from "./static-assets";`, "", `const APP_VERSION = "${version}" as const;`, "", `async function main() {`, ` const { configPath } = parseRuntimeArgs();`, ` await bootstrap({ configPath, mode: "production", staticAssets, version: APP_VERSION });`, `}`, "", `void main().catch((error) => {`, ` console.error("启动失败:", error instanceof Error ? error.message : error);`, ` process.exit(1);`, `});`, "", ].join("\n"); expect(serverEntryTs).toContain(`const APP_VERSION = "${version}"`); expect(serverEntryTs).toContain("version: APP_VERSION"); }); test("版本字面量不依赖外部 package.json", () => { const serverEntryTs = [`const APP_VERSION = "0.1.0" as const;`].join("\n"); expect(serverEntryTs).not.toContain("package.json"); expect(serverEntryTs).not.toContain("Bun.file"); expect(serverEntryTs).toContain('"0.1.0"'); }); });