mirror of https://github.com/tqdm/tqdm.git
better unit test for nested + fix coverage
Signed-off-by: Stephen L. <lrq3000@gmail.com>
This commit is contained in:
parent
a18d7297f0
commit
6a9e080792
|
@ -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'
|
||||
|
|
|
@ -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():
|
||||
|
|
Loading…
Reference in New Issue