better unit test for nested + fix coverage

Signed-off-by: Stephen L. <lrq3000@gmail.com>
This commit is contained in:
Stephen L 2015-12-02 19:16:08 +01:00
parent a18d7297f0
commit 6a9e080792
2 changed files with 105 additions and 6 deletions

View File

@ -111,7 +111,7 @@ def _environ_cols_linux(fp): # pragma: no cover
return int(get('COLUMNS', 1)) - 1
def _term_move_up():
def _term_move_up(): # pragma: no cover
if os.name == 'nt':
if colorama:
return '\x1b[A'

View File

@ -562,6 +562,39 @@ def test_smoothing():
def test_nested():
""" Test nested progress bars """
# Use regexp because the it rates can change
RE_nested = re.compile(r'((\x1b\[A|\r|\n)+((outer|inner) loop:\s+\d+%|\s{3,6})?)') # NOQA
RE_nested2 = re.compile(r'((\x1b\[A|\r|\n)+((outer0|inner1|inner2) loop:\s+\d+%|\s{3,6})?)') # NOQA
# Artifically test nested loop printing
# Without leave
our_file = StringIO()
t = tqdm(total=2, file=our_file, miniters=1, mininterval=0,
maxinterval=0, desc='inner loop', leave=False, nested=True)
t.update()
t.close()
our_file.seek(0)
out = our_file.read()
res = [m[0] for m in RE_nested.findall(out)]
assert res == ['\n\rinner loop: 0%',
'\rinner loop: 50%',
'\r ',
'\r\x1b[A']
# With leave
our_file = StringIO()
t = tqdm(total=2, file=our_file, miniters=1, mininterval=0,
maxinterval=0, desc='inner loop', leave=True, nested=True)
t.update()
t.close()
our_file.seek(0)
out = our_file.read()
res = [m[0] for m in RE_nested.findall(out)]
assert res == ['\n\rinner loop: 0%',
'\rinner loop: 50%',
'\r\x1b[A']
# Test simple nested, without leave
our_file = StringIO()
for i in trange(2, file=our_file, miniters=1, mininterval=0,
maxinterval=0, desc='outer loop', leave=True):
@ -570,21 +603,87 @@ def test_nested():
pass
our_file.seek(0)
out = our_file.read()
RE_nested = re.compile(r'((\r|\n)(outer|inner) loop:\s+\d+%)')
res = [m[0] for m in RE_nested.findall(out)]
assert res == ['\router loop: 0%',
'\ninner loop: 0%',
'\n\rinner loop: 0%',
'\rinner loop: 25%',
'\rinner loop: 50%',
'\rinner loop: 75%',
'\rinner loop: 100%',
'\router loop: 50%',
'\ninner loop: 0%',
'\r ',
'\r\x1b[A\router loop: 50%',
'\n\rinner loop: 0%',
'\rinner loop: 25%',
'\rinner loop: 50%',
'\rinner loop: 75%',
'\rinner loop: 100%',
'\router loop: 100%']
'\r ',
'\r\x1b[A\router loop: 100%',
'\n']
# Test nested with leave
our_file = StringIO()
for i in trange(2, file=our_file, miniters=1, mininterval=0,
maxinterval=0, desc='outer loop', leave=True):
for j in trange(4, file=our_file, miniters=1, mininterval=0,
maxinterval=0, desc='inner loop', leave=True,
nested=True):
pass
our_file.seek(0)
out = our_file.read()
res = [m[0] for m in RE_nested.findall(out)]
assert res == ['\router loop: 0%',
'\n\rinner loop: 0%',
'\rinner loop: 25%',
'\rinner loop: 50%',
'\rinner loop: 75%',
'\rinner loop: 100%',
'\r\x1b[A\router loop: 50%',
'\n\rinner loop: 0%',
'\rinner loop: 25%',
'\rinner loop: 50%',
'\rinner loop: 75%',
'\rinner loop: 100%',
'\r\x1b[A\router loop: 100%',
'\n']
# Test 2 nested loops with leave
our_file = StringIO()
for i in trange(2, file=our_file, miniters=1, mininterval=0,
maxinterval=0, desc='outer0 loop', leave=True):
for j in trange(2, file=our_file, miniters=1, mininterval=0,
maxinterval=0, desc='inner1 loop', leave=True,
nested=True):
for k in trange(2, file=our_file, miniters=1, mininterval=0,
maxinterval=0, desc='inner2 loop', leave=True,
nested=True):
pass
our_file.seek(0)
out = our_file.read()
res = [m[0] for m in RE_nested2.findall(out)]
assert res == ['\router0 loop: 0%',
'\n\rinner1 loop: 0%',
'\n\rinner2 loop: 0%',
'\rinner2 loop: 50%',
'\rinner2 loop: 100%',
'\r\x1b[A\rinner1 loop: 50%',
'\n\rinner2 loop: 0%',
'\rinner2 loop: 50%',
'\rinner2 loop: 100%',
'\r\x1b[A\rinner1 loop: 100%',
'\r\x1b[A\router0 loop: 50%',
'\n\rinner1 loop: 0%',
'\n\rinner2 loop: 0%',
'\rinner2 loop: 50%',
'\rinner2 loop: 100%',
'\r\x1b[A\rinner1 loop: 50%',
'\n\rinner2 loop: 0%',
'\rinner2 loop: 50%',
'\rinner2 loop: 100%',
'\r\x1b[A\rinner1 loop: 100%',
'\r\x1b[A\router0 loop: 100%',
'\n']
# TODO: test degradation on windows without colorama?
def test_no_gui():