Skip to content

Commit bc73511

Browse files
committed
Prep for converting unittest to pytest style tests
1 parent 3cc7c6d commit bc73511

File tree

1 file changed

+56
-57
lines changed

1 file changed

+56
-57
lines changed

tests/format/test_escapers.py

Lines changed: 56 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,14 @@
11
import operator
22
import unittest
33
from functools import reduce
4+
from typing import Sequence
45

56
from bs4 import BeautifulSoup
67
from markdown import markdown
78
from markupsafe import Markup, escape
89

910
from fluent_compiler.bundle import FluentBundle
11+
from fluent_compiler.escapers import IsEscaper
1012

1113
from ..utils import dedent_ftl
1214

@@ -17,22 +19,19 @@ class HtmlEscaper:
1719
output_type = Markup
1820
use_isolating = False
1921

20-
def __init__(self, test_case):
21-
self.test_case = test_case
22-
23-
def select(self, message_id: str, **hints):
22+
def select(self, message_id: str, **kwargs: object):
2423
return message_id.endswith("-html")
2524

26-
def mark_escaped(self, escaped):
27-
self.test_case.assertEqual(type(escaped), str)
25+
def mark_escaped(self, escaped: str) -> Markup:
26+
assert type(escaped) is str
2827
return Markup(escaped)
2928

30-
def escape(self, unescaped):
29+
def escape(self, unescaped: str) -> Markup:
3130
return escape(unescaped)
3231

33-
def join(self, parts):
32+
def join(self, parts: Sequence[Markup]) -> Markup:
3433
for p in parts:
35-
self.test_case.assertEqual(type(p), Markup)
34+
assert type(p) is Markup
3635
return Markup("").join(parts)
3736

3837

@@ -79,15 +78,13 @@ def __init__(self, text):
7978
class MarkdownEscaper:
8079
name = "MarkdownEscaper"
8180
output_type = Markdown
81+
use_isolating = False
8282

83-
def __init__(self, test_case):
84-
self.test_case = test_case
85-
86-
def select(self, message_id: str, **hints):
83+
def select(self, message_id: str, **kwargs: object):
8784
return message_id.endswith("-md")
8885

8986
def mark_escaped(self, escaped):
90-
self.test_case.assertEqual(type(escaped), str)
87+
assert type(escaped) is str
9188
return LiteralMarkdown(escaped)
9289

9390
def escape(self, unescaped):
@@ -98,13 +95,13 @@ def escape(self, unescaped):
9895

9996
def join(self, parts):
10097
for p in parts:
101-
self.test_case.assertTrue(isinstance(p, Markdown))
98+
assert isinstance(p, Markdown)
10299
return reduce(operator.add, parts, empty_markdown)
103100

104101

105102
class TestHtmlEscaping(unittest.TestCase):
106103
def setUp(self):
107-
escaper = HtmlEscaper(self)
104+
escaper: IsEscaper[Markup] = HtmlEscaper()
108105

109106
# A function that outputs '> ' that needs to be escaped. Part of the
110107
# point of this is to ensure that escaping is being done at the correct
@@ -113,7 +110,7 @@ def setUp(self):
113110
def QUOTE(arg):
114111
return "\n" + "\n".join(f"> {line}" for line in arg.split("\n"))
115112

116-
self.bundle = FluentBundle.from_string(
113+
self.html_escaping_bundle = FluentBundle.from_string(
117114
"en-US",
118115
dedent_ftl(
119116
"""
@@ -180,123 +177,125 @@ def assertTypeAndValueEqual(self, val1, val2):
180177
self.assertEqual(type(val1), type(val2))
181178

182179
def test_select_false(self):
183-
val, errs = self.bundle.format("not-html-message")
180+
val, errs = self.html_escaping_bundle.format("not-html-message")
184181
self.assertTypeAndValueEqual(val, "x < y")
185182

186183
def test_simple(self):
187-
val, errs = self.bundle.format("simple-html")
184+
val, errs = self.html_escaping_bundle.format("simple-html")
188185
self.assertTypeAndValueEqual(val, Markup("This is <b>great</b>."))
189186
self.assertEqual(errs, [])
190187

191188
def test_argument_is_escaped(self):
192-
val, errs = self.bundle.format("argument-html", {"arg": "Jack & Jill"})
189+
val, errs = self.html_escaping_bundle.format("argument-html", {"arg": "Jack & Jill"})
193190
self.assertTypeAndValueEqual(val, Markup("This <b>thing</b> is called Jack &amp; Jill."))
194191
self.assertEqual(errs, [])
195192

196193
def test_argument_already_escaped(self):
197-
val, errs = self.bundle.format("argument-html", {"arg": Markup("<b>Jack</b>")})
194+
val, errs = self.html_escaping_bundle.format("argument-html", {"arg": Markup("<b>Jack</b>")})
198195
self.assertTypeAndValueEqual(val, Markup("This <b>thing</b> is called <b>Jack</b>."))
199196
self.assertEqual(errs, [])
200197

201198
def test_included_html_term(self):
202-
val, errs = self.bundle.format("references-html-term-html")
199+
val, errs = self.html_escaping_bundle.format("references-html-term-html")
203200
self.assertTypeAndValueEqual(val, Markup("<b>Jack &amp; Jill</b> are <b>great!</b>"))
204201
self.assertEqual(errs, [])
205202

206203
def test_included_plain_term(self):
207-
val, errs = self.bundle.format("references-plain-term-html")
204+
val, errs = self.html_escaping_bundle.format("references-plain-term-html")
208205
self.assertTypeAndValueEqual(val, Markup("Jack &amp; Jill are <b>great!</b>"))
209206
self.assertEqual(errs, [])
210207

211208
def test_included_html_term_from_plain(self):
212-
val, errs = self.bundle.format("references-html-term-plain")
209+
val, errs = self.html_escaping_bundle.format("references-html-term-plain")
213210
self.assertTypeAndValueEqual(val, "\u2068-term-html\u2069 are great!")
214211
self.assertEqual(type(errs[0]), TypeError)
215212

216213
def test_compound_message(self):
217-
val, errs = self.bundle.format("compound-message-html", {"arg": "Jack & Jill"})
214+
val, errs = self.html_escaping_bundle.format("compound-message-html", {"arg": "Jack & Jill"})
218215
self.assertTypeAndValueEqual(
219216
val,
220217
Markup("A message about Jack &amp; Jill. " "This <b>thing</b> is called Jack &amp; Jill."),
221218
)
222219
self.assertEqual(errs, [])
223220

224221
def test_function(self):
225-
val, errs = self.bundle.format("function-html", {"text": "Jack & Jill"})
222+
val, errs = self.html_escaping_bundle.format("function-html", {"text": "Jack & Jill"})
226223
self.assertTypeAndValueEqual(val, Markup("You said: \n&gt; Jack &amp; Jill"))
227224
self.assertEqual(errs, [])
228225

229226
def test_plain_parent(self):
230-
val, errs = self.bundle.format("parent-plain")
227+
val, errs = self.html_escaping_bundle.format("parent-plain")
231228
self.assertTypeAndValueEqual(val, "Some stuff")
232229
self.assertEqual(errs, [])
233230

234231
def test_html_attribute(self):
235-
val, errs = self.bundle.format("parent-plain.attr-html")
232+
val, errs = self.html_escaping_bundle.format("parent-plain.attr-html")
236233
self.assertTypeAndValueEqual(val, Markup("Some <b>HTML</b> stuff"))
237234
self.assertEqual(errs, [])
238235

239236
def test_html_message_reference_from_plain(self):
240-
val, errs = self.bundle.format("references-html-message-plain")
237+
val, errs = self.html_escaping_bundle.format("references-html-message-plain")
241238
self.assertTypeAndValueEqual(val, "Plain. \u2068simple-html\u2069")
242239
self.assertEqual(len(errs), 1)
243240
self.assertEqual(type(errs[0]), TypeError)
244241

245242
# Message attr references
246243
def test_html_message_attr_reference_from_plain(self):
247-
val, errs = self.bundle.format("references-html-message-attr-plain")
244+
val, errs = self.html_escaping_bundle.format("references-html-message-attr-plain")
248245
self.assertTypeAndValueEqual(val, "Plain. \u2068parent-plain.attr-html\u2069")
249246
self.assertEqual(len(errs), 1)
250247
self.assertEqual(type(errs[0]), TypeError)
251248

252249
def test_html_message_attr_reference_from_html(self):
253-
val, errs = self.bundle.format("references-html-message-attr-html")
250+
val, errs = self.html_escaping_bundle.format("references-html-message-attr-html")
254251
self.assertTypeAndValueEqual(val, Markup("<b>HTML</b>. Some <b>HTML</b> stuff"))
255252
self.assertEqual(errs, [])
256253

257254
def test_plain_message_attr_reference_from_html(self):
258-
val, errs = self.bundle.format("references-plain-message-attr-html")
255+
val, errs = self.html_escaping_bundle.format("references-plain-message-attr-html")
259256
self.assertTypeAndValueEqual(val, Markup("<b>HTML</b>. This &amp; That"))
260257
self.assertEqual(errs, [])
261258

262259
# Term variant references
263260
def test_html_variant_from_plain(self):
264-
val, errs = self.bundle.format("references-html-variant-plain")
261+
val, errs = self.html_escaping_bundle.format("references-html-variant-plain")
265262
self.assertTypeAndValueEqual(val, "\u2068-brand-html\u2069 is cool")
266263
self.assertEqual(len(errs), 1)
267264
self.assertEqual(type(errs[0]), TypeError)
268265

269266
def test_html_variant_from_html(self):
270-
val, errs = self.bundle.format("references-html-variant-html")
267+
val, errs = self.html_escaping_bundle.format("references-html-variant-html")
271268
self.assertTypeAndValueEqual(val, Markup("CoolBrand<sup>2</sup> is cool"))
272269
self.assertEqual(errs, [])
273270

274271
def test_plain_variant_from_plain(self):
275-
val, errs = self.bundle.format("references-plain-variant-plain")
272+
val, errs = self.html_escaping_bundle.format("references-plain-variant-plain")
276273
self.assertTypeAndValueEqual(val, "\u2068A&B\u2069 is awesome")
277274
self.assertEqual(errs, [])
278275

279276
def test_plain_variant_from_html(self):
280-
val, errs = self.bundle.format("references-plain-variant-html")
277+
val, errs = self.html_escaping_bundle.format("references-plain-variant-html")
281278
self.assertTypeAndValueEqual(val, Markup("A&amp;B is awesome"))
282279
self.assertEqual(errs, [])
283280

284281
def test_use_isolating(self):
285-
val, errs = self.bundle.format("attribute-argument-html", {"url": "http://example.com", "place": "A Place"})
282+
val, errs = self.html_escaping_bundle.format(
283+
"attribute-argument-html", {"url": "http://example.com", "place": "A Place"}
284+
)
286285
self.assertTypeAndValueEqual(val, Markup('A <a href="http://example.com">link to A Place</a>'))
287286

288287

289288
class TestMarkdownEscaping(unittest.TestCase):
290289
maxDiff = None
291290

292291
def setUp(self):
293-
escaper = MarkdownEscaper(self)
292+
escaper: IsEscaper[Markdown] = MarkdownEscaper()
294293

295294
# This QUOTE function outputs Markdown that should not be removed.
296295
def QUOTE(arg):
297296
return Markdown("\n" + "\n".join(f"> {line}" for line in arg.split("\n")))
298297

299-
self.bundle = FluentBundle.from_string(
298+
self.markdown_escaping_bundle = FluentBundle.from_string(
300299
"en-US",
301300
dedent_ftl(
302301
"""
@@ -373,96 +372,96 @@ def test_strip_markdown(self):
373372
)
374373

375374
def test_select_false(self):
376-
val, errs = self.bundle.format("not-md-message")
375+
val, errs = self.markdown_escaping_bundle.format("not-md-message")
377376
self.assertEqual(val, "**some text**")
378377

379378
def test_simple(self):
380-
val, errs = self.bundle.format("simple-md")
379+
val, errs = self.markdown_escaping_bundle.format("simple-md")
381380
self.assertEqual(val, Markdown("This is **great**"))
382381
self.assertEqual(errs, [])
383382

384383
def test_argument_is_escaped(self):
385-
val, errs = self.bundle.format("argument-md", {"arg": "**Jack**"})
384+
val, errs = self.markdown_escaping_bundle.format("argument-md", {"arg": "**Jack**"})
386385
self.assertEqual(val, Markdown("This **thing** is called Jack."))
387386
self.assertEqual(errs, [])
388387

389388
def test_argument_already_escaped(self):
390-
val, errs = self.bundle.format("argument-md", {"arg": Markdown("**Jack**")})
389+
val, errs = self.markdown_escaping_bundle.format("argument-md", {"arg": Markdown("**Jack**")})
391390
self.assertEqual(val, Markdown("This **thing** is called **Jack**."))
392391
self.assertEqual(errs, [])
393392

394393
def test_included_md(self):
395-
val, errs = self.bundle.format("term-md-ref-md")
394+
val, errs = self.markdown_escaping_bundle.format("term-md-ref-md")
396395
self.assertEqual(val, Markdown("**Jack** & __Jill__ are **great!**"))
397396
self.assertEqual(errs, [])
398397

399398
def test_included_plain(self):
400-
val, errs = self.bundle.format("term-plain-ref-md")
399+
val, errs = self.markdown_escaping_bundle.format("term-plain-ref-md")
401400
self.assertEqual(val, Markdown("Jack & Jill are **great!**"))
402401
self.assertEqual(errs, [])
403402

404403
def test_compound_message(self):
405-
val, errs = self.bundle.format("compound-message-md", {"arg": "**Jack & Jill**"})
404+
val, errs = self.markdown_escaping_bundle.format("compound-message-md", {"arg": "**Jack & Jill**"})
406405
self.assertEqual(
407406
val,
408407
Markdown("A message about Jack & Jill. " "This **thing** is called Jack & Jill."),
409408
)
410409
self.assertEqual(errs, [])
411410

412411
def test_function(self):
413-
val, errs = self.bundle.format("function-md", {"text": "Jack & Jill"})
412+
val, errs = self.markdown_escaping_bundle.format("function-md", {"text": "Jack & Jill"})
414413
self.assertEqual(val, Markdown("You said: \n> Jack & Jill"))
415414
self.assertEqual(errs, [])
416415

417416
def test_plain_parent(self):
418-
val, errs = self.bundle.format("parent-plain")
417+
val, errs = self.markdown_escaping_bundle.format("parent-plain")
419418
self.assertEqual(val, "Some stuff")
420419
self.assertEqual(errs, [])
421420

422421
def test_md_attribute(self):
423-
val, errs = self.bundle.format("parent-plain.attr-md")
422+
val, errs = self.markdown_escaping_bundle.format("parent-plain.attr-md")
424423
self.assertEqual(val, Markdown("Some **Markdown** stuff"))
425424
self.assertEqual(errs, [])
426425

427426
def test_md_message_reference_from_plain(self):
428-
val, errs = self.bundle.format("references-md-message-plain")
427+
val, errs = self.markdown_escaping_bundle.format("references-md-message-plain")
429428
self.assertEqual(val, "Plain. simple-md")
430429
self.assertEqual(len(errs), 1)
431430
self.assertEqual(type(errs[0]), TypeError)
432431

433432
def test_md_attr_reference_from_plain(self):
434-
val, errs = self.bundle.format("references-md-attr-plain")
433+
val, errs = self.markdown_escaping_bundle.format("references-md-attr-plain")
435434
self.assertEqual(val, "Plain. parent-plain.attr-md")
436435
self.assertEqual(len(errs), 1)
437436
self.assertEqual(type(errs[0]), TypeError)
438437

439438
def test_md_reference_from_md(self):
440-
val, errs = self.bundle.format("references-md-attr-md")
439+
val, errs = self.markdown_escaping_bundle.format("references-md-attr-md")
441440
self.assertEqual(val, Markdown("**Markdown**. Some **Markdown** stuff"))
442441
self.assertEqual(errs, [])
443442

444443
def test_plain_reference_from_md(self):
445-
val, errs = self.bundle.format("references-plain-attr-md")
444+
val, errs = self.markdown_escaping_bundle.format("references-plain-attr-md")
446445
self.assertEqual(val, Markdown("**Markdown**. This and That"))
447446
self.assertEqual(errs, [])
448447

449448
def test_md_variant_from_plain(self):
450-
val, errs = self.bundle.format("references-md-variant-plain")
449+
val, errs = self.markdown_escaping_bundle.format("references-md-variant-plain")
451450
self.assertEqual(val, "-brand-md is cool")
452451
self.assertEqual(len(errs), 1)
453452
self.assertEqual(type(errs[0]), TypeError)
454453

455454
def test_md_variant_from_md(self):
456-
val, errs = self.bundle.format("references-md-variant-md")
455+
val, errs = self.markdown_escaping_bundle.format("references-md-variant-md")
457456
self.assertEqual(val, Markdown("CoolBrand **2** is cool"))
458457
self.assertEqual(errs, [])
459458

460459
def test_plain_variant_from_plain(self):
461-
val, errs = self.bundle.format("references-plain-variant-plain")
460+
val, errs = self.markdown_escaping_bundle.format("references-plain-variant-plain")
462461
self.assertEqual(val, "*A&B* is awesome")
463462
self.assertEqual(errs, [])
464463

465464
def test_plain_variant_from_md(self):
466-
val, errs = self.bundle.format("references-plain-variant-md")
465+
val, errs = self.markdown_escaping_bundle.format("references-plain-variant-md")
467466
self.assertEqual(val, Markdown("A&B is awesome"))
468467
self.assertEqual(errs, [])

0 commit comments

Comments
 (0)