Skip to content

Commit bdcca42

Browse files
committed
full tests for pretty
1 parent dfe23fd commit bdcca42

2 files changed

Lines changed: 61 additions & 22 deletions

File tree

devtools/prettier.py

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,16 +24,15 @@ def __init__(self,
2424
indent_step=4,
2525
indent_char=' ',
2626
repr_strings=False,
27-
simple_cuttoff=10,
27+
simple_cutoff=10,
2828
max_width=120,
2929
yield_from_generators=True):
30-
# TODO colours
3130
self._colorize = colorize
3231
self._indent_step = indent_step
3332
self._c = indent_char
3433
self._repr_strings = repr_strings
3534
self._repr_generators = not yield_from_generators
36-
self._simple_cuttoff = simple_cuttoff
35+
self._simple_cutoff = simple_cutoff
3736
self._max_width = max_width
3837
self._type_lookup = [
3938
(dict, self._format_dict),
@@ -56,7 +55,7 @@ def _format(self, value: Any, indent_current: int, indent_first: bool):
5655
self._stream.write(indent_current * self._c)
5756

5857
value_repr = repr(value)
59-
if len(value_repr) <= self._simple_cuttoff and not isinstance(value, collections.Generator):
58+
if len(value_repr) <= self._simple_cutoff and not isinstance(value, collections.Generator):
6059
self._stream.write(value_repr)
6160
else:
6261
indent_new = indent_current + self._indent_step

tests/test_prettier.py

Lines changed: 58 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
import numpy
44

5-
from devtools.prettier import PrettyFormat, pformat
5+
from devtools.prettier import PrettyFormat, pformat, pprint
66

77

88
def test_dict():
@@ -15,6 +15,13 @@ def test_dict():
1515
'}')
1616

1717

18+
def test_print(capsys):
19+
pprint({1: 2, 3: 4})
20+
stdout, stderr = capsys.readouterr()
21+
assert stdout.startswith('\x1b')
22+
assert stderr == ''
23+
24+
1825
def test_list():
1926
v = pformat(list(range(6)))
2027
assert v == (
@@ -29,18 +36,29 @@ def test_list():
2936

3037

3138
def test_set():
32-
v = pformat(set(range(6)))
39+
v = pformat(set(range(5)))
3340
assert v == (
3441
'{\n'
3542
' 0,\n'
3643
' 1,\n'
3744
' 2,\n'
3845
' 3,\n'
3946
' 4,\n'
40-
' 5,\n'
4147
'}')
4248

4349

50+
def test_tuple():
51+
v = pformat(tuple(range(5)))
52+
assert v == (
53+
'(\n'
54+
' 0,\n'
55+
' 1,\n'
56+
' 2,\n'
57+
' 3,\n'
58+
' 4,\n'
59+
')')
60+
61+
4462
def test_generator():
4563
v = pformat((i for i in range(3)))
4664
assert v == (
@@ -51,6 +69,12 @@ def test_generator():
5169
')')
5270

5371

72+
def test_generator_no_yield():
73+
pformat_ = PrettyFormat(yield_from_generators=False)
74+
v = pformat_((i for i in range(3)))
75+
assert v.startswith('<generator object test_generator_no_yield.<locals>.<genexpr> at ')
76+
77+
5478
def test_str():
5579
pformat_ = PrettyFormat(max_width=12)
5680
v = pformat_(string.ascii_lowercase + '\n' + string.digits)
@@ -61,25 +85,41 @@ def test_str():
6185
")")
6286

6387

88+
def test_str_repr():
89+
pformat_ = PrettyFormat(repr_strings=True)
90+
v = pformat_(string.ascii_lowercase + '\n' + string.digits)
91+
assert v == "'abcdefghijklmnopqrstuvwxyz\\n0123456789'"
92+
93+
6494
def test_bytes():
6595
pformat_ = PrettyFormat(max_width=12)
6696
v = pformat_(string.ascii_lowercase.encode())
67-
assert v == (
68-
"(\n"
69-
" b'abcde'\n"
70-
" b'fghij'\n"
71-
" b'klmno'\n"
72-
" b'pqrst'\n"
73-
" b'uvwxy'\n"
74-
" b'z'\n"
75-
")")
97+
assert v == """(
98+
b'abcde'
99+
b'fghij'
100+
b'klmno'
101+
b'pqrst'
102+
b'uvwxy'
103+
b'z'
104+
)"""
105+
106+
107+
def test_short_bytes():
108+
assert "b'abcdefghijklmnopqrstuvwxyz'" == pformat(string.ascii_lowercase.encode())
76109

77110

78111
def test_indent_numpy():
79112
v = pformat({'numpy test': numpy.array(range(20))})
80-
assert v == ("{\n"
81-
" 'numpy test': (\n"
82-
" array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,\n"
83-
" 17, 18, 19])\n"
84-
" ),\n"
85-
"}")
113+
assert v == """{
114+
'numpy test': (
115+
array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
116+
17, 18, 19])
117+
),
118+
}"""
119+
120+
121+
def test_indent_numpy_short():
122+
v = pformat({'numpy test': numpy.array(range(10))})
123+
assert v == """{
124+
'numpy test': array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]),
125+
}"""

0 commit comments

Comments
 (0)