ci-platforms / darwin arm64 smoke (push) Skipped
ci / build (amd64, linux, ubuntu-24.04) (push) Failing after 12m19s
ci-platforms / darwin amd64 smoke (push) Skipped
ci-platforms / windows amd64 smoke (push) Skipped
github-native / gitea-pending (push) Skipped
github-native / darwin amd64 native (push) Skipped
github-native / linux amd64 native (push) Skipped
github-native / windows amd64 native (push) Skipped
github-native / darwin arm64 native (push) Skipped
github-native / gitea-result (push) Skipped
ci / checks (push) Failing after 23m57s
ci / release (push) Skipped
GitHub / windows amd64 native GitHub-hosted native CI: failure
GitHub / darwin arm64 native GitHub-hosted native CI: failure
GitHub / darwin amd64 native GitHub-hosted native CI: failure
GitHub / linux amd64 native GitHub-hosted native CI: success
29 lines
618 B
Go
29 lines
618 B
Go
//go:build linux
|
|
|
|
package pipeline
|
|
|
|
import (
|
|
"errors"
|
|
"path/filepath"
|
|
"syscall"
|
|
"testing"
|
|
"time"
|
|
)
|
|
|
|
func TestReadExternalFileDoesNotBlockOnNamedPipe(t *testing.T) {
|
|
name := filepath.Join(t.TempDir(), "source.ase")
|
|
if err := syscall.Mkfifo(name, 0o600); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
result := make(chan error, 1)
|
|
go func() { _, err := ReadExternalFile(name, 1024); result <- err }()
|
|
select {
|
|
case err := <-result:
|
|
if !errors.Is(err, ErrExternalFileLimit) {
|
|
t.Fatalf("named pipe was not rejected: %v", err)
|
|
}
|
|
case <-time.After(time.Second):
|
|
t.Fatal("reading a named pipe blocked the caller")
|
|
}
|
|
}
|