Skip to content

Commit b8042eb

Browse files
committed
Adding new tests.
1 parent 61e57c7 commit b8042eb

File tree

3 files changed

+397
-7
lines changed

3 files changed

+397
-7
lines changed

tests/requirements.txt

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
1-
coverage >=5.1
2-
coverage_pyver_pragma >=0.0.1
3-
pytest >=6.0.0rc1
4-
pytest-cov >=2.8.1
5-
pytest-randomly >=3.3.1
6-
pytest-rerunfailures >=9.0
7-
pytz >=2019.1
1+
coverage>=5.1
2+
coverage_pyver_pragma>=0.0.1
3+
faker
4+
pytest>=6.0.0rc1
5+
pytest-cov>=2.8.1
6+
pytest-randomly>=3.3.1
7+
pytest-rerunfailures>=9.0
8+
pytz>=2019.1

tests/test_terminal.py

Lines changed: 169 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,169 @@
1+
# stdlib
2+
import json
3+
import os
4+
import sys
5+
6+
# 3rd party
7+
import pytest
8+
from faker import Faker
9+
10+
fake = Faker()
11+
# 3rd party
12+
from faker.providers import bank, company, internet, phone_number, python
13+
14+
fake.add_provider(internet)
15+
fake.add_provider(bank)
16+
fake.add_provider(company)
17+
fake.add_provider(phone_number)
18+
fake.add_provider(python)
19+
20+
# this package
21+
from domdf_python_tools.terminal import Echo, br, clear, interrupt, overtype
22+
23+
24+
def test_br(capsys):
25+
br()
26+
27+
captured = capsys.readouterr()
28+
stdout = captured.out.split("\n")
29+
assert stdout == ['', '']
30+
31+
br()
32+
print("foo")
33+
34+
captured = capsys.readouterr()
35+
stdout = captured.out.split("\n")
36+
assert stdout == ['', "foo", '']
37+
38+
print("foo")
39+
br()
40+
print("bar")
41+
42+
captured = capsys.readouterr()
43+
stdout = captured.out.split("\n")
44+
assert stdout == ["foo", '', "bar", '']
45+
46+
47+
@pytest.mark.skipif(condition=os.name != "nt", reason="Different test used for POSIX")
48+
def test_interrupt_windows(capsys):
49+
interrupt()
50+
51+
captured = capsys.readouterr()
52+
stdout = captured.out.split("\n")
53+
assert stdout == ["(Press Ctrl-C to quit at any time.)", '']
54+
55+
56+
@pytest.mark.skipif(condition=os.name == "nt", reason="Different test used for Windows")
57+
def test_interrupt_posix(capsys):
58+
interrupt()
59+
60+
captured = capsys.readouterr()
61+
stdout = captured.out.split("\n")
62+
assert stdout == ["(Press Ctrl-D to quit at any time.)", '']
63+
64+
65+
# @pytest.mark.skipif(condition=os.name != "nt", reason="Different test used for POSIX")
66+
# def test_clear_windows(capsys):
67+
# clear()
68+
#
69+
# captured = capsys.readouterr()
70+
# stdout = captured.out.split("\n")
71+
# assert stdout == ['(Press Ctrl-C to quit at any time.)', '']
72+
#
73+
74+
75+
@pytest.mark.skipif(condition=os.name == "nt", reason="Different test used for Windows")
76+
def test_clear_posix(capsys):
77+
clear()
78+
79+
captured = capsys.readouterr()
80+
stdout = captured.out.split("\n")
81+
assert stdout == ['\033c']
82+
83+
print("Hello World!")
84+
clear()
85+
86+
captured = capsys.readouterr()
87+
stdout = captured.out.split("\n")
88+
assert stdout == ["Hello World!", "\033c"]
89+
90+
91+
def test_overtype(capsys):
92+
print("Waiting...", end='')
93+
overtype("foo", "bar")
94+
sys.stdout.flush()
95+
96+
captured = capsys.readouterr()
97+
stdout = captured.out.split("\n")
98+
assert stdout == ['Waiting...\rfoo bar']
99+
100+
print("Waiting...", end='')
101+
overtype("foo", "bar", sep='')
102+
sys.stdout.flush()
103+
104+
captured = capsys.readouterr()
105+
stdout = captured.out.split("\n")
106+
assert stdout == ['Waiting...\rfoobar']
107+
108+
print("Waiting...", end='')
109+
overtype("foo", "bar", sep='-', end="\n")
110+
sys.stdout.flush()
111+
112+
captured = capsys.readouterr()
113+
stdout = captured.out.split("\n")
114+
assert stdout == ['Waiting...\rfoo-bar', '']
115+
116+
sys.stderr.write("Waiting...")
117+
overtype("foo", "bar", file=sys.stderr)
118+
sys.stdout.flush()
119+
120+
captured = capsys.readouterr()
121+
stderr = captured.err.split("\n")
122+
assert stderr == ['Waiting...\rfoo bar']
123+
124+
125+
def test_echo(capsys):
126+
with Echo():
127+
abc = "a variable"
128+
var = 1234
129+
130+
captured = capsys.readouterr()
131+
stdout = captured.out.split("\n")
132+
133+
data = {
134+
"abc": "a variable",
135+
"var": 1234,
136+
}
137+
dictionary = json.dumps(data).replace('"', "'")
138+
assert stdout == [f" {dictionary}", '']
139+
140+
# def test_echo_pprint(capsys):
141+
142+
# Lots of variables, which should be pretty printed
143+
with Echo():
144+
name = fake.name()
145+
address = fake.address()
146+
ip_address = fake.ipv4_private()
147+
iban = fake.iban()
148+
employer = fake.company()
149+
telephone = fake.phone_number()
150+
alive = fake.pybool()
151+
other = fake.pydict()
152+
153+
captured = capsys.readouterr()
154+
stdout = captured.out.split("\n")
155+
print(stdout)
156+
157+
assert stdout[0] == " {{'address': '{}',".format(address.replace("\n", "\\n"))
158+
assert stdout[1] == f" 'alive': {alive},"
159+
assert stdout[2] == f" 'employer': '{employer}',"
160+
assert stdout[3] == f" 'iban': '{iban}',"
161+
assert stdout[4] == f" 'ip_address': '{ip_address}',"
162+
assert stdout[5] == f" 'name': '{name}',"
163+
assert stdout[6].startswith(" 'other': {")
164+
assert stdout[6].endswith(",")
165+
for line in range(7, 13, 1):
166+
assert stdout[line].startswith(" '")
167+
assert stdout[line].endswith(",")
168+
assert stdout[-2] == f" 'telephone': '{telephone}'}}"
169+
assert stdout[-1] == ''

0 commit comments

Comments
 (0)