Files
privatae-bastion/client-go/agentsession_fifo_test.go
Privatae 4f8285ef18
ci / personal-data (push) Successful in 4s
ci / test (push) Successful in 3m36s
ci / fuzz (push) Successful in 3m35s
bastion 0.60.0
2026-11-02 00:10:58 +00:00

34 lines
780 B
Go

//go:build !windows
package main
import (
"os"
"path/filepath"
"syscall"
"testing"
"time"
)
// A pipe planted where .git/HEAD belongs must not stall the daemon: a plain
// open would wait for a writer for ever.
func TestAPipeInPlaceOfGitHEADDoesNotStall(t *testing.T) {
repo := t.TempDir()
if err := os.MkdirAll(filepath.Join(repo, ".git"), 0o700); err != nil {
t.Fatal(err)
}
if err := syscall.Mkfifo(filepath.Join(repo, ".git", "HEAD"), 0o600); err != nil {
t.Skip("cannot make a fifo here:", err)
}
done := make(chan string, 1)
go func() { done <- gitBranchOf(repo) }()
select {
case got := <-done:
if got != "" {
t.Errorf("a pipe read as branch %q", got)
}
case <-time.After(3 * time.Second):
t.Fatal("reading .git/HEAD stalled on a pipe")
}
}