Kein Rueckschritt mehr als Update, Version-Kachel schlanker

aktualisierung.py pruefte mit `remote_version != eigene_version` - reine
Ungleichheit ohne Richtung. Lief die Instanz einer Veroeffentlichung voraus,
bot die Integration an, sich auf die aeltere Fassung zu aktualisieren. Vom
Eigentuemer gemeldet. ist_neuer() ist jetzt das Gegenstueck zu
versionOrdnung() in appVersion.ts, wo derselbe Fehler am 04.09. behoben wurde:
fehlende Stellen zaehlen als 0, kein int() mit Vorabschnitt, und was sich
nicht in eine Reihenfolge bringen laesst, gilt als verfuegbar statt
verschwiegen. Sechs neue Testfaelle, 79 Python-Tests gruen.

Dazu auf Vorgabe des Eigentuemers: die Zeile benennt jetzt selbst, was sie
zeigt - "Home-Assistant-Integration | 2026.9.5.19" statt "Installiert" mit dem
Gegenstand klein darunter. Damit entfallen die Abschnitts-Ueberschriften aus
dem vorigen Commit, sie sagten dasselbe doppelt.

Live in beiden Oberflaechen gegengeprueft: Gitea auf .18, Instanz auf .19 -
gemeldet wird gruenes "aktuell" (--ok) mit Pruefzeitpunkt statt eines
Rueckschritts. 0 Tracebacks.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
2026-09-05 11:33:56 +02:00
parent f693a41692
commit 5a65ec9590
8 changed files with 158 additions and 24 deletions
@@ -188,5 +188,41 @@ class AbgelehnteFaelle(unittest.TestCase):
self._unangetastet()
class VersionsOrdnung(unittest.TestCase):
"""Nur eine NACHWEISLICH neuere Fassung ist ein Update.
Bis zum 05.09.2026 stand in version_pruefen() `remote_version !=
eigene_version` - reine Ungleichheit ohne Richtung. Lief die Instanz einer
Veroeffentlichung voraus, bot die Integration an, sich auf die AELTERE
Fassung zu aktualisieren (vom Eigentuemer gemeldet: .16 wurde angeboten,
waehrend .18 lief)."""
def test_neuere_fassung_ist_ein_update(self):
self.assertIs(a.ist_neuer("2026.9.5.18", "2026.9.5.16"), True)
self.assertIs(a.ist_neuer("2026.10.1.1", "2026.9.5.99"), True)
self.assertIs(a.ist_neuer("2027.1.1.1", "2026.12.31.9"), True)
def test_aeltere_fassung_ist_keins(self):
self.assertIs(a.ist_neuer("2026.9.5.16", "2026.9.5.18"), False)
self.assertIs(a.ist_neuer("2026.9.4.26", "2026.9.5.1"), False)
def test_gleichstand_ist_keins(self):
self.assertIs(a.ist_neuer("2026.9.5.18", "2026.9.5.18"), False)
def test_fehlende_stellen_zaehlen_als_null(self):
self.assertIs(a.ist_neuer("2026.9.4", "2026.9.4.0"), False)
self.assertIs(a.ist_neuer("2026.9.4.1", "2026.9.4"), True)
def test_nicht_sortierbar_bleibt_offen(self):
# Formatwechsel: lieber "nicht entscheidbar" als eine erfundene
# Reihenfolge. "4b" darf nicht klaglos als 4 gelesen werden.
self.assertIsNone(a.ist_neuer("2026.9.4b", "2026.9.4.1"))
self.assertIsNone(a.ist_neuer("v2", "2026.9.5.1"))
self.assertIsNone(a.ist_neuer("", "2026.9.5.1"))
def test_zeichengleich_ist_gleich_auch_bei_fremdem_format(self):
self.assertIs(a.ist_neuer("beliebig", "beliebig"), False)
if __name__ == "__main__":
unittest.main()