repositories / bugabinga.net
bugabinga.net
personal infrastructure for bugabinga!
owned by admin
services/luci/internal/lifecycle/lifecycle_test.go
Rawpackage lifecycle
import (
"os"
"path/filepath"
"testing"
"bugabinga.net/luci/internal/history"
)
func TestRunLockRejectsDeleteWhileProcessing(t *testing.T) {
data := t.TempDir()
processing, err := TryLockRun(data, "42", true)
if err != nil {
t.Fatal(err)
}
defer processing.Close()
if _, err := TryLockRun(data, "42", false); err == nil {
t.Fatal("exclusive delete lock acquired while run lock is held")
}
}
func TestDeleteTombstonesAndRetriesLegacyCleanup(t *testing.T) {
data := t.TempDir()
events := []history.Event{{RunID: "42", ChildID: "legacy-001", Job: "check", Status: "success"}, {RunID: "42", ChildID: "run", Job: "push", Status: "success"}}
log := filepath.Join(data, "logs", "42-check.log.zst")
artifact := filepath.Join(data, "artifacts", "42", "001", "result")
for path := range map[string]bool{log: true, artifact: true} {
if err := os.MkdirAll(filepath.Dir(path), 0o755); err != nil {
t.Fatal(err)
}
if err := os.WriteFile(path, []byte("x"), 0o644); err != nil {
t.Fatal(err)
}
}
preview, err := PreviewRun(data, "42", events)
if err != nil || preview.Bytes != 2 || len(preview.Files) != 2 {
t.Fatalf("preview=%+v err=%v", preview, err)
}
if err := Delete(data, preview); err != nil {
t.Fatal(err)
}
if deleted, err := Deleted(data, "42"); err != nil || !deleted {
t.Fatalf("deleted=%v err=%v", deleted, err)
}
if _, err := os.Stat(log); !os.IsNotExist(err) {
t.Fatalf("log remains: %v", err)
}
if err := Delete(data, preview); err != nil {
t.Fatalf("retry: %v", err)
}
filtered, err := Filter(data, append([]history.Event(nil), events...))
if err != nil || len(filtered) != 0 {
t.Fatalf("filtered=%v err=%v", filtered, err)
}
}