github.com/ssdev-go/moby@v17.12.1-ce-rc2+incompatible/pkg/reexec/reexec_test.go (about)

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