Files
beads/cmd/bd/scripttest_test.go
Steve Yegge 21a29bcda5 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>
2025-11-02 09:22:28 -08:00

42 lines
979 B
Go

package main
import (
"context"
"os"
"os/exec"
"path/filepath"
"runtime"
"testing"
"time"
"rsc.io/script"
"rsc.io/script/scripttest"
)
func TestScripts(t *testing.T) {
// Skip on Windows - test scripts use sh -c which requires Unix shell
if runtime.GOOS == "windows" {
t.Skip("scripttest uses Unix shell commands (sh -c), skipping on Windows")
}
// Build the bd binary
exeName := "bd"
binDir := t.TempDir()
exe := filepath.Join(binDir, exeName)
if err := exec.Command("go", "build", "-o", exe, ".").Run(); err != nil {
t.Fatal(err)
}
// Create minimal engine with default commands plus bd
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, env, "testdata/*.txt")
}