29
29
30
30
func TestParseAddr (t * testing.T ) {
31
31
var validIPs = []struct {
32
- in string
33
- ip Addr // output of ParseAddr()
34
- str string // output of String(). If "", use in.
32
+ in string
33
+ ip Addr // output of ParseAddr()
34
+ str string // output of String(). If "", use in.
35
+ wantErr string
35
36
}{
36
37
// Basic zero IPv4 address.
37
38
{
@@ -45,15 +46,18 @@ func TestParseAddr(t *testing.T) {
45
46
},
46
47
// IPv4 address in windows-style "print all the digits" form.
47
48
{
48
- in : "010.000.015.001" ,
49
- ip : MkAddr (Mk128 (0 , 0xffff0a000f01 ), Z4 ),
50
- str : "10.0.15.1" ,
49
+ in : "010.000.015.001" ,
50
+ wantErr : `ParseAddr("010.000.015.001"): IPv4 field has octet with leading zero` ,
51
51
},
52
52
// IPv4 address with a silly amount of leading zeros.
53
53
{
54
- in : "000001.00000002.00000003.000000004" ,
55
- ip : MkAddr (Mk128 (0 , 0xffff01020304 ), Z4 ),
56
- str : "1.2.3.4" ,
54
+ in : "000001.00000002.00000003.000000004" ,
55
+ wantErr : `ParseAddr("000001.00000002.00000003.000000004"): IPv4 field has octet with leading zero` ,
56
+ },
57
+ // 4-in-6 with octet with leading zero
58
+ {
59
+ in : "::ffff:1.2.03.4" ,
60
+ wantErr : `ParseAddr("::ffff:1.2.03.4"): ParseAddr("1.2.03.4"): IPv4 field has octet with leading zero (at "1.2.03.4")` ,
57
61
},
58
62
// Basic zero IPv6 address.
59
63
{
@@ -121,10 +125,16 @@ func TestParseAddr(t *testing.T) {
121
125
t .Run (test .in , func (t * testing.T ) {
122
126
got , err := ParseAddr (test .in )
123
127
if err != nil {
128
+ if err .Error () == test .wantErr {
129
+ return
130
+ }
124
131
t .Fatal (err )
125
132
}
133
+ if test .wantErr != "" {
134
+ t .Fatalf ("wanted error %q; got none" , test .wantErr )
135
+ }
126
136
if got != test .ip {
127
- t .Errorf ("ParseAddr(%q) got %#v, want %#v" , test . in , got , test .ip )
137
+ t .Errorf ("got %#v, want %#v" , got , test .ip )
128
138
}
129
139
130
140
// Check that ParseAddr is a pure function.
@@ -963,7 +973,7 @@ func TestIs4In6(t *testing.T) {
963
973
{mustIP ("::ffff:192.0.2.128" ), true , mustIP ("192.0.2.128" )},
964
974
{mustIP ("::ffff:192.0.2.128%eth0" ), true , mustIP ("192.0.2.128" )},
965
975
{mustIP ("::fffe:c000:0280" ), false , mustIP ("::fffe:c000:0280" )},
966
- {mustIP ("::ffff:127.001.002.003 " ), true , mustIP ("127.1.2.3" )},
976
+ {mustIP ("::ffff:127.1.2.3 " ), true , mustIP ("127.1.2.3" )},
967
977
{mustIP ("::ffff:7f01:0203" ), true , mustIP ("127.1.2.3" )},
968
978
{mustIP ("0:0:0:0:0000:ffff:127.1.2.3" ), true , mustIP ("127.1.2.3" )},
969
979
{mustIP ("0:0:0:0:000000:ffff:127.1.2.3" ), true , mustIP ("127.1.2.3" )},
0 commit comments