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  }