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) } }