package tasks import ( "encoding/binary" "math" "os" "os/exec" "strings" "testing" ) func TestFloat32FromBytes(t *testing.T) { got := float32FromBytes([]byte{0x00, 0x00, 0x80, 0x3f}) // 1.0 little-endian if got != 1.0 { t.Fatalf("float32FromBytes() = %v, want 1.0", got) } } func TestMax(t *testing.T) { if got := max(1, 2); got != 2 { t.Fatalf("max() = %v, want 2", got) } } func TestExtractFrameNumber(t *testing.T) { if got := extractFrameNumber("render_0042.png"); got != 42 { t.Fatalf("extractFrameNumber() = %d, want 42", got) } } func TestCheckFFmpegSizeError(t *testing.T) { err := checkFFmpegSizeError("hardware does not support encoding at size ... constraints: width 128-4096 height 128-4096") if err == nil { t.Fatal("expected a size error") } } func TestDetectAlphaChannel_UsesExecSeam(t *testing.T) { orig := execCommand execCommand = fakeExecCommand defer func() { execCommand = orig }() if !detectAlphaChannel(&Context{}, "/tmp/frame.exr") { t.Fatal("expected alpha channel detection via mocked ffprobe output") } } func TestDetectHDR_UsesExecSeam(t *testing.T) { orig := execCommand execCommand = fakeExecCommand defer func() { execCommand = orig }() if !detectHDR(&Context{}, "/tmp/frame.exr") { t.Fatal("expected HDR detection via mocked ffmpeg sampling output") } } func fakeExecCommand(command string, args ...string) *exec.Cmd { cs := []string{"-test.run=TestExecHelperProcess", "--", command} cs = append(cs, args...) cmd := exec.Command(os.Args[0], cs...) cmd.Env = append(os.Environ(), "GO_WANT_HELPER_PROCESS=1") return cmd } func TestExecHelperProcess(t *testing.T) { if os.Getenv("GO_WANT_HELPER_PROCESS") != "1" { return } idx := 0 for i, a := range os.Args { if a == "--" { idx = i break } } if idx == 0 || idx+1 >= len(os.Args) { os.Exit(2) } cmdName := os.Args[idx+1] cmdArgs := os.Args[idx+2:] switch cmdName { case "ffprobe": if containsArg(cmdArgs, "stream=pix_fmt:stream=codec_name") { _, _ = os.Stdout.WriteString("pix_fmt=gbrapf32le\ncodec_name=exr\n") os.Exit(0) } _, _ = os.Stdout.WriteString("gbrpf32le\n") os.Exit(0) case "ffmpeg": if containsArg(cmdArgs, "signalstats") { _, _ = os.Stderr.WriteString("signalstats failed") os.Exit(1) } if containsArg(cmdArgs, "rawvideo") { buf := make([]byte, 12) binary.LittleEndian.PutUint32(buf[0:4], math.Float32bits(1.5)) binary.LittleEndian.PutUint32(buf[4:8], math.Float32bits(0.2)) binary.LittleEndian.PutUint32(buf[8:12], math.Float32bits(0.1)) _, _ = os.Stdout.Write(buf) os.Exit(0) } os.Exit(0) default: os.Exit(0) } } func containsArg(args []string, target string) bool { for _, a := range args { if strings.Contains(a, target) { return true } } return false }