- Introduced unit tests for the main package to ensure compilation. - Added tests for the manager, including validation of upload sessions and handling of Blender binary paths. - Implemented tests for job token generation and validation, ensuring security and integrity. - Created tests for configuration management and database schema to verify functionality. - Added tests for logger and runner components to enhance overall test coverage and reliability.
121 lines
2.7 KiB
Go
121 lines
2.7 KiB
Go
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
|
|
}
|
|
|