@@ -533,6 +533,37 @@ def test_invalid_nonascii_closing_tag(self, tag, endtag):
533533 ("endtag" , tag ),
534534 ], collector = EventCollector (convert_charrefs = False , scripting = True ))
535535
536+ @support .subTests ('tag,converted' , [
537+ ('TıTLE' , 'tıtle' ),
538+ ('NOFRAMEſ' , 'noframeſ' ),
539+ ('NOſCRIPT' , 'noſcript' ),
540+ ('NOSCRıPT' , 'noscrıpt' ),
541+ ('SCRıPT' , 'scrıpt' ),
542+ ('ADDREß' , 'addreß' ),
543+ ('DATALIst' , 'datalist' ),
544+ ('Lı' , 'lı' ),
545+ ('LINK' , 'linK' ),
546+ ])
547+ def test_nonascii_tag (self , tag , converted ):
548+ # Starts with ASCII letter
549+ source = f"<{ tag } ><br></{ tag } >"
550+ self ._run_check (source , [
551+ ("starttag" , converted , []),
552+ ("starttag" , "br" , []),
553+ ("endtag" , converted ),
554+ ], collector = EventCollector (convert_charrefs = False , scripting = True ))
555+
556+ @support .subTests ('tag' , ['ſtyle' , 'ſtyle' , 'style' , 'ıframe' , 'ſcript' ,
557+ 'ı' , 'KBD' , 'ſMALL' , 'stRONG' ])
558+ def test_invalid_nonascii_tag (self , tag ):
559+ # Starts with non-ASCII letter
560+ source = f"<{ tag } ><br></{ tag } >"
561+ self ._run_check (source , [
562+ ("data" , f"<{ tag } >" ),
563+ ("starttag" , "br" , []),
564+ ("comment" , f"{ tag } " ),
565+ ], collector = EventCollector (convert_charrefs = False , scripting = True ))
566+
536567 @support .subTests ('tail,end' , [
537568 ('' , False ),
538569 ('<' , False ),
@@ -1068,7 +1099,7 @@ def test_attr_values(self):
10681099 "<a href=mailto:xyz@example.com>" ,
10691100 [("starttag" , "a" , [("href" , "mailto:xyz@example.com" )])])
10701101
1071- def test_attr_nonascii (self ):
1102+ def test_attr_value_nonascii (self ):
10721103 # see issue 7311
10731104 self ._run_check (
10741105 "<img src=/foo/bar.png alt=\u4e2d \u6587 >" ,
@@ -1083,6 +1114,16 @@ def test_attr_nonascii(self):
10831114 [("starttag" , "a" , [("title" , "\u30c6 \u30b9 \u30c8 " ),
10841115 ("href" , "\u30c6 \u30b9 \u30c8 .html" )])])
10851116
1117+ def test_attr_name_nonascii (self ):
1118+ self ._run_check (
1119+ '<BUTTON ACCEßKEY="s">' ,
1120+ [('starttag' , 'button' , [('acceßKey' , 's' )])])
1121+ self ._run_check (
1122+ '<TRACK KIND="chapters" ſRC="sampleChapters.vtt" SRCLANG="en" />' ,
1123+ [('startendtag' , 'track' , [('Kind' , 'chapters' ),
1124+ ('ſrc' , 'sampleChapters.vtt' ),
1125+ ('srclang' , 'en' )])])
1126+
10861127 def test_attr_entity_replacement (self ):
10871128 self ._run_check (
10881129 "<a b='&><"''>" ,
0 commit comments