Files
sow-tools/internal/assets/upscale_test.go
T
archvillainette 5ebef57160
build-binaries / build-binaries (push) Successful in 2m5s
test / test (push) Successful in 1m23s
assets builder tools (#39)
Reviewed-on: #39
Reviewed-by: xtul <mpiasecki720@protonmail.com>
2026-07-12 12:51:17 +00:00

70 lines
1.8 KiB
Go

package assets
import (
"bytes"
"os"
"path/filepath"
"testing"
)
func TestUpscalePNGUsesBackend(t *testing.T) {
// A fake backend binary on PATH so look() resolves it.
binDir := t.TempDir()
fake := filepath.Join(binDir, "upscayl-bin")
if err := os.WriteFile(fake, []byte("#!/bin/sh\n"), 0o755); err != nil {
t.Fatal(err)
}
t.Setenv("PATH", binDir)
// Stub runner: emulate `-i in -o out -s scale` by copying in->out.
orig := runner
defer func() { runner = orig }()
var gotScale string
runner = func(dir string, env []string, name string, args ...string) ([]byte, error) {
var in, out string
for i := 0; i < len(args)-1; i++ {
switch args[i] {
case "-i":
in = args[i+1]
case "-o":
out = args[i+1]
case "-s":
gotScale = args[i+1]
}
}
data, err := os.ReadFile(in)
if err != nil {
return nil, err
}
return nil, os.WriteFile(out, data, 0o644)
}
dir := t.TempDir()
src := filepath.Join(dir, "tex.png")
if err := os.WriteFile(src, []byte("pngdata"), 0o644); err != nil {
t.Fatal(err)
}
var stdout, stderr bytes.Buffer
if code := runUpscale([]string{"--scale", "2", dir}, &stdout, &stderr); code != exitOK {
t.Fatalf("upscale exit = %d\n%s", code, stderr.String())
}
if gotScale != "2" {
t.Fatalf("scale passed to backend = %q, want 2", gotScale)
}
if data, _ := os.ReadFile(src); string(data) != "pngdata" {
t.Fatalf("upscaled file content = %q, want the backend output", data)
}
}
func TestUpscaleNoBackendFailsClosed(t *testing.T) {
t.Setenv("PATH", t.TempDir()) // empty PATH: no backend resolvable
dir := t.TempDir()
if err := os.WriteFile(filepath.Join(dir, "tex.png"), []byte("x"), 0o644); err != nil {
t.Fatal(err)
}
var stdout, stderr bytes.Buffer
if code := runUpscale([]string{dir}, &stdout, &stderr); code != exitTool {
t.Fatalf("no-backend exit = %d, want %d", code, exitTool)
}
}