@@ -297,3 +297,43 @@ def test_full_url(self):
297
297
r"http://www\.djangoproject\.localhost:8000"
298
298
r"/m/blog/images/2005/07/test(_\w+)?\.png" ,
299
299
)
300
+
301
+ def test_alt_text_html_escape (self ):
302
+ testdata = [
303
+ (ContentFormat .HTML , 'te"st' , '<img src="." alt="te"st">' ),
304
+ (ContentFormat .HTML , "te<st>" , '<img src="." alt="te<st>">' ),
305
+ (ContentFormat .MARKDOWN , 'te"st' , '<img src="." alt="te"st">' ),
306
+ (ContentFormat .MARKDOWN , "te[st]" , '<img src="." alt="te[st]">' ),
307
+ (ContentFormat .MARKDOWN , "te{st}" , '<img src="." alt="te{st}">' ),
308
+ (ContentFormat .MARKDOWN , "te<st>" , '<img src="." alt="te<st>">' ),
309
+ (ContentFormat .MARKDOWN , "test*" , '<img src="." alt="test*">' ),
310
+ (ContentFormat .MARKDOWN , "test_" , '<img src="." alt="test_">' ),
311
+ (ContentFormat .MARKDOWN , "test`" , '<img src="." alt="test`">' ),
312
+ (ContentFormat .MARKDOWN , "test+" , '<img src="." alt="test+">' ),
313
+ (ContentFormat .MARKDOWN , "test-" , '<img src="." alt="test-">' ),
314
+ (ContentFormat .MARKDOWN , "test." , '<img src="." alt="test.">' ),
315
+ (ContentFormat .MARKDOWN , "test!" , '<img src="." alt="test!">' ),
316
+ (ContentFormat .MARKDOWN , "te\n st" , '<img src="." alt="te\n st">' ),
317
+ (ContentFormat .REST , 'te"st' , '<img src="." alt="te"st">' ),
318
+ (ContentFormat .REST , "te[st]" , '<img src="." alt="te[st]">' ),
319
+ (ContentFormat .REST , "te{st}" , '<img src="." alt="te{st}">' ),
320
+ (ContentFormat .REST , "te<st>" , '<img src="." alt="te<st>">' ),
321
+ (ContentFormat .REST , "te:st" , '<img src="." alt="te:st">' ),
322
+ (ContentFormat .REST , "test*" , '<img src="." alt="test*">' ),
323
+ (ContentFormat .REST , "test_" , '<img src="." alt="test_">' ),
324
+ (ContentFormat .REST , "test`" , '<img src="." alt="test`">' ),
325
+ (ContentFormat .REST , "test+" , '<img src="." alt="test+">' ),
326
+ (ContentFormat .REST , "test-" , '<img src="." alt="test-">' ),
327
+ (ContentFormat .REST , "test." , '<img src="." alt="test.">' ),
328
+ (ContentFormat .REST , "test!" , '<img src="." alt="test!">' ),
329
+ ]
330
+ for cf , alt_text , expected in testdata :
331
+ # RST doesn't like an empty src, so we use . instead
332
+ img_tag = cf .img (url = "." , alt_text = alt_text )
333
+ if cf is ContentFormat .MARKDOWN :
334
+ expected = f"<p>{ expected } </p>"
335
+ with self .subTest (cf = cf , alt_text = alt_text ):
336
+ self .assertHTMLEqual (
337
+ ContentFormat .to_html (cf , img_tag ),
338
+ expected ,
339
+ )
0 commit comments