github.com/alloyci/alloy-runner@v1.0.1-0.20180222164613-925503ccafd6/helpers/docker/machine_command_test.go (about) 1 package docker_helpers 2 3 import ( 4 "io/ioutil" 5 "os" 6 "path" 7 "testing" 8 9 "github.com/docker/machine/commands/mcndirs" 10 "github.com/stretchr/testify/assert" 11 "github.com/stretchr/testify/require" 12 ) 13 14 func guardMachineOperationTest(t *testing.T, name string, callback func(t *testing.T)) { 15 tempHomeDir, err := ioutil.TempDir("", "docker-machine-list") 16 require.NoError(t, err) 17 18 machineDir := path.Join(tempHomeDir, ".docker", "machine") 19 err = os.MkdirAll(machineDir, 0755) 20 require.NoError(t, err) 21 22 mcndirs.BaseDir = machineDir 23 defer func() { 24 mcndirs.BaseDir = "" 25 os.RemoveAll(tempHomeDir) 26 }() 27 28 t.Run(name, callback) 29 } 30 31 func TestList(t *testing.T) { 32 guardMachineOperationTest(t, "no machines", func(t *testing.T) { 33 err := os.MkdirAll(mcndirs.GetMachineDir(), 0755) 34 require.NoError(t, err) 35 36 mc := NewMachineCommand() 37 hostNames, err := mc.List() 38 assert.Empty(t, hostNames) 39 assert.NoError(t, err) 40 }) 41 42 guardMachineOperationTest(t, "one machine", func(t *testing.T) { 43 err := os.MkdirAll(mcndirs.GetMachineDir(), 0755) 44 require.NoError(t, err) 45 46 machineDir := path.Join(mcndirs.GetMachineDir(), "machine-1") 47 err = os.MkdirAll(machineDir, 0755) 48 require.NoError(t, err) 49 50 mc := NewMachineCommand() 51 hostNames, err := mc.List() 52 assert.Contains(t, hostNames, "machine-1") 53 assert.Len(t, hostNames, 1) 54 assert.NoError(t, err) 55 }) 56 57 guardMachineOperationTest(t, "machines directory doesn't exists", func(t *testing.T) { 58 mc := NewMachineCommand() 59 hostNames, err := mc.List() 60 assert.Empty(t, hostNames) 61 assert.NoError(t, err) 62 }) 63 64 guardMachineOperationTest(t, "machines directory is invalid", func(t *testing.T) { 65 err := os.MkdirAll(mcndirs.GetBaseDir(), 0755) 66 require.NoError(t, err) 67 68 err = ioutil.WriteFile(mcndirs.GetMachineDir(), []byte{}, 0600) 69 require.NoError(t, err) 70 71 mc := NewMachineCommand() 72 hostNames, err := mc.List() 73 assert.Empty(t, hostNames) 74 assert.Error(t, err) 75 }) 76 }