- Fix PID detection: Open lock file with O_RDWR for Windows LockFileEx - Fix script tests: Increase timeout to 2-5s for Windows process startup - Fix uptime test: Use math.Ceil with minimum 1 second to prevent flakiness - Fix socket cleanup: Add done channel to wait for Start() cleanup completion All 5 failing Windows tests should now pass.
38 lines
803 B
Go
38 lines
803 B
Go
package main
|
|
|
|
import (
|
|
"context"
|
|
"os/exec"
|
|
"path/filepath"
|
|
"runtime"
|
|
"testing"
|
|
"time"
|
|
|
|
"rsc.io/script"
|
|
"rsc.io/script/scripttest"
|
|
)
|
|
|
|
func TestScripts(t *testing.T) {
|
|
// Build the bd binary
|
|
exeName := "bd"
|
|
if runtime.GOOS == "windows" {
|
|
exeName += ".exe"
|
|
}
|
|
exe := filepath.Join(t.TempDir(), exeName)
|
|
if err := exec.Command("go", "build", "-o", exe, ".").Run(); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
// Create minimal engine with default commands plus bd
|
|
// Use longer timeout on Windows for slower process startup and I/O
|
|
timeout := 2 * time.Second
|
|
if runtime.GOOS == "windows" {
|
|
timeout = 5 * time.Second
|
|
}
|
|
engine := script.NewEngine()
|
|
engine.Cmds["bd"] = script.Program(exe, nil, timeout)
|
|
|
|
// Run all tests
|
|
scripttest.Test(t, context.Background(), engine, nil, "testdata/*.txt")
|
|
}
|