...

Source file src/github.com/spf13/pflag/ip_test.go

Documentation: github.com/spf13/pflag

     1  package pflag
     2  
     3  import (
     4  	"fmt"
     5  	"net"
     6  	"os"
     7  	"testing"
     8  )
     9  
    10  func setUpIP(ip *net.IP) *FlagSet {
    11  	f := NewFlagSet("test", ContinueOnError)
    12  	f.IPVar(ip, "address", net.ParseIP("0.0.0.0"), "IP Address")
    13  	return f
    14  }
    15  
    16  func TestIP(t *testing.T) {
    17  	testCases := []struct {
    18  		input    string
    19  		success  bool
    20  		expected string
    21  	}{
    22  		{"0.0.0.0", true, "0.0.0.0"},
    23  		{" 0.0.0.0 ", true, "0.0.0.0"},
    24  		{"1.2.3.4", true, "1.2.3.4"},
    25  		{"127.0.0.1", true, "127.0.0.1"},
    26  		{"255.255.255.255", true, "255.255.255.255"},
    27  		{"", false, ""},
    28  		{"0", false, ""},
    29  		{"localhost", false, ""},
    30  		{"0.0.0", false, ""},
    31  		{"0.0.0.", false, ""},
    32  		{"0.0.0.0.", false, ""},
    33  		{"0.0.0.256", false, ""},
    34  		{"0 . 0 . 0 . 0", false, ""},
    35  	}
    36  
    37  	devnull, _ := os.Open(os.DevNull)
    38  	os.Stderr = devnull
    39  	for i := range testCases {
    40  		var addr net.IP
    41  		f := setUpIP(&addr)
    42  
    43  		tc := &testCases[i]
    44  
    45  		arg := fmt.Sprintf("--address=%s", tc.input)
    46  		err := f.Parse([]string{arg})
    47  		if err != nil && tc.success == true {
    48  			t.Errorf("expected success, got %q", err)
    49  			continue
    50  		} else if err == nil && tc.success == false {
    51  			t.Errorf("expected failure")
    52  			continue
    53  		} else if tc.success {
    54  			ip, err := f.GetIP("address")
    55  			if err != nil {
    56  				t.Errorf("Got error trying to fetch the IP flag: %v", err)
    57  			}
    58  			if ip.String() != tc.expected {
    59  				t.Errorf("expected %q, got %q", tc.expected, ip.String())
    60  			}
    61  		}
    62  	}
    63  }
    64  

View as plain text