41 lines
963 B
Go
41 lines
963 B
Go
package core
|
|
|
|
import (
|
|
"context"
|
|
"os"
|
|
"path/filepath"
|
|
"strings"
|
|
"testing"
|
|
)
|
|
|
|
func TestRunJobWritesLogFile(t *testing.T) {
|
|
logsDir := t.TempDir()
|
|
job := Job{
|
|
ID: 42,
|
|
Name: "Hello Test",
|
|
Command: echoCommand("hello from test"),
|
|
}
|
|
|
|
record := RunJob(context.Background(), &job, "Manual", logsDir)
|
|
if record.LogFile == "" {
|
|
t.Fatal("expected log file path")
|
|
}
|
|
if filepath.Dir(record.LogFile) != logsDir {
|
|
t.Fatalf("expected log in %q, got %q", logsDir, record.LogFile)
|
|
}
|
|
if !strings.Contains(filepath.Base(record.LogFile), "Hello_Test") {
|
|
t.Fatalf("expected job name in log filename, got %q", record.LogFile)
|
|
}
|
|
|
|
data, err := os.ReadFile(record.LogFile)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
content := string(data)
|
|
for _, want := range []string{"trigger: Manual", "job_name: Hello Test", "hello from test"} {
|
|
if !strings.Contains(content, want) {
|
|
t.Fatalf("expected log content to contain %q, got:\n%s", want, content)
|
|
}
|
|
}
|
|
}
|