runtime_paths_test.go
1 package utils 2 3 import ( 4 "os" 5 "path/filepath" 6 "testing" 7 ) 8 9 func TestResolveRuntimeDirUsesEnvOverride(t *testing.T) { 10 overrideDir := t.TempDir() 11 t.Setenv(AgentScanDirEnv, overrideDir) 12 13 resolved, err := resolveRuntimeDir(AgentScanDirEnv, "/app/agent-scan", "agent-scan") 14 if err != nil { 15 t.Fatalf("resolveRuntimeDir returned error: %v", err) 16 } 17 18 expected, err := filepath.Abs(overrideDir) 19 if err != nil { 20 t.Fatalf("filepath.Abs returned error: %v", err) 21 } 22 if resolved != expected { 23 t.Fatalf("expected %q, got %q", expected, resolved) 24 } 25 } 26 27 func TestCollectRuntimeDirCandidatesSearchesParentDirectories(t *testing.T) { 28 rootDir := t.TempDir() 29 nestedDir := filepath.Join(rootDir, "cmd", "cli") 30 targetDir := filepath.Join(rootDir, "agent-scan") 31 32 t.Setenv(AgentScanDirEnv, "") 33 if err := os.MkdirAll(nestedDir, 0755); err != nil { 34 t.Fatalf("failed to create nested dir: %v", err) 35 } 36 if err := os.MkdirAll(targetDir, 0755); err != nil { 37 t.Fatalf("failed to create target dir: %v", err) 38 } 39 40 candidates := collectRuntimeDirCandidates(AgentScanDirEnv, "/app/agent-scan", "agent-scan", nestedDir) 41 expected, err := filepath.Abs(targetDir) 42 if err != nil { 43 t.Fatalf("filepath.Abs returned error: %v", err) 44 } 45 46 for _, candidate := range candidates { 47 if candidate == expected { 48 return 49 } 50 } 51 t.Fatalf("expected candidates to include %q, got %v", expected, candidates) 52 } 53 54 func TestResolveUvBinUsesEnvOverride(t *testing.T) { 55 overridePath := filepath.Join(t.TempDir(), "uv") 56 if err := os.WriteFile(overridePath, []byte("#!/bin/sh\n"), 0755); err != nil { 57 t.Fatalf("failed to create uv override: %v", err) 58 } 59 t.Setenv(UvBinEnv, overridePath) 60 61 resolved, err := ResolveUvBin() 62 if err != nil { 63 t.Fatalf("ResolveUvBin returned error: %v", err) 64 } 65 66 expected, err := filepath.Abs(overridePath) 67 if err != nil { 68 t.Fatalf("filepath.Abs returned error: %v", err) 69 } 70 if resolved != expected { 71 t.Fatalf("expected %q, got %q", expected, resolved) 72 } 73 }