Ampel / ampel (push) Failing after 22s
Der Verlauf las bisher nur den Hermes-Cron-Status ("Skript lief") und zeigte die
Laeufe vom 06. und 13.09. als "durchgelaufen", obwohl dort zurueckgerollt und
festgehalten wurde; ein abgebrochener Lauf stand als "laeuft" da. Jetzt kommt der
Verlauf aus dem Meldeprotokoll (~/mc2-notify.log), also aus dem, was autoupdate.sh
selbst je Baustein meldet.
Festgehaltene Bausteine (Pin-Register) werden zum Waechter-Hinweis mit Knopf
"Freigeben", auf der Updates-Seite markiert und in der Updates-Lampe gezaehlt.
Hermes zeigt seine laufende Version und die Zahl der neuen Aenderungen.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
71 lines
3.0 KiB
TypeScript
71 lines
3.0 KiB
TypeScript
import { flugplanZeit, gbText, laufzeit, seit, vor } from "./zeit"
|
||
import { rolleVon, temperaturFarbe, versionen } from "./anzeige"
|
||
import type { Modell } from "./typen"
|
||
|
||
// Fester Bezugspunkt: Mittwoch, 23.09.2026, 20:45 Uhr Berliner Zeit.
|
||
const JETZT = new Date("2026-09-23T20:45:00+02:00")
|
||
|
||
describe("flugplanZeit", () => {
|
||
it("benennt heute, gestern und morgen", () => {
|
||
expect(flugplanZeit("2026-09-23T03:00:00+02:00", JETZT)).toBe("HEUTE 03:00")
|
||
expect(flugplanZeit("2026-09-22T23:10:00+02:00", JETZT)).toBe("GESTERN 23:10")
|
||
expect(flugplanZeit("2026-09-24T03:00:00+02:00", JETZT)).toBe("MORGEN 03:00")
|
||
})
|
||
|
||
it("nimmt für die nächsten Tage den Wochentag", () => {
|
||
expect(flugplanZeit("2026-09-27T04:30:00+02:00", JETZT)).toBe("SO 04:30")
|
||
})
|
||
|
||
it("rechnet UTC-Zeiten in Berliner Zeit um", () => {
|
||
expect(flugplanZeit("2026-09-23T05:00:00Z", JETZT)).toBe("HEUTE 07:00")
|
||
})
|
||
})
|
||
|
||
describe("kleine Helfer", () => {
|
||
it("seit und vor", () => {
|
||
expect(seit(new Date("2026-09-07T11:03:00+02:00").getTime() / 1000, JETZT)).toBe("seit 07.09., 11:03")
|
||
expect(vor(JETZT.getTime() / 1000 - 40, JETZT.getTime())).toBe("vor 40 s")
|
||
expect(vor(JETZT.getTime() / 1000 - 2 * 86_400, JETZT.getTime())).toBe("vor 2 Tagen")
|
||
})
|
||
|
||
it("laufzeit und gbText", () => {
|
||
expect(laufzeit(10 * 86_400 + 14 * 3600 + 59)).toEqual([10, 14])
|
||
expect(gbText(55 * 1024 ** 3)).toBe("55 GB")
|
||
expect(gbText(1.9 * 1024 ** 4, 1)).toBe("1,9 TB")
|
||
})
|
||
|
||
it("Temperaturfarbe wechselt bei 70 und 85 Grad", () => {
|
||
expect(temperaturFarbe(37)).toBe("var(--gruen)")
|
||
expect(temperaturFarbe(70)).toBe("var(--bernstein)")
|
||
expect(temperaturFarbe(85)).toBe("var(--rot)")
|
||
})
|
||
})
|
||
|
||
describe("versionen", () => {
|
||
it("zeigt Motor-Builds mit b und nur echte Neuerungen", () => {
|
||
expect(versionen("engine", { kind: "engine", installed_build: 11057, latest_build: 11139 })).toEqual({ laeuft: "b11057", neu: "b11139" })
|
||
expect(versionen("engine", { kind: "engine", installed_build: 11139, latest_build: 11139 })).toEqual({ laeuft: "b11139", neu: null })
|
||
})
|
||
|
||
it("zählt beim Betriebssystem die Pakete", () => {
|
||
expect(versionen("os", { kind: "os", count: 24 })).toEqual({ laeuft: "Ubuntu", neu: "24 Pakete" })
|
||
})
|
||
|
||
it("zeigt bei Hermes die Version und die Zahl der Änderungen", () => {
|
||
expect(versionen("hermes", { kind: "hermes", installed_version: "0.21.3", behind: 2523 }))
|
||
.toEqual({ laeuft: "v0.21.3", neu: "+2.523 Änderungen" })
|
||
expect(versionen("hermes", { kind: "hermes", behind: 0 })).toEqual({ laeuft: "–", neu: null })
|
||
})
|
||
})
|
||
|
||
describe("rolleVon", () => {
|
||
const m = (aliases: string[]): Modell => ({
|
||
name: "x", role: null, aliases, ctx: null, ttl: null, filename: "", quant: "", size_bytes: null, spec_active: false, parallel_slots: 1,
|
||
})
|
||
it("erkennt Hirn und Coder an den Aliasen", () => {
|
||
expect(rolleVon(m(["hermes", "fast"]))).toBe("hirn")
|
||
expect(rolleVon(m(["coder", "heavy"]))).toBe("coder")
|
||
expect(rolleVon(m(["debugger"]))).toBeNull()
|
||
})
|
||
})
|