1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79
|
import io
import logging
import pytest
from zigpy_znp.logger import _TRACE
from zigpy_znp.tools.common import UnclosableFile, ClosableFileType, setup_parser
@pytest.mark.parametrize(
"verbosity,level", [(0, logging.INFO), (1, logging.DEBUG), (2, _TRACE)]
)
def test_logging_level_parser(verbosity, level, mocker):
mock_levels = {}
logging_getLevelName = logging.getLevelName
def getLevelName(level):
if level in mock_levels:
return mock_levels[level]
return logging_getLevelName(level)
mocker.patch("logging.getLevelName", getLevelName)
mocker.patch("logging.addLevelName", mock_levels.__setitem__)
parser = setup_parser("Test parser")
parser.parse_args(["/dev/null"] + ["-v"] * verbosity)
assert logging.getLogger().level == level
def test_command_close_stdout(tmpdir):
parser = setup_parser("Test parser")
parser.add_argument(
"--input",
"-i",
type=ClosableFileType("rb"),
help="Input .bin file",
default="-",
)
parser.add_argument(
"--output",
"-o",
type=ClosableFileType("w"),
help="Output .txt file",
default="-",
)
parser.add_argument(
"--other",
"-t",
type=ClosableFileType("w"),
help="Other .txt file",
required=True,
)
args = parser.parse_args(["/dev/null", "-t", str(tmpdir / "test.txt")])
assert isinstance(args.input, UnclosableFile)
assert isinstance(args.output, UnclosableFile)
assert isinstance(args.other, io.TextIOWrapper)
with args.input as _:
pass
with args.output as _:
pass
with args.other as _:
pass
# pytest patches sys.input on some platforms it seems
if hasattr(args.input, "closed"):
assert not args.input.closed
assert not args.output.closed
assert args.other.closed
|