diff --git a/drivers/virtualbox/network.go b/drivers/virtualbox/network.go index 7aec22aba9..5b9dd44e64 100644 --- a/drivers/virtualbox/network.go +++ b/drivers/virtualbox/network.go @@ -82,8 +82,6 @@ func listHostOnlyNetworks(vbox VBoxManager) (map[string]*hostOnlyNetwork, error) for s.Scan() { line := s.Text() if line == "" { - m[n.NetworkName] = n - n = &hostOnlyNetwork{} continue } @@ -123,6 +121,8 @@ func listHostOnlyNetworks(vbox VBoxManager) (map[string]*hostOnlyNetwork, error) n.Status = val case "VBoxNetworkName": n.NetworkName = val + m[val] = n + n = &hostOnlyNetwork{} } } diff --git a/drivers/virtualbox/network_test.go b/drivers/virtualbox/network_test.go index 18312195ce..f805f74b29 100644 --- a/drivers/virtualbox/network_test.go +++ b/drivers/virtualbox/network_test.go @@ -172,3 +172,26 @@ VBoxNetworkName: HostInterfaceNetworking-vboxnet1 assert.Equal(t, "Up", net.Status) assert.Equal(t, "HostInterfaceNetworking-vboxnet1", net.NetworkName) } + +func TestListHostOnlyNetworksDontRelyOnEmptyLinesForParsing(t *testing.T) { + vbox := &VBoxManagerMock{ + args: "list hostonlyifs", + stdOut: `Name: vboxnet0 +VBoxNetworkName: HostInterfaceNetworking-vboxnet0 +Name: vboxnet1 +VBoxNetworkName: HostInterfaceNetworking-vboxnet1`, + } + + nets, err := listHostOnlyNetworks(vbox) + + assert.Equal(t, 2, len(nets)) + assert.NoError(t, err) + + net, present := nets["HostInterfaceNetworking-vboxnet1"] + assert.True(t, present) + assert.Equal(t, "vboxnet1", net.Name) + + net, present = nets["HostInterfaceNetworking-vboxnet0"] + assert.True(t, present) + assert.Equal(t, "vboxnet0", net.Name) +}