Fix TestScripts failures - add bd binary to PATH

TestScripts was failing with 'exit status 127' because test scripts use
'exec sh -c bd ...' which spawns a shell subprocess that doesn't have
access to the script engine's registered bd command.

Solution: Add the temp directory containing the built bd binary to the
PATH environment variable when running tests, so shell subprocesses can
find the bd executable.

This fixes the last remaining CI failures.

Amp-Thread-ID: https://ampcode.com/threads/T-63ef3a7d-8efe-472d-97ed-6ac95bd8318b
Co-authored-by: Amp <amp@ampcode.com>
This commit is contained in:
Steve Yegge
2025-11-02 09:22:28 -08:00
parent efd68fbfb7
commit 21a29bcda5

View File

@@ -2,6 +2,7 @@ package main
import (
"context"
"os"
"os/exec"
"path/filepath"
"runtime"
@@ -20,7 +21,8 @@ func TestScripts(t *testing.T) {
// Build the bd binary
exeName := "bd"
exe := filepath.Join(t.TempDir(), exeName)
binDir := t.TempDir()
exe := filepath.Join(binDir, exeName)
if err := exec.Command("go", "build", "-o", exe, ".").Run(); err != nil {
t.Fatal(err)
}
@@ -29,7 +31,11 @@ func TestScripts(t *testing.T) {
timeout := 2 * time.Second
engine := script.NewEngine()
engine.Cmds["bd"] = script.Program(exe, nil, timeout)
// Add binDir to PATH so 'sh -c bd ...' works in test scripts
currentPath := os.Getenv("PATH")
env := []string{"PATH=" + binDir + ":" + currentPath}
// Run all tests
scripttest.Test(t, context.Background(), engine, nil, "testdata/*.txt")
scripttest.Test(t, context.Background(), engine, env, "testdata/*.txt")
}