|
@@ -0,0 +1,53 @@
|
|
|
+package reexec
|
|
|
+
|
|
|
+import (
|
|
|
+ "os"
|
|
|
+ "os/exec"
|
|
|
+ "testing"
|
|
|
+
|
|
|
+ "github.com/stretchr/testify/assert"
|
|
|
+ "github.com/stretchr/testify/require"
|
|
|
+)
|
|
|
+
|
|
|
+func init() {
|
|
|
+ Register("reexec", func() {
|
|
|
+ panic("Return Error")
|
|
|
+ })
|
|
|
+ Init()
|
|
|
+}
|
|
|
+
|
|
|
+func TestRegister(t *testing.T) {
|
|
|
+ defer func() {
|
|
|
+ if r := recover(); r != nil {
|
|
|
+ require.Equal(t, `reexec func already registered under name "reexec"`, r)
|
|
|
+ }
|
|
|
+ }()
|
|
|
+ Register("reexec", func() {})
|
|
|
+}
|
|
|
+
|
|
|
+func TestCommand(t *testing.T) {
|
|
|
+ cmd := Command("reexec")
|
|
|
+ w, err := cmd.StdinPipe()
|
|
|
+ require.NoError(t, err, "Error on pipe creation: %v", err)
|
|
|
+ defer w.Close()
|
|
|
+
|
|
|
+ err = cmd.Start()
|
|
|
+ require.NoError(t, err, "Error on re-exec cmd: %v", err)
|
|
|
+ err = cmd.Wait()
|
|
|
+ require.EqualError(t, err, "exit status 2")
|
|
|
+}
|
|
|
+
|
|
|
+func TestNaiveSelf(t *testing.T) {
|
|
|
+ if os.Getenv("TEST_CHECK") == "1" {
|
|
|
+ os.Exit(2)
|
|
|
+ }
|
|
|
+ cmd := exec.Command(naiveSelf(), "-test.run=TestNaiveSelf")
|
|
|
+ cmd.Env = append(os.Environ(), "TEST_CHECK=1")
|
|
|
+ err := cmd.Start()
|
|
|
+ require.NoError(t, err, "Unable to start command")
|
|
|
+ err = cmd.Wait()
|
|
|
+ require.EqualError(t, err, "exit status 2")
|
|
|
+
|
|
|
+ os.Args[0] = "mkdir"
|
|
|
+ assert.NotEqual(t, naiveSelf(), os.Args[0])
|
|
|
+}
|