@@ -917,9 +917,8 @@ def test_urlsplit_attributes(self):
917917
918918 # Verify an illegal port raises ValueError
919919 url = b"HTTP://WWW.PYTHON.ORG:65536/doc/#frag"
920- p = urllib .parse .urlsplit (url )
921920 with self .assertRaisesRegex (ValueError , "out of range" ):
922- p . port
921+ urllib . parse . urlsplit ( url )
923922
924923 def test_urlsplit_remove_unsafe_bytes (self ):
925924 # Remove ASCII tabs and newlines from input
@@ -1029,11 +1028,32 @@ def test_attributes_bad_port(self, bytes, parse, port):
10291028 self .skipTest ('non-ASCII bytes' )
10301029 netloc = str_encode (netloc )
10311030 url = str_encode (url )
1032- p = parse (url )
1033- self .assertEqual (p .netloc , netloc )
1031+ with self .assertRaises (ValueError ):
1032+ parse (url )
1033+ # The port is still checked when it is read from a result
1034+ # constructed directly.
1035+ if bytes :
1036+ p = urllib .parse .SplitResultBytes (b'http' , netloc , b'/' , b'' , b'' )
1037+ else :
1038+ p = urllib .parse .SplitResult ('http' , netloc , '/' , '' , '' )
10341039 with self .assertRaises (ValueError ):
10351040 p .port
10361041
1042+ @support .subTests ('parse' , (urllib .parse .urlsplit , urllib .parse .urlparse ))
1043+ @support .subTests ('netloc' , ("::1" , "a:b:c" , "user@::1" , "[::1]:80:80" ))
1044+ def test_attributes_bad_netloc_port (self , parse , netloc ):
1045+ """Check handling of a colon which does not delimit a valid port."""
1046+ with self .assertRaises (ValueError ):
1047+ parse ("http://" + netloc + "/" )
1048+
1049+ @support .subTests ('parse' , (urllib .parse .urlsplit , urllib .parse .urlparse ))
1050+ @support .subTests ('netloc' , ("www.example.net" , "www.example.net:" ,
1051+ "user:password@www.example.net" ,
1052+ "[::1]" , "[::1]:80" , "[::1]:" ))
1053+ def test_attributes_good_port (self , parse , netloc ):
1054+ """Check that valid netlocs are not rejected."""
1055+ self .assertEqual (parse ("http://" + netloc + "/" ).netloc , netloc )
1056+
10371057 @support .subTests ('bytes' , (False , True ))
10381058 @support .subTests ('parse' , (urllib .parse .urlsplit , urllib .parse .urlparse ))
10391059 @support .subTests ('scheme' , ("." , "+" , "-" , "0" , "http&" , "६http" ))
@@ -1670,13 +1690,11 @@ def test_splitting_bracketed_hosts(self):
16701690
16711691 def test_port_casting_failure_message (self ):
16721692 message = "Port could not be cast to integer value as 'oracle'"
1673- p1 = urllib .parse .urlparse ('http://Server=sde; Service=sde:oracle' )
16741693 with self .assertRaisesRegex (ValueError , message ):
1675- p1 . port
1694+ urllib . parse . urlparse ( 'http://Server=sde; Service=sde:oracle' )
16761695
1677- p2 = urllib .parse .urlsplit ('http://Server=sde; Service=sde:oracle' )
16781696 with self .assertRaisesRegex (ValueError , message ):
1679- p2 . port
1697+ urllib . parse . urlsplit ( 'http://Server=sde; Service=sde:oracle' )
16801698
16811699 def test_telurl_params (self ):
16821700 p1 = urllib .parse .urlparse ('tel:123-4;phone-context=+1-650-516' )
0 commit comments