Don't rely on empty lines

It could lead to creating multiple host only
interfaces

Signed-off-by: David Gageot <david@gageot.net>
This commit is contained in:
David Gageot 2015-11-20 13:41:18 +01:00
parent e812df723c
commit bbe59b8020
2 changed files with 25 additions and 2 deletions

View File

@ -82,8 +82,6 @@ func listHostOnlyNetworks(vbox VBoxManager) (map[string]*hostOnlyNetwork, error)
for s.Scan() { for s.Scan() {
line := s.Text() line := s.Text()
if line == "" { if line == "" {
m[n.NetworkName] = n
n = &hostOnlyNetwork{}
continue continue
} }
@ -123,6 +121,8 @@ func listHostOnlyNetworks(vbox VBoxManager) (map[string]*hostOnlyNetwork, error)
n.Status = val n.Status = val
case "VBoxNetworkName": case "VBoxNetworkName":
n.NetworkName = val n.NetworkName = val
m[val] = n
n = &hostOnlyNetwork{}
} }
} }

View File

@ -172,3 +172,26 @@ VBoxNetworkName: HostInterfaceNetworking-vboxnet1
assert.Equal(t, "Up", net.Status) assert.Equal(t, "Up", net.Status)
assert.Equal(t, "HostInterfaceNetworking-vboxnet1", net.NetworkName) 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)
}