mirror of https://github.com/docker/docs.git
Merge pull request #2522 from dgageot/simplify-ls-tests
Simplify ls command tests
This commit is contained in:
commit
be1d75f1c5
|
@ -293,7 +293,7 @@ func cmdCreateOuter(c CommandLine, api libmachine.API) error {
|
|||
}
|
||||
|
||||
if _, ok := driver.(*errdriver.Driver); ok {
|
||||
return errdriver.NotLoadable{driverName}
|
||||
return errdriver.NotLoadable{Name: driverName}
|
||||
}
|
||||
|
||||
// TODO: So much flag manipulation and voodoo here, it seems to be
|
||||
|
|
|
@ -160,9 +160,11 @@ func filterHosts(hosts []*host.Host, filters FilterOptions) []*host.Host {
|
|||
func getSwarmMasters(hosts []*host.Host) map[string]string {
|
||||
swarmMasters := make(map[string]string)
|
||||
for _, h := range hosts {
|
||||
swarmOptions := h.HostOptions.SwarmOptions
|
||||
if swarmOptions != nil && swarmOptions.Master {
|
||||
swarmMasters[swarmOptions.Discovery] = h.Name
|
||||
if h.HostOptions != nil {
|
||||
swarmOptions := h.HostOptions.SwarmOptions
|
||||
if swarmOptions != nil && swarmOptions.Master {
|
||||
swarmMasters[swarmOptions.Discovery] = h.Name
|
||||
}
|
||||
}
|
||||
}
|
||||
return swarmMasters
|
||||
|
@ -183,7 +185,7 @@ func matchesSwarmName(host *host.Host, swarmNames []string, swarmMasters map[str
|
|||
return true
|
||||
}
|
||||
for _, n := range swarmNames {
|
||||
if host.HostOptions.SwarmOptions != nil {
|
||||
if host.HostOptions != nil && host.HostOptions.SwarmOptions != nil {
|
||||
if strings.EqualFold(n, swarmMasters[host.HostOptions.SwarmOptions.Discovery]) {
|
||||
return true
|
||||
}
|
||||
|
|
|
@ -84,9 +84,8 @@ func TestFilterHostsReturnsSameGivenNoFilters(t *testing.T) {
|
|||
opts := FilterOptions{}
|
||||
hosts := []*host.Host{
|
||||
{
|
||||
Name: "testhost",
|
||||
DriverName: "fakedriver",
|
||||
HostOptions: &host.Options{},
|
||||
Name: "testhost",
|
||||
DriverName: "fakedriver",
|
||||
},
|
||||
}
|
||||
actual := filterHosts(hosts, opts)
|
||||
|
@ -126,9 +125,8 @@ func TestFilterHostsReturnsEmptyGivenNonMatchingFilters(t *testing.T) {
|
|||
}
|
||||
hosts := []*host.Host{
|
||||
{
|
||||
Name: "testhost",
|
||||
DriverName: "fakedriver",
|
||||
HostOptions: &host.Options{},
|
||||
Name: "testhost",
|
||||
DriverName: "fakedriver",
|
||||
},
|
||||
}
|
||||
assert.Empty(t, filterHosts(hosts, opts))
|
||||
|
@ -171,21 +169,18 @@ func TestFilterHostsByDriverName(t *testing.T) {
|
|||
}
|
||||
node1 :=
|
||||
&host.Host{
|
||||
Name: "node1",
|
||||
DriverName: "fakedriver",
|
||||
HostOptions: &host.Options{},
|
||||
Name: "node1",
|
||||
DriverName: "fakedriver",
|
||||
}
|
||||
node2 :=
|
||||
&host.Host{
|
||||
Name: "node2",
|
||||
DriverName: "virtualbox",
|
||||
HostOptions: &host.Options{},
|
||||
Name: "node2",
|
||||
DriverName: "virtualbox",
|
||||
}
|
||||
node3 :=
|
||||
&host.Host{
|
||||
Name: "node3",
|
||||
DriverName: "fakedriver",
|
||||
HostOptions: &host.Options{},
|
||||
Name: "node3",
|
||||
DriverName: "fakedriver",
|
||||
}
|
||||
hosts := []*host.Host{node1, node2, node3}
|
||||
expected := []*host.Host{node1, node3}
|
||||
|
@ -199,24 +194,21 @@ func TestFilterHostsByState(t *testing.T) {
|
|||
}
|
||||
node1 :=
|
||||
&host.Host{
|
||||
Name: "node1",
|
||||
DriverName: "fakedriver",
|
||||
HostOptions: &host.Options{},
|
||||
Driver: &fakedriver.Driver{MockState: state.Paused},
|
||||
Name: "node1",
|
||||
DriverName: "fakedriver",
|
||||
Driver: &fakedriver.Driver{MockState: state.Paused},
|
||||
}
|
||||
node2 :=
|
||||
&host.Host{
|
||||
Name: "node2",
|
||||
DriverName: "virtualbox",
|
||||
HostOptions: &host.Options{},
|
||||
Driver: &fakedriver.Driver{MockState: state.Stopped},
|
||||
Name: "node2",
|
||||
DriverName: "virtualbox",
|
||||
Driver: &fakedriver.Driver{MockState: state.Stopped},
|
||||
}
|
||||
node3 :=
|
||||
&host.Host{
|
||||
Name: "node3",
|
||||
DriverName: "fakedriver",
|
||||
HostOptions: &host.Options{},
|
||||
Driver: &fakedriver.Driver{MockState: state.Running},
|
||||
Name: "node3",
|
||||
DriverName: "fakedriver",
|
||||
Driver: &fakedriver.Driver{MockState: state.Running},
|
||||
}
|
||||
hosts := []*host.Host{node1, node2, node3}
|
||||
expected := []*host.Host{node1, node2}
|
||||
|
@ -230,31 +222,27 @@ func TestFilterHostsByName(t *testing.T) {
|
|||
}
|
||||
node1 :=
|
||||
&host.Host{
|
||||
Name: "fire",
|
||||
DriverName: "fakedriver",
|
||||
HostOptions: &host.Options{},
|
||||
Driver: &fakedriver.Driver{MockState: state.Paused, MockName: "fire"},
|
||||
Name: "fire",
|
||||
DriverName: "fakedriver",
|
||||
Driver: &fakedriver.Driver{MockState: state.Paused, MockName: "fire"},
|
||||
}
|
||||
node2 :=
|
||||
&host.Host{
|
||||
Name: "ice",
|
||||
DriverName: "adriver",
|
||||
HostOptions: &host.Options{},
|
||||
Driver: &fakedriver.Driver{MockState: state.Paused, MockName: "ice"},
|
||||
Name: "ice",
|
||||
DriverName: "adriver",
|
||||
Driver: &fakedriver.Driver{MockState: state.Paused, MockName: "ice"},
|
||||
}
|
||||
node3 :=
|
||||
&host.Host{
|
||||
Name: "air",
|
||||
DriverName: "nodriver",
|
||||
HostOptions: &host.Options{},
|
||||
Driver: &fakedriver.Driver{MockState: state.Paused, MockName: "air"},
|
||||
Name: "air",
|
||||
DriverName: "nodriver",
|
||||
Driver: &fakedriver.Driver{MockState: state.Paused, MockName: "air"},
|
||||
}
|
||||
node4 :=
|
||||
&host.Host{
|
||||
Name: "water",
|
||||
DriverName: "falsedriver",
|
||||
HostOptions: &host.Options{},
|
||||
Driver: &fakedriver.Driver{MockState: state.Paused, MockName: "water"},
|
||||
Name: "water",
|
||||
DriverName: "falsedriver",
|
||||
Driver: &fakedriver.Driver{MockState: state.Paused, MockName: "water"},
|
||||
}
|
||||
hosts := []*host.Host{node1, node2, node3, node4}
|
||||
expected := []*host.Host{node1, node2, node3}
|
||||
|
@ -269,21 +257,18 @@ func TestFilterHostsMultiFlags(t *testing.T) {
|
|||
}
|
||||
node1 :=
|
||||
&host.Host{
|
||||
Name: "node1",
|
||||
DriverName: "fakedriver",
|
||||
HostOptions: &host.Options{},
|
||||
Name: "node1",
|
||||
DriverName: "fakedriver",
|
||||
}
|
||||
node2 :=
|
||||
&host.Host{
|
||||
Name: "node2",
|
||||
DriverName: "virtualbox",
|
||||
HostOptions: &host.Options{},
|
||||
Name: "node2",
|
||||
DriverName: "virtualbox",
|
||||
}
|
||||
node3 :=
|
||||
&host.Host{
|
||||
Name: "node3",
|
||||
DriverName: "softlayer",
|
||||
HostOptions: &host.Options{},
|
||||
Name: "node3",
|
||||
DriverName: "softlayer",
|
||||
}
|
||||
hosts := []*host.Host{node1, node2, node3}
|
||||
expected := []*host.Host{node1, node2}
|
||||
|
@ -296,38 +281,34 @@ func TestFilterHostsDifferentFlagsProduceAND(t *testing.T) {
|
|||
DriverName: []string{"virtualbox"},
|
||||
State: []string{"Running"},
|
||||
}
|
||||
node1 :=
|
||||
&host.Host{
|
||||
Name: "node1",
|
||||
DriverName: "fakedriver",
|
||||
HostOptions: &host.Options{},
|
||||
Driver: &fakedriver.Driver{MockState: state.Paused},
|
||||
}
|
||||
node2 :=
|
||||
&host.Host{
|
||||
Name: "node2",
|
||||
DriverName: "virtualbox",
|
||||
HostOptions: &host.Options{},
|
||||
Driver: &fakedriver.Driver{MockState: state.Stopped},
|
||||
}
|
||||
node3 :=
|
||||
&host.Host{
|
||||
Name: "node3",
|
||||
DriverName: "fakedriver",
|
||||
HostOptions: &host.Options{},
|
||||
Driver: &fakedriver.Driver{MockState: state.Running},
|
||||
}
|
||||
hosts := []*host.Host{node1, node2, node3}
|
||||
expected := []*host.Host{}
|
||||
|
||||
assert.EqualValues(t, filterHosts(hosts, opts), expected)
|
||||
hosts := []*host.Host{
|
||||
{
|
||||
Name: "node1",
|
||||
DriverName: "fakedriver",
|
||||
Driver: &fakedriver.Driver{MockState: state.Paused},
|
||||
},
|
||||
{
|
||||
Name: "node2",
|
||||
DriverName: "virtualbox",
|
||||
Driver: &fakedriver.Driver{MockState: state.Stopped},
|
||||
},
|
||||
{
|
||||
Name: "node3",
|
||||
DriverName: "fakedriver",
|
||||
Driver: &fakedriver.Driver{MockState: state.Running},
|
||||
},
|
||||
}
|
||||
|
||||
assert.Empty(t, filterHosts(hosts, opts))
|
||||
}
|
||||
|
||||
func TestGetHostListItems(t *testing.T) {
|
||||
defer func(versioner mcndockerclient.DockerVersioner) { mcndockerclient.CurrentDockerVersioner = versioner }(mcndockerclient.CurrentDockerVersioner)
|
||||
mcndockerclient.CurrentDockerVersioner = &mcndockerclient.FakeDockerVersioner{Version: "1.9"}
|
||||
defer mcndockerclient.CleanupDockerVersioner()
|
||||
|
||||
// TODO: Ideally this would mockable via interface instead.
|
||||
defer func(host string) { os.Setenv("DOCKER_HOST", host) }(os.Getenv("DOCKER_HOST"))
|
||||
os.Setenv("DOCKER_HOST", "tcp://active.host.com:2376")
|
||||
|
||||
hosts := []*host.Host{
|
||||
|
@ -337,27 +318,18 @@ func TestGetHostListItems(t *testing.T) {
|
|||
MockState: state.Running,
|
||||
MockIP: "active.host.com",
|
||||
},
|
||||
HostOptions: &host.Options{
|
||||
SwarmOptions: &swarm.Options{},
|
||||
},
|
||||
},
|
||||
{
|
||||
Name: "bar100",
|
||||
Driver: &fakedriver.Driver{
|
||||
MockState: state.Stopped,
|
||||
},
|
||||
HostOptions: &host.Options{
|
||||
SwarmOptions: &swarm.Options{},
|
||||
},
|
||||
},
|
||||
{
|
||||
Name: "bar10",
|
||||
Driver: &fakedriver.Driver{
|
||||
MockState: state.Error,
|
||||
},
|
||||
HostOptions: &host.Options{
|
||||
SwarmOptions: &swarm.Options{},
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
|
@ -382,22 +354,13 @@ func TestGetHostListItems(t *testing.T) {
|
|||
assert.Equal(t, expected[i].version, items[i].DockerVersion)
|
||||
assert.Equal(t, expected[i].error, items[i].Error)
|
||||
}
|
||||
|
||||
os.Unsetenv("DOCKER_HOST")
|
||||
}
|
||||
|
||||
// issue #1908
|
||||
func TestGetHostListItemsEnvDockerHostUnset(t *testing.T) {
|
||||
defer func(versioner mcndockerclient.DockerVersioner) { mcndockerclient.CurrentDockerVersioner = versioner }(mcndockerclient.CurrentDockerVersioner)
|
||||
mcndockerclient.CurrentDockerVersioner = &mcndockerclient.FakeDockerVersioner{Version: "1.9"}
|
||||
defer mcndockerclient.CleanupDockerVersioner()
|
||||
|
||||
orgDockerHost := os.Getenv("DOCKER_HOST")
|
||||
defer func() {
|
||||
// revert DOCKER_HOST
|
||||
os.Setenv("DOCKER_HOST", orgDockerHost)
|
||||
}()
|
||||
|
||||
// unset DOCKER_HOST
|
||||
defer func(host string) { os.Setenv("DOCKER_HOST", host) }(os.Getenv("DOCKER_HOST"))
|
||||
os.Unsetenv("DOCKER_HOST")
|
||||
|
||||
hosts := []*host.Host{
|
||||
|
@ -407,52 +370,31 @@ func TestGetHostListItemsEnvDockerHostUnset(t *testing.T) {
|
|||
MockState: state.Running,
|
||||
MockIP: "120.0.0.1",
|
||||
},
|
||||
HostOptions: &host.Options{
|
||||
SwarmOptions: &swarm.Options{
|
||||
Master: false,
|
||||
Address: "",
|
||||
Discovery: "",
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
Name: "bar",
|
||||
Driver: &fakedriver.Driver{
|
||||
MockState: state.Stopped,
|
||||
},
|
||||
HostOptions: &host.Options{
|
||||
SwarmOptions: &swarm.Options{
|
||||
Master: false,
|
||||
Address: "",
|
||||
Discovery: "",
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
Name: "baz",
|
||||
Driver: &fakedriver.Driver{
|
||||
MockState: state.Saved,
|
||||
},
|
||||
HostOptions: &host.Options{
|
||||
SwarmOptions: &swarm.Options{
|
||||
Master: false,
|
||||
Address: "",
|
||||
Discovery: "",
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
expected := map[string]struct {
|
||||
state state.State
|
||||
active bool
|
||||
version string
|
||||
state state.State
|
||||
active bool
|
||||
}{
|
||||
"foo": {state.Running, false, "v1.9"},
|
||||
"bar": {state.Stopped, false, "Unknown"},
|
||||
"baz": {state.Saved, false, "Unknown"},
|
||||
"foo": {state.Running, false},
|
||||
"bar": {state.Stopped, false},
|
||||
"baz": {state.Saved, false},
|
||||
}
|
||||
|
||||
// TEST
|
||||
items := getHostListItems(hosts, map[string]error{})
|
||||
|
||||
for _, item := range items {
|
||||
|
@ -460,7 +402,6 @@ func TestGetHostListItemsEnvDockerHostUnset(t *testing.T) {
|
|||
|
||||
assert.Equal(t, expected.state, item.State)
|
||||
assert.Equal(t, expected.active, item.Active)
|
||||
assert.Equal(t, expected.version, item.DockerVersion)
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -485,12 +426,13 @@ func TestIsActive(t *testing.T) {
|
|||
|
||||
actual := isActive(c.state, "tcp://1.2.3.4:2376")
|
||||
|
||||
assert.Equal(t, c.expected, actual, "IsActive(%s, \"%s\") should return %v, but didn't", c.state, c.dockerHost, c.expected)
|
||||
assert.Equal(t, c.expected, actual)
|
||||
}
|
||||
}
|
||||
|
||||
func TestGetHostStateTimeout(t *testing.T) {
|
||||
originalTimeout := stateTimeoutDuration
|
||||
defer func(timeout time.Duration) { stateTimeoutDuration = timeout }(stateTimeoutDuration)
|
||||
stateTimeoutDuration = 1 * time.Millisecond
|
||||
|
||||
hosts := []*host.Host{
|
||||
{
|
||||
|
@ -501,15 +443,11 @@ func TestGetHostStateTimeout(t *testing.T) {
|
|||
},
|
||||
}
|
||||
|
||||
stateTimeoutDuration = 1 * time.Millisecond
|
||||
hostItems := getHostListItems(hosts, map[string]error{})
|
||||
hostItem := hostItems[0]
|
||||
hostItem := getHostListItems(hosts, nil)[0]
|
||||
|
||||
assert.Equal(t, "foo", hostItem.Name)
|
||||
assert.Equal(t, state.Timeout, hostItem.State)
|
||||
assert.Equal(t, "Driver", hostItem.DriverName)
|
||||
|
||||
stateTimeoutDuration = originalTimeout
|
||||
}
|
||||
|
||||
func TestGetHostStateError(t *testing.T) {
|
||||
|
@ -522,8 +460,7 @@ func TestGetHostStateError(t *testing.T) {
|
|||
},
|
||||
}
|
||||
|
||||
hostItems := getHostListItems(hosts, map[string]error{})
|
||||
hostItem := hostItems[0]
|
||||
hostItem := getHostListItems(hosts, nil)[0]
|
||||
|
||||
assert.Equal(t, "foo", hostItem.Name)
|
||||
assert.Equal(t, state.Error, hostItem.State)
|
||||
|
@ -533,9 +470,9 @@ func TestGetHostStateError(t *testing.T) {
|
|||
assert.Nil(t, hostItem.SwarmOptions)
|
||||
}
|
||||
|
||||
func TestGetSomeHostInEror(t *testing.T) {
|
||||
func TestGetSomeHostInError(t *testing.T) {
|
||||
defer func(versioner mcndockerclient.DockerVersioner) { mcndockerclient.CurrentDockerVersioner = versioner }(mcndockerclient.CurrentDockerVersioner)
|
||||
mcndockerclient.CurrentDockerVersioner = &mcndockerclient.FakeDockerVersioner{Version: "1.9"}
|
||||
defer mcndockerclient.CleanupDockerVersioner()
|
||||
|
||||
hosts := []*host.Host{
|
||||
{
|
||||
|
@ -553,7 +490,6 @@ func TestGetSomeHostInEror(t *testing.T) {
|
|||
assert.Equal(t, 2, len(hostItems))
|
||||
|
||||
hostItem := hostItems[0]
|
||||
|
||||
assert.Equal(t, "bar", hostItem.Name)
|
||||
assert.Equal(t, state.Error, hostItem.State)
|
||||
assert.Equal(t, "not found", hostItem.DriverName)
|
||||
|
@ -562,7 +498,6 @@ func TestGetSomeHostInEror(t *testing.T) {
|
|||
assert.Nil(t, hostItem.SwarmOptions)
|
||||
|
||||
hostItem = hostItems[1]
|
||||
|
||||
assert.Equal(t, "foo", hostItem.Name)
|
||||
assert.Equal(t, state.Running, hostItem.State)
|
||||
}
|
||||
|
|
|
@ -46,8 +46,8 @@ func TestCmdVersionNotFound(t *testing.T) {
|
|||
}
|
||||
|
||||
func TestCmdVersionOnHost(t *testing.T) {
|
||||
defer func(versioner mcndockerclient.DockerVersioner) { mcndockerclient.CurrentDockerVersioner = versioner }(mcndockerclient.CurrentDockerVersioner)
|
||||
mcndockerclient.CurrentDockerVersioner = &mcndockerclient.FakeDockerVersioner{Version: "1.9.1"}
|
||||
defer mcndockerclient.CleanupDockerVersioner()
|
||||
|
||||
commandLine := &commandstest.FakeCommandLine{
|
||||
CliArgs: []string{"machine"},
|
||||
|
@ -68,8 +68,8 @@ func TestCmdVersionOnHost(t *testing.T) {
|
|||
}
|
||||
|
||||
func TestCmdVersionFailure(t *testing.T) {
|
||||
defer func(versioner mcndockerclient.DockerVersioner) { mcndockerclient.CurrentDockerVersioner = versioner }(mcndockerclient.CurrentDockerVersioner)
|
||||
mcndockerclient.CurrentDockerVersioner = &mcndockerclient.FakeDockerVersioner{Err: errors.New("connection failure")}
|
||||
defer mcndockerclient.CleanupDockerVersioner()
|
||||
|
||||
commandLine := &commandstest.FakeCommandLine{
|
||||
CliArgs: []string{"machine"},
|
||||
|
|
|
@ -1,11 +1,5 @@
|
|||
package mcndockerclient
|
||||
|
||||
var originalDockerVersioner = CurrentDockerVersioner
|
||||
|
||||
func CleanupDockerVersioner() {
|
||||
CurrentDockerVersioner = originalDockerVersioner
|
||||
}
|
||||
|
||||
type FakeDockerVersioner struct {
|
||||
Version string
|
||||
Err error
|
||||
|
|
Loading…
Reference in New Issue