diff options
| author | Ophestra Umiker <cat@ophivana.moe> | 2024-09-29 15:22:35 +0900 |
|---|---|---|
| committer | Ophestra Umiker <cat@ophivana.moe> | 2024-09-29 15:22:35 +0900 |
| commit | 7e7327ebf8ba6323e9ba3ba38b27ed87fc578568 (patch) | |
| tree | 5ba1723800df6fedcde02d854ea96b4e0798dcca /helper/stub_test.go | |
| parent | 3bf456da6593708823a967c4d88e4b0a816179dd (diff) | |
helper: export internal stub functions for cross-package testing
Signed-off-by: Ophestra Umiker <cat@ophivana.moe>
Diffstat (limited to 'helper/stub_test.go')
| -rw-r--r-- | helper/stub_test.go | 66 |
1 files changed, 1 insertions, 65 deletions
diff --git a/helper/stub_test.go b/helper/stub_test.go index 9f85ac65..5838c108 100644 --- a/helper/stub_test.go +++ b/helper/stub_test.go @@ -1,75 +1,11 @@ package helper_test import ( - "io" - "os" - "strconv" - "syscall" "testing" "git.ophivana.moe/cat/fortify/helper" ) func TestHelperChildStub(t *testing.T) { - // this test mocks the helper process - if os.Getenv(helper.FortifyHelper) != "1" { - return - } - // simulate args pipe behaviour - func() { - f := os.NewFile(3, "|0") - if f == nil { - panic("attempted to start helper without args pipe") - } - - if _, err := io.Copy(os.Stdout, f); err != nil { - panic("cannot read args: " + err.Error()) - } - }() - - var wait chan struct{} - - // simulate status pipe behaviour - if os.Getenv(helper.FortifyStatus) == "1" { - wait = make(chan struct{}) - go func() { - f := os.NewFile(4, "|1") - if f == nil { - panic("attempted to start with status reporting without status pipe") - } - - if _, err := f.Write([]byte{'x'}); err != nil { - panic("cannot write to status pipe: " + err.Error()) - } - - // wait for status pipe close - var epoll int - if fd, err := syscall.EpollCreate1(0); err != nil { - panic("cannot open epoll fd: " + err.Error()) - } else { - defer func() { - if err = syscall.Close(fd); err != nil { - panic("cannot close epoll fd: " + err.Error()) - } - }() - epoll = fd - } - if err := syscall.EpollCtl(epoll, syscall.EPOLL_CTL_ADD, int(f.Fd()), &syscall.EpollEvent{}); err != nil { - panic("cannot add status pipe to epoll: " + err.Error()) - } - events := make([]syscall.EpollEvent, 1) - if _, err := syscall.EpollWait(epoll, events, -1); err != nil { - panic("cannot poll status pipe: " + err.Error()) - } - if events[0].Events != syscall.EPOLLERR { - panic(strconv.Itoa(int(events[0].Events))) - - } - close(wait) - }() - } - - if wait != nil { - <-wait - } + helper.InternalChildStub() } |
