import logging
import time
import pytest
import progressbar
def test_missing_format_values(caplog) -> None:
caplog.set_level(logging.CRITICAL, logger='progressbar.widgets')
with pytest.raises(KeyError):
p = progressbar.ProgressBar(
widgets=[progressbar.widgets.FormatLabel('%(x)s')],
)
p.update(5)
def test_max_smaller_than_min() -> None:
with pytest.raises(ValueError):
progressbar.ProgressBar(min_value=10, max_value=5)
def test_no_max_value() -> None:
"""Looping up to 5 without max_value? No problem"""
p = progressbar.ProgressBar()
p.start()
for i in range(5):
time.sleep(1)
p.update(i)
def test_correct_max_value() -> None:
"""Looping up to 5 when max_value is 10? No problem"""
p = progressbar.ProgressBar(max_value=10)
for i in range(5):
time.sleep(1)
p.update(i)
def test_minus_max_value() -> None:
"""negative max_value, shouldn't work"""
p = progressbar.ProgressBar(min_value=-2, max_value=-1)
with pytest.raises(ValueError):
p.update(-1)
def test_zero_max_value() -> None:
"""max_value of zero, it could happen"""
p = progressbar.ProgressBar(max_value=0)
p.update(0)
with pytest.raises(ValueError):
p.update(1)
def test_one_max_value() -> None:
"""max_value of one, another corner case"""
p = progressbar.ProgressBar(max_value=1)
p.update(0)
p.update(0)
p.update(1)
with pytest.raises(ValueError):
p.update(2)
def test_changing_max_value() -> None:
"""Changing max_value? No problem"""
p = progressbar.ProgressBar(max_value=10)(range(20), max_value=20)
for _i in p:
time.sleep(1)
def test_backwards() -> None:
"""progressbar going backwards"""
p = progressbar.ProgressBar(max_value=1)
p.update(1)
p.update(0)
def test_incorrect_max_value() -> None:
"""Looping up to 10 when max_value is 5? This is madness!"""
p = progressbar.ProgressBar(max_value=5)
for i in range(5):
time.sleep(1)
p.update(i)
with pytest.raises(ValueError):
for i in range(5, 10):
time.sleep(1)
p.update(i)
def test_deprecated_maxval() -> None:
with pytest.warns(DeprecationWarning):
progressbar.ProgressBar(maxval=5)
def test_deprecated_poll() -> None:
with pytest.warns(DeprecationWarning):
progressbar.ProgressBar(poll=5)
def test_deprecated_currval() -> None:
with pytest.warns(DeprecationWarning):
bar = progressbar.ProgressBar(max_value=5)
bar.update(2)
assert bar.currval == 2
def test_unexpected_update_keyword_arg() -> None:
p = progressbar.ProgressBar(max_value=10)
with pytest.raises(TypeError):
for i in range(10):
time.sleep(1)
p.update(i, foo=10)
def test_variable_not_str() -> None:
with pytest.raises(TypeError):
progressbar.Variable(1)
def test_variable_too_many_strs() -> None:
with pytest.raises(ValueError):
progressbar.Variable('too long')
def test_negative_value() -> None:
bar = progressbar.ProgressBar(max_value=10)
with pytest.raises(ValueError):
bar.update(value=-1)
def test_increment() -> None:
bar = progressbar.ProgressBar(max_value=10)
bar.increment()
del bar