check-dupes, clean-dupes, check-mdl, fix-mdl, convert, upscale, compile behind a single runner indirection, mirroring internal/depot's Run shape. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
64 lines
1.5 KiB
Go
64 lines
1.5 KiB
Go
package assets
|
|
|
|
import (
|
|
"os"
|
|
"path/filepath"
|
|
"testing"
|
|
)
|
|
|
|
func TestWalk(t *testing.T) {
|
|
root := t.TempDir()
|
|
must := func(rel string) {
|
|
p := filepath.Join(root, rel)
|
|
if err := os.MkdirAll(filepath.Dir(p), 0o755); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if err := os.WriteFile(p, []byte("x"), 0o644); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
}
|
|
must("a.MDL")
|
|
must("sub/b.mdl")
|
|
must("sub/c.txt")
|
|
|
|
exts := map[string]bool{".mdl": true}
|
|
got, err := walk([]string{root}, exts, true)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if len(got) != 2 {
|
|
t.Fatalf("recursive walk = %v, want 2 mdl files", got)
|
|
}
|
|
|
|
got, _ = walk([]string{root}, exts, false)
|
|
if len(got) != 1 || filepath.Base(got[0]) != "a.MDL" {
|
|
t.Fatalf("non-recursive walk = %v, want only a.MDL", got)
|
|
}
|
|
|
|
// A file argument that matches is included directly.
|
|
got, _ = walk([]string{filepath.Join(root, "sub", "b.mdl")}, exts, true)
|
|
if len(got) != 1 {
|
|
t.Fatalf("file arg walk = %v, want the file itself", got)
|
|
}
|
|
}
|
|
|
|
func TestLook(t *testing.T) {
|
|
dir := t.TempDir()
|
|
stub := filepath.Join(dir, "mytool")
|
|
if err := os.WriteFile(stub, []byte("#!/bin/sh\n"), 0o755); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
t.Setenv("PATH", dir)
|
|
|
|
if got := look("nope-not-here", "mytool"); got == "" {
|
|
t.Fatal("look should find mytool on PATH")
|
|
}
|
|
// Explicit existing path candidate.
|
|
if got := look(stub); got != stub {
|
|
t.Fatalf("look(%q) = %q, want the path itself", stub, got)
|
|
}
|
|
if got := look("definitely-absent-binary-xyz"); got != "" {
|
|
t.Fatalf("look = %q, want empty", got)
|
|
}
|
|
}
|