package db import ( "os" "path/filepath" "testing" "tangled.org/core/spindle/models" ) func TestLogRenamesWaitForALogDirThatIsMissingAtBoot(t *testing.T) { database := newTestDB(t) pipelineID := models.PipelineId("3mu2xwiorc2xl") if _, err := database.Exec(`insert into pipeline_log_renames (knot, pipeline_id, workflow) values (?, ?, ?)`, "knot.test", pipelineID, "ci.yml"); err != nil { t.Fatal(err) } logDir := filepath.Join(t.TempDir(), "logs") if err := database.MigratePipelineLogFiles(logDir); err != nil { t.Fatal(err) } if err := os.MkdirAll(logDir, 0o755); err != nil { t.Fatal(err) } oldPath := models.LegacyLogFilePath(logDir, "knot.test", pipelineID, "ci.yml") if err := os.WriteFile(oldPath, []byte("old"), 0o600); err != nil { t.Fatal(err) } if err := database.MigratePipelineLogFiles(logDir); err != nil { t.Fatal(err) } newPath := models.LogFilePath(logDir, models.WorkflowId{PipelineId: pipelineID, Name: "ci.yml"}) if data, err := os.ReadFile(newPath); err != nil || string(data) != "old" { t.Fatalf("log after the dir showed up = %q, %v, want it renamed", data, err) } }