Files
tutti/tools/scripts/desktop-release-versioning.test.mjs
agent-radar 2ed3415fb7
Publish Claude Code Binaries / Stage and publish binaries (push) Canceled after 0s
Publish Tutti App Runtime / Build darwin-arm64 (push) Canceled after 0s
Publish Tutti App Runtime / Build darwin-amd64 (push) Canceled after 0s
Publish Tutti App Runtime / Build linux-amd64 (push) Canceled after 0s
Publish Tutti App Runtime / Build windows-amd64 (push) Canceled after 0s
Sync Tutti Agent Skills / sync (push) Canceled after 0s
Windows Agent Adapters / Test Windows agent adapters (push) Canceled after 0s
Windows Daemon Adapters / Test Windows daemon adapters (push) Canceled after 0s
Publish Tutti App Runtime / Publish runtime catalog (push) Canceled after 0s
源码快照 @ 2026-09-01 (source-only, 剔除非源码素材)
2026-09-01 20:17:27 +08:00

136 lines
3.2 KiB
JavaScript

import assert from "node:assert/strict";
import test from "node:test";
import { resolveDesktopRelease } from "../../apps/desktop/scripts/lib/resolveDesktopRelease.mjs";
test("stable releases stay latest and are not prereleases", () => {
const release = resolveDesktopRelease({
currentVersion: "0.0.0",
explicitVersion: "1.12.20",
strategy: "explicit_version",
tags: []
});
assert.deepEqual(release, {
channel: "stable",
makeLatest: true,
prerelease: false,
tag: "v1.12.20",
version: "1.12.20"
});
});
test("rc releases are marked as prereleases and do not become latest", () => {
const release = resolveDesktopRelease({
currentVersion: "0.0.0",
explicitVersion: "1.12.19-rc.0",
strategy: "explicit_version",
tags: []
});
assert.deepEqual(release, {
channel: "rc",
makeLatest: false,
prerelease: true,
tag: "v1.12.19-rc.0",
version: "1.12.19-rc.0"
});
});
test("patch rc releases increment the rc number for the next stable version", () => {
const release = resolveDesktopRelease({
currentVersion: "0.0.0",
strategy: "patch_rc",
tags: [
"tutti-desktop-v1.12.20",
"tutti-desktop-v1.12.21-rc.0",
"tutti-desktop-v1.12.21-rc.1"
]
});
assert.deepEqual(release, {
channel: "rc",
makeLatest: false,
prerelease: true,
tag: "v1.12.21-rc.2",
version: "1.12.21-rc.2"
});
});
test("stable patch releases ignore rc tags when resolving the next latest release", () => {
const release = resolveDesktopRelease({
currentVersion: "0.0.0",
strategy: "patch",
tags: [
"tutti-desktop-v1.12.20",
"tutti-desktop-v1.12.21-rc.0",
"tutti-desktop-v1.12.21-rc.1"
]
});
assert.deepEqual(release, {
channel: "stable",
makeLatest: true,
prerelease: false,
tag: "v1.12.21",
version: "1.12.21"
});
});
test("beta releases are marked as prereleases and do not become latest", () => {
const release = resolveDesktopRelease({
currentVersion: "0.0.0",
explicitVersion: "1.12.22-beta.0",
strategy: "explicit_version",
tags: []
});
assert.deepEqual(release, {
channel: "beta",
makeLatest: false,
prerelease: true,
tag: "v1.12.22-beta.0",
version: "1.12.22-beta.0"
});
});
test("patch beta releases increment the beta number without touching rc tags", () => {
const release = resolveDesktopRelease({
currentVersion: "0.0.0",
strategy: "patch_beta",
tags: [
"tutti-desktop-v1.12.20",
"tutti-desktop-v1.12.21-beta.0",
"tutti-desktop-v1.12.21-beta.1",
"tutti-desktop-v1.12.21-rc.0"
]
});
assert.deepEqual(release, {
channel: "beta",
makeLatest: false,
prerelease: true,
tag: "v1.12.21-beta.2",
version: "1.12.21-beta.2"
});
});
test("stable patch releases ignore beta tags when resolving the next latest release", () => {
const release = resolveDesktopRelease({
currentVersion: "0.0.0",
strategy: "patch",
tags: [
"tutti-desktop-v1.12.20",
"tutti-desktop-v1.12.21-beta.0",
"tutti-desktop-v1.12.21-rc.0"
]
});
assert.deepEqual(release, {
channel: "stable",
makeLatest: true,
prerelease: false,
tag: "v1.12.21",
version: "1.12.21"
});
});