- Remove the 24h disk cache (State, readState/writeState, checkInterval) that served stale latest versions within the TTL window - Remove file lock (Flock) and confirmation prompt (Prompt/Terminal) - Every check now hits the npm registry directly - Updates always auto-install on any version mismatch within the same major, including rollbacks where the registry version is lower - Drop the interactive option from check() and the confirm/declined/ dismissed action concepts
33 lines
1.2 KiB
TypeScript
33 lines
1.2 KiB
TypeScript
import { describe, expect, test } from "bun:test"
|
|
import { action, decodePolicy } from "./updater"
|
|
|
|
describe("updater", () => {
|
|
test("reads autoupdate from JSONC", () => {
|
|
expect(decodePolicy('{ // preference\n "autoupdate": "notify",\n}')).toBe("notify")
|
|
expect(decodePolicy('{ "autoupdate": false }')).toBe(false)
|
|
expect(decodePolicy('{ "autoupdate": "invalid" }')).toBeUndefined()
|
|
})
|
|
|
|
test("automatically updates patches and minors", () => {
|
|
expect(action("1.2.3", "1.2.4", true)).toBe("upgrade")
|
|
expect(action("1.2.3", "1.3.0", true)).toBe("upgrade")
|
|
expect(action("1.2.3", "1.2.4", "notify")).toBe("upgrade")
|
|
expect(action("1.2.3", "1.3.0", "notify")).toBe("upgrade")
|
|
})
|
|
|
|
test("skips when autoupdate is disabled", () => {
|
|
expect(action("1.2.3", "1.2.4", false)).toBe("none")
|
|
})
|
|
|
|
test("never automatically updates majors", () => {
|
|
expect(action("1.2.3", "2.0.0", true)).toBe("none")
|
|
})
|
|
|
|
test("reports up-to-date only when versions match", () => {
|
|
expect(action("1.2.3", "1.2.3", true)).toBe("none")
|
|
})
|
|
|
|
test("upgrades when latest is lower (rollback)", () => {
|
|
expect(action("1.2.4", "1.2.3", true)).toBe("upgrade")
|
|
})
|
|
})
|