| 123456789101112131415161718192021222324252627282930313233 |
- import { describe, expect, test } from "vitest";
- import { compareVersions, isVersionEqual, isVersionGreater, isVersionLess } from "@/lib/version";
- describe("版本比较", () => {
- test("应正确判断是否存在可升级版本(latest > current)", () => {
- expect(compareVersions("v0.3.0", "v0.3.33")).toBe(1);
- expect(compareVersions("v0.3.33", "v0.3.0")).toBe(-1);
- expect(compareVersions("v0.3.33", "v0.3.33")).toBe(0);
- });
- test("应正确处理预发布版本(stable > prerelease)", () => {
- expect(compareVersions("v1.2.3-beta.1", "v1.2.3")).toBe(1);
- expect(compareVersions("v1.2.3", "v1.2.3-beta.1")).toBe(-1);
- });
- test("应正确比较预发布标识(alpha < beta, alpha.1 < alpha.2)", () => {
- expect(compareVersions("v1.2.3-alpha", "v1.2.3-beta")).toBe(1);
- expect(compareVersions("v1.2.3-alpha.1", "v1.2.3-alpha.2")).toBe(1);
- expect(compareVersions("v1.2.3-alpha.2", "v1.2.3-alpha.10")).toBe(1);
- });
- test("应忽略构建元数据(+build)", () => {
- expect(compareVersions("v1.2.3+build.1", "v1.2.3+build.2")).toBe(0);
- expect(compareVersions("v1.2.3+build.2", "v1.2.3+build.1")).toBe(0);
- });
- test("无法解析的版本应 Fail Open(视为相等)", () => {
- expect(compareVersions("dev", "v1.0.0")).toBe(0);
- expect(isVersionLess("dev", "v1.0.0")).toBe(false);
- expect(isVersionGreater("dev", "v1.0.0")).toBe(false);
- expect(isVersionEqual("dev", "v1.0.0")).toBe(true);
- });
- });
|