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>
26 lines
721 B
Go
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)
|
|
}
|
|
}
|
|
}
|