v0.9.4: add doctor diagnostics
This commit is contained in:
@@ -4506,6 +4506,53 @@ func TestCleanupErrors(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestDoctor(t *testing.T) {
|
||||
dir := t.TempDir()
|
||||
m := manifest.LoadJSONL(dir)
|
||||
if err := m.OpenAppend(); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
m.AddEntry(manifest.Entry{ID: "x1", Filename: "photo.jpg", Path: "photo.jpg", Size: 4, Cloud: "local", Exported: time.Now().Unix()})
|
||||
m.Close()
|
||||
out, stderr, rc := runWith([]string{"doctor", "--out", dir}, &mockBridge{})
|
||||
if rc != exitOK || !strings.Contains(stderr, "access granted") || !strings.Contains(out, "backup_dir\tok") || !strings.Contains(out, "entries\t1") || !strings.Contains(out, "problems\t0") {
|
||||
t.Fatalf("doctor rc=%d out=%q stderr=%q", rc, out, stderr)
|
||||
}
|
||||
out, stderr, rc = runWith([]string{"doctor", "--out", dir, "--json"}, &mockBridge{})
|
||||
if rc != exitOK || !strings.Contains(out, `"entries":1`) || !strings.Contains(out, `"problems":0`) {
|
||||
t.Fatalf("doctor json rc=%d out=%q stderr=%q", rc, out, stderr)
|
||||
}
|
||||
}
|
||||
|
||||
func TestDoctorProblems(t *testing.T) {
|
||||
dir := t.TempDir()
|
||||
appendFailure(dir, pendingAsset{asset: photos.Asset{ID: "x1", Filename: "photo.jpg"}}, fmt.Errorf("failed"))
|
||||
out, stderr, rc := runWith([]string{"doctor", "--out", dir}, &mockBridge{accessErr: fmt.Errorf("denied")})
|
||||
if rc != exitPartial || !strings.Contains(stderr, "denied") || !strings.Contains(out, "photos_access\tdenied") || !strings.Contains(out, "failures\t1") {
|
||||
t.Fatalf("doctor problems rc=%d out=%q stderr=%q", rc, out, stderr)
|
||||
}
|
||||
_, stderr, rc = runWith([]string{"doctor", "--out", dir, "--manifest", "bad"}, &mockBridge{})
|
||||
if rc != exitErr || !strings.Contains(stderr, "manifest") {
|
||||
t.Fatalf("doctor bad manifest rc=%d stderr=%q", rc, stderr)
|
||||
}
|
||||
out, stderr, rc = runWith([]string{"doctor", "--out", filepath.Join(dir, "missing")}, &mockBridge{})
|
||||
if rc != exitPartial || !strings.Contains(out, "backup_dir\tmissing") {
|
||||
t.Fatalf("doctor missing dir rc=%d out=%q stderr=%q", rc, out, stderr)
|
||||
}
|
||||
badDBDir := t.TempDir()
|
||||
if err := os.WriteFile(manifest.SQLitePath(badDBDir), []byte("not sqlite"), 0644); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
out, stderr, rc = runWith([]string{"doctor", "--out", badDBDir, "--manifest", "sqlite"}, &mockBridge{})
|
||||
if rc != exitPartial || !strings.Contains(out, "manifest\terror") {
|
||||
t.Fatalf("doctor manifest error rc=%d out=%q stderr=%q", rc, out, stderr)
|
||||
}
|
||||
stderrBuf := &bytes.Buffer{}
|
||||
if rc := cmdDoctor([]string{"--json"}, errWriter{}, stderrBuf, &mockBridge{}); rc != exitErr || !strings.Contains(stderrBuf.String(), "error:") {
|
||||
t.Fatalf("doctor json writer error rc=%d stderr=%q", rc, stderrBuf.String())
|
||||
}
|
||||
}
|
||||
|
||||
func TestVerifySidecarBranches(t *testing.T) {
|
||||
dir := t.TempDir()
|
||||
subdir := filepath.Join(dir, "sub")
|
||||
|
||||
Reference in New Issue
Block a user