reexec_test.go 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. package reexec // import "github.com/docker/docker/pkg/reexec"
  2. import (
  3. "os"
  4. "os/exec"
  5. "testing"
  6. "gotest.tools/v3/assert"
  7. )
  8. func init() {
  9. Register("reexec", func() {
  10. panic("Return Error")
  11. })
  12. Init()
  13. }
  14. func TestRegister(t *testing.T) {
  15. defer func() {
  16. if r := recover(); r != nil {
  17. assert.Equal(t, `reexec func already registered under name "reexec"`, r)
  18. }
  19. }()
  20. Register("reexec", func() {})
  21. }
  22. func TestCommand(t *testing.T) {
  23. cmd := Command("reexec")
  24. w, err := cmd.StdinPipe()
  25. assert.NilError(t, err, "Error on pipe creation: %v", err)
  26. defer w.Close()
  27. err = cmd.Start()
  28. assert.NilError(t, err, "Error on re-exec cmd: %v", err)
  29. err = cmd.Wait()
  30. assert.Error(t, err, "exit status 2")
  31. }
  32. func TestNaiveSelf(t *testing.T) {
  33. if os.Getenv("TEST_CHECK") == "1" {
  34. os.Exit(2)
  35. }
  36. cmd := exec.Command(naiveSelf(), "-test.run=TestNaiveSelf")
  37. cmd.Env = append(os.Environ(), "TEST_CHECK=1")
  38. err := cmd.Start()
  39. assert.NilError(t, err, "Unable to start command")
  40. err = cmd.Wait()
  41. assert.Error(t, err, "exit status 2")
  42. os.Args[0] = "mkdir"
  43. assert.Check(t, naiveSelf() != os.Args[0])
  44. }