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)
}
}