Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def check_animate_output(
capsys, test_string, frame_strings, frame_period, frames_to_test
):
expected_string = f"{HIDE_CURSOR}" + "".join(frame_strings)
chars_to_test = 1 + len("".join(frame_strings[:frames_to_test]))
with pipx.animate.animate(test_string, do_animation=True):
time.sleep(frame_period * (frames_to_test - 1) + 0.2)
captured = capsys.readouterr()
assert captured.err[:chars_to_test] == expected_string[:chars_to_test]
def test_line_lengths_no_emoji(capsys, monkeypatch):
# emoji_support and stderr_is_tty is set only at import animate.py
# since we are already after that, we must override both here
monkeypatch.setattr(pipx.animate, "stderr_is_tty", True)
monkeypatch.setattr(pipx.animate, "emoji_support", False)
frames_to_test = 2
# 40-char test_string counts columns e.g.: "0204060810 ... 363840"
test_string = "".join([f"{x:02}" for x in range(2, 41, 2)])
columns_to_test = [43, 44, 45]
expected_message = [f"{test_string:.{43-4}}", f"{test_string}", f"{test_string}"]
for i, columns in enumerate(columns_to_test):
monkeypatch.setenv("COLUMNS", str(columns))
frame_strings = [
f"{CLEAR_LINE}\r{expected_message[i]}{x}" for x in NONEMOJI_ANIMATION_FRAMES
]