All of mesh-build-go's buildstep Go module leaves mesh-catalog for modules/mesh-delivery-sdk: the step run, fetch and release and the regenerate-and-compare step as the package steprun, the CPU share as steprun/buildcpu, the conformance kit as steprun/conformance, the seat generator as seatgen with cmd/seatgen, and cmd/mesh-pack. The three build modules and the builder's and checker's tests import the SDK and keep no copy; the SDK requires nothing of mesh-catalog. Code the build modules share is the delivery domain's SDK, not one module's package. It carries the build-module round's two new files of that package (dropdetected.go 247c422f, storedbuilds.go 904b8aed). Builds: design 47 G §464, §680, §327, §420, §495 Claude-Session: https://claude.ai/code/session_01NcbgfGKaxw984XyAPfLm4h
26 lines
709 B
Go
26 lines
709 B
Go
//go:build unix
|
|
|
|
package steprun
|
|
|
|
import (
|
|
"path/filepath"
|
|
"strings"
|
|
"syscall"
|
|
"testing"
|
|
)
|
|
|
|
// 1479/AC3: anything but a file or a directory is refused, naming it. The rule of this repository is that no
|
|
// test makes a symlink, so the non-regular entry is a named pipe: Pack refuses a symlink on the same branch
|
|
// (filepath.Walk reports it by lstat as not regular).
|
|
func TestPackRefusesAnEntryThatIsNotAFile(t *testing.T) {
|
|
root := fixture(t)
|
|
pipe := filepath.Join(root, "a", "pipe")
|
|
if err := syscall.Mkfifo(pipe, 0o644); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
_, _, err := Pack(root)
|
|
if err == nil || !strings.Contains(err.Error(), pipe) {
|
|
t.Errorf("Pack = %v, want a refusal naming %s", err, pipe)
|
|
}
|
|
}
|