osxphotos/tests/test_cli_verbose.py
2023-06-18 16:22:46 -07:00

116 lines
3.0 KiB
Python

"""Test verbose functions"""
import re
from io import StringIO
from osxphotos.cli.verbose import (
_reset_verbose_globals,
get_verbose_level,
set_verbose_level,
verbose,
verbose_print,
)
def test_set_get_verbose_level(capsys):
"""Test verbose_print"""
set_verbose_level(2)
assert get_verbose_level() == 2
def test_verbose_print_no_rich(capsys):
"""Test verbose_print"""
set_verbose_level(1)
verbose = verbose_print(1, False, False)
verbose("test")
captured = capsys.readouterr()
assert captured.out.strip() == "test"
verbose("test2", level=1)
captured = capsys.readouterr()
assert captured.out.strip() == "test2"
verbose("test3", level=2)
captured = capsys.readouterr()
assert captured.out.strip() == ""
def test_verbose_print_rich(capsys):
"""Test verbose with rich"""
set_verbose_level(1)
verbose = verbose_print(1, False, True)
verbose("test")
captured = capsys.readouterr()
assert captured.out.strip() == "test"
verbose("test2", level=1)
captured = capsys.readouterr()
assert captured.out.strip() == "test2"
verbose("test3", level=2)
captured = capsys.readouterr()
assert captured.out.strip() == ""
def test_verbose_print_timestamp(capsys):
"""Test verbose with timestamp"""
set_verbose_level(1)
verbose = verbose_print(1, True, False)
verbose("test")
captured = capsys.readouterr()
# regex to match timestamp in this format: 2023-01-25 06:40:18.216297
assert re.match(r"\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}\.\d{6}", captured.out.strip())
assert captured.out.strip().endswith("test")
verbose("test2", level=1)
captured = capsys.readouterr()
assert re.match(r"\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}\.\d{6}", captured.out.strip())
assert captured.out.strip().endswith("test2")
verbose("test3", level=2)
captured = capsys.readouterr()
assert captured.out.strip() == ""
def test_verbose_print_file():
"""Test verbose with file"""
set_verbose_level(1)
stream = StringIO()
verbose = verbose_print(1, False, False, file=stream)
verbose("test")
assert stream.getvalue().strip() == "test"
def test_verbose_print_noop(capsys):
"""Test verbose with noop"""
set_verbose_level(1)
verbose = verbose_print(0, False, False)
verbose("test")
captured = capsys.readouterr()
assert captured.out.strip() == ""
def test_verbose(capsys):
""" "Test verbose()"""
# reset verbose module globals for testing
_reset_verbose_globals()
set_verbose_level(0)
verbose("test")
captured = capsys.readouterr()
assert captured.out.strip() == ""
set_verbose_level(1)
verbose("test")
captured = capsys.readouterr()
assert captured.out.strip() == "test"
verbose("test2", level=2)
captured = capsys.readouterr()
assert captured.out.strip() == ""
set_verbose_level(2)
verbose("test2", level=2)
captured = capsys.readouterr()
assert captured.out.strip() == "test2"