Files
mrleo1nidandClaude Opus 5.5 488abc2d34
CI / test (push) Successful in 1m29s
Агенты подхватывают изменения с сервера: каталог и самообновление
- сервер отдаёт агенту итоговый каталог (встроенный каталог сервера +
  переопределения клиента); если каталог не подходит версии агента —
  встроенный каталог агента и предупреждение
- самообновление перед бэкапом: версия сервера новее → скачивание с того же
  сервера (только /dl/...), проверка sha256 и запуска новой версии, подмена
  с откатом, перезапуск через exec; при ошибке бэкап идёт текущей версией
- галочка «Автообновление» у клиента (по умолчанию включена), версия агента
  в списке и карточке, отставшие подсвечены; версия сервера в шапке
- миграция существующей базы: колонки auto_update и agent_version
- backupctl backup --no-update

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-17 15:27:31 +03:00

26 lines
721 B
Go

package version
import "testing"
func TestShouldUpdate(t *testing.T) {
cases := []struct {
server, agent string
want bool
}{
{"v0.5.0", "v0.4.0", true},
{"v0.5.0", "v0.5.0", false},
{"v0.4.0", "v0.5.0", false}, // без отката
{"v0.10.0", "v0.9.3", true}, // числа, а не строки
{"v1.0.0", "dev", true},
{"v1.0.0", "main-abc123", true},
{"dev", "v0.1.0", false}, // dev-сервер не раздаёт обновления
{"main-abc", "dev", false},
{"v0.5.1-rc1", "v0.5.0", true},
}
for _, c := range cases {
if got := ShouldUpdate(c.server, c.agent); got != c.want {
t.Errorf("ShouldUpdate(%q, %q) = %v, want %v", c.server, c.agent, got, c.want)
}
}
}