41 lines
960 B
Go
41 lines
960 B
Go
package golang
|
|
|
|
import (
|
|
"os/exec"
|
|
"testing"
|
|
"time"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
)
|
|
|
|
func TestNewParent(t *testing.T) {
|
|
t.Run("socket argument in command", func(t *testing.T) {
|
|
cmd := exec.Command("/bin/sh", ipcSocketArg, "/tmp/kek")
|
|
_, err := NewParent(cmd)
|
|
assert.Error(t, err)
|
|
})
|
|
|
|
t.Run("nonexistent binary", func(t *testing.T) {
|
|
cmd := exec.Command("/nonexistent/binary")
|
|
p, err := NewParent(cmd)
|
|
assert.NoError(t, err)
|
|
assert.Error(t, p.Start())
|
|
})
|
|
|
|
t.Run("connection timeout", func(t *testing.T) {
|
|
cmd := exec.Command("../testdata/sleep15.sh")
|
|
p, err := NewParent(cmd)
|
|
assert.NoError(t, err)
|
|
assert.Error(t, p.Start())
|
|
})
|
|
|
|
t.Run("child finished before accepting connection", func(t *testing.T) {
|
|
cmd := exec.Command("../testdata/sleep3.sh")
|
|
p, err := NewParent(cmd)
|
|
assert.NoError(t, err)
|
|
start := time.Now()
|
|
assert.Error(t, p.Start())
|
|
assert.WithinDuration(t, time.Now(), start, time.Second*4)
|
|
})
|
|
}
|