Skip to content

Commit 8938421

Browse files
committed
increase coverage
1 parent 4eda6bc commit 8938421

3 files changed

Lines changed: 25 additions & 51 deletions

File tree

tests/test_textile.py

Lines changed: 12 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -67,22 +67,18 @@ def test_autolinking():
6767
def test_sanitize():
6868
test = "a paragraph of benign text"
6969
result = "\t<p>a paragraph of benign text</p>"
70-
try:
71-
expect = textile.Textile().parse(test, sanitize=True)
72-
assert result == expect
73-
74-
test = """<p style="width: expression(alert('evil'));">a paragraph of evil text</p>"""
75-
result = '<p style="">a paragraph of evil text</p>'
76-
expect = textile.Textile().parse(test, sanitize=True)
77-
assert result == expect
78-
79-
test = """<p>a paragraph of benign text<br />and more text</p>"""
80-
result = '<p>a paragraph of benign text<br />\nand more text</p>'
81-
expect = textile.Textile(html_type='html5').parse(test, sanitize=True)
82-
assert result == expect
83-
except Exception as e:
84-
message = '{0}'.format(e)
85-
assert "html5lib not available" in message
70+
expect = textile.Textile().parse(test, sanitize=True)
71+
assert result == expect
72+
73+
test = """<p style="width: expression(alert('evil'));">a paragraph of evil text</p>"""
74+
result = '<p style="">a paragraph of evil text</p>'
75+
expect = textile.Textile().parse(test, sanitize=True)
76+
assert result == expect
77+
78+
test = """<p>a paragraph of benign text<br />and more text</p>"""
79+
result = '<p>a paragraph of benign text<br />\nand more text</p>'
80+
expect = textile.Textile(html_type='html5').parse(test, sanitize=True)
81+
assert result == expect
8682

8783
def test_imagesize():
8884
PIL = pytest.importorskip('PIL')

textile/regex_strings.py

Lines changed: 12 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -3,37 +3,18 @@
33

44
import six
55

6-
try:
7-
# Use regex module for matching uppercase characters if installed,
8-
# otherwise fall back to finding all the uppercase chars in a loop.
9-
import regex as re
10-
upper_re_s = r'\p{Lu}'
11-
regex_snippets = {
12-
'acr': r'\p{Lu}\p{Nd}',
13-
'abr': r'\p{Lu}',
14-
'nab': r'\p{Ll}',
15-
'wrd': r'(?:\p{L}|\p{M}|\p{N}|\p{Pc})',
16-
'cur': r'\p{Sc}',
17-
'digit': r'\p{N}',
18-
'space': r'(?:\p{Zs}|\v)',
19-
'char': r'(?:[^\p{Zs}\v])',
20-
}
21-
except ImportError:
22-
import re
23-
from sys import maxunicode
24-
upper_re_s = "".join(
25-
[six.unichr(c) for c in six.moves.range(maxunicode) if six.unichr(
26-
c).isupper()])
27-
regex_snippets = {
28-
'acr': r'{0}0-9'.format(upper_re_s),
29-
'abr': r'{0}'.format(upper_re_s),
30-
'nab': r'a-z',
31-
'wrd': r'\w',
32-
'cur': r'',
33-
'digit': r'\d',
34-
'space': r'(?:\s|\v)',
35-
'char': r'\S',
36-
}
6+
import regex as re
7+
upper_re_s = r'\p{Lu}'
8+
regex_snippets = {
9+
'acr': r'\p{Lu}\p{Nd}',
10+
'abr': r'\p{Lu}',
11+
'nab': r'\p{Ll}',
12+
'wrd': r'(?:\p{L}|\p{M}|\p{N}|\p{Pc})',
13+
'cur': r'\p{Sc}',
14+
'digit': r'\p{N}',
15+
'space': r'(?:\p{Zs}|\v)',
16+
'char': r'(?:[^\p{Zs}\v])',
17+
}
3718

3819
halign_re_s = r'(?:\<(?!>)|(?<!<)\>|\<\>|\=|[()]+(?! ))'
3920
valign_re_s = r'[\-^~]'

textile/tools/sanitizer.py

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,7 @@ def sanitize(string):
33
Ensure that the text does not contain any malicious HTML code which might
44
break the page.
55
"""
6-
try:
7-
from html5lib import parseFragment, serialize
8-
except ImportError:
9-
raise Exception("html5lib not available")
6+
from html5lib import parseFragment, serialize
107

118
parsed = parseFragment(string)
129
clean = serialize(parsed, sanitize=True, omit_optional_tags=False,

0 commit comments

Comments
 (0)