7e03cebff4
Signed-off-by: Naveed Jamil <naveed.jamil@tenpearls.com>
53 lines
1.1 KiB
Go
53 lines
1.1 KiB
Go
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])
|
|
}
|