selfupdate: report progress events; reports carry update stage, percent and log
CI / test (push) Successful in 1m11s
CI / test (push) Successful in 1m11s
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
ce4baacd47
commit
a61c79fa69
3 files changed
+121
-10
No files matched your search
@@ -152,3 +152,46 @@ func TestCheckReportsWithoutInstalling(t *testing.T) {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestReportsProgressThroughTheWholeUpdate(t *testing.T) {
|
||||
cfg, _, _ := setup(t, fakeGitea(t, "v0.2.0", false, false), "v0.1.0")
|
||||
var events []Event
|
||||
cfg.Progress = func(e Event) { events = append(events, e) }
|
||||
if _, err := CheckOnce(context.Background(), cfg); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
var stages []string
|
||||
last, lines := 0, ""
|
||||
for _, e := range events {
|
||||
if len(stages) == 0 || stages[len(stages)-1] != e.Stage {
|
||||
stages = append(stages, e.Stage)
|
||||
}
|
||||
if e.Pct >= 0 {
|
||||
if e.Pct < last {
|
||||
t.Errorf("progress went backwards: %d after %d (%+v)", e.Pct, last, e)
|
||||
}
|
||||
last = e.Pct
|
||||
}
|
||||
lines += e.Line + "\n"
|
||||
}
|
||||
if got := strings.Join(stages, ","); got != "checking,downloading,verifying,installing,restarting" {
|
||||
t.Errorf("stages: %s", got)
|
||||
}
|
||||
if last != 100 || !strings.Contains(lines, "v0.2.0 is available") || !strings.Contains(lines, "checksum matches") {
|
||||
t.Errorf("progress ended at %d with log:\n%s", last, lines)
|
||||
}
|
||||
}
|
||||
|
||||
func TestProgressReportsFailureAndNothingToDo(t *testing.T) {
|
||||
cfg, _, _ := setup(t, fakeGitea(t, "v0.2.0", false, true), "v0.1.0")
|
||||
var last Event
|
||||
cfg.Progress = func(e Event) { last = e }
|
||||
if _, err := CheckOnce(context.Background(), cfg); err == nil || last.Stage != "failed" || !strings.Contains(last.Line, "checksum") {
|
||||
t.Errorf("err=%v last=%+v", err, last)
|
||||
}
|
||||
cfg, _, _ = setup(t, fakeGitea(t, "v0.2.0", false, false), "v0.2.0")
|
||||
cfg.Progress = func(e Event) { last = e }
|
||||
if tag, err := CheckOnce(context.Background(), cfg); err != nil || tag != "" || last.Stage != "done" || last.Pct != 100 {
|
||||
t.Errorf("tag=%q err=%v last=%+v", tag, err, last)
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user