@@ -1135,6 +1135,32 @@ def test_issue14072(self):
1135
1135
self .assertEqual (p2 .scheme , 'tel' )
1136
1136
self .assertEqual (p2 .path , '+31641044153' )
1137
1137
1138
+ def test_invalid_bracketed_hosts (self ):
1139
+ self .assertRaises (ValueError , urllib .parse .urlsplit , 'Scheme://user@[192.0.2.146]/Path?Query' )
1140
+ self .assertRaises (ValueError , urllib .parse .urlsplit , 'Scheme://user@[important.com:8000]/Path?Query' )
1141
+ self .assertRaises (ValueError , urllib .parse .urlsplit , 'Scheme://user@[v123r.IP]/Path?Query' )
1142
+ self .assertRaises (ValueError , urllib .parse .urlsplit , 'Scheme://user@[v12ae]/Path?Query' )
1143
+ self .assertRaises (ValueError , urllib .parse .urlsplit , 'Scheme://user@[v.IP]/Path?Query' )
1144
+ self .assertRaises (ValueError , urllib .parse .urlsplit , 'Scheme://user@[v123.]/Path?Query' )
1145
+ self .assertRaises (ValueError , urllib .parse .urlsplit , 'Scheme://user@[v]/Path?Query' )
1146
+ self .assertRaises (ValueError , urllib .parse .urlsplit , 'Scheme://user@[0439:23af::2309::fae7:1234]/Path?Query' )
1147
+ self .assertRaises (ValueError , urllib .parse .urlsplit , 'Scheme://user@[0439:23af:2309::fae7:1234:2342:438e:192.0.2.146]/Path?Query' )
1148
+ self .assertRaises (ValueError , urllib .parse .urlsplit , 'Scheme://user@]v6a.ip[/Path' )
1149
+
1150
+ def test_splitting_bracketed_hosts (self ):
1151
+ p1 = urllib .parse .urlsplit ('scheme://user@[v6a.ip]/path?query' )
1152
+ self .assertEqual (p1 .hostname , 'v6a.ip' )
1153
+ self .assertEqual (p1 .username , 'user' )
1154
+ self .assertEqual (p1 .path , '/path' )
1155
+ p2 = urllib .parse .urlsplit ('scheme://user@[0439:23af:2309::fae7%test]/path?query' )
1156
+ self .assertEqual (p2 .hostname , '0439:23af:2309::fae7%test' )
1157
+ self .assertEqual (p2 .username , 'user' )
1158
+ self .assertEqual (p2 .path , '/path' )
1159
+ p3 = urllib .parse .urlsplit ('scheme://user@[0439:23af:2309::fae7:1234:192.0.2.146%test]/path?query' )
1160
+ self .assertEqual (p3 .hostname , '0439:23af:2309::fae7:1234:192.0.2.146%test' )
1161
+ self .assertEqual (p3 .username , 'user' )
1162
+ self .assertEqual (p3 .path , '/path' )
1163
+
1138
1164
def test_port_casting_failure_message (self ):
1139
1165
message = "Port could not be cast to integer value as 'oracle'"
1140
1166
p1 = urllib .parse .urlparse ('http://Server=sde; Service=sde:oracle' )
0 commit comments