diff --git a/network/net_linux.go b/network/net_linux.go index 8cbc8282..decbc022 100644 --- a/network/net_linux.go +++ b/network/net_linux.go @@ -59,13 +59,12 @@ func SetInterfaceChannel(iface string, channel int) error { return nil } -func GetSupportedFrequencies(iface string) ([]int, error) { +func processSupportedFrequencies(output string, err error) ([]int, error) { freqs := make([]int, 0) - out, err := core.Exec("iwlist", []string{iface, "freq"}) if err != nil { return freqs, err - } else if out != "" { - scanner := bufio.NewScanner(strings.NewReader(out)) + } else if output != "" { + scanner := bufio.NewScanner(strings.NewReader(output)) for scanner.Scan() { line := scanner.Text() matches := WiFiFreqParser.FindStringSubmatch(line) @@ -78,3 +77,8 @@ func GetSupportedFrequencies(iface string) ([]int, error) { } return freqs, nil } + +func GetSupportedFrequencies(iface string) ([]int, error) { + out, err := core.Exec("iwlist", []string{iface, "freq"}) + return processSupportedFrequencies(out, err) +} diff --git a/network/net_linux_test.go b/network/net_linux_test.go new file mode 100644 index 00000000..55713b0e --- /dev/null +++ b/network/net_linux_test.go @@ -0,0 +1,40 @@ +package network + +import ( + "errors" + "reflect" + "testing" +) + +func TestProcessSupportedFrequencies(t *testing.T) { + // Actually test processSupportedFrequencies; IO is lifted out. + cases := []struct { + Name string + InputString string + InputError error + ExpectedFreqs []int + ExpectedError bool + }{ + { + "Returns empty with an error", + "Shouldn't matter", + errors.New("iwlist must have failed"), + []int{}, + true, + }, + } + for _, test := range cases { + t.Run(test.Name, func(t *testing.T) { + freqs, err := processSupportedFrequencies(test.InputString, test.InputError) + if err != nil && !test.ExpectedError { + t.Errorf("unexpected error: %s", err) + } + if err == nil && test.ExpectedError { + t.Error("expected error, but got none") + } + if !test.ExpectedError && !reflect.DeepEqual(freqs, test.ExpectedFreqs) { + t.Errorf("got %v, want %v", freqs, test.ExpectedFreqs) + } + }) + } +}