Files
dvc/tests/unit/ui/test_console.py
T
2021-10-15 01:30:22 +03:00

71 lines
1.7 KiB
Python

import datetime
import textwrap
import pytest
from pytest import CaptureFixture
from pytest_mock import MockerFixture
from dvc.ui import Console
def test_write(capsys: CaptureFixture[str]):
"""Test that ui.write works."""
console = Console(enable=True)
message = "hello world"
console.write(message)
console.error_write(message)
captured = capsys.readouterr()
assert captured.out == f"{message}\n"
assert captured.err == f"{message}\n"
@pytest.mark.parametrize(
"isatty, expected_output",
[
(
True,
textwrap.dedent(
"""\
{
"hello": "world",
"date": "1970-01-01 00:00:00"
}
"""
),
),
(
False,
textwrap.dedent(
"""\
{"hello": "world", "date": "1970-01-01 00:00:00"}
"""
),
),
],
)
def test_write_json(
capsys: CaptureFixture[str], mocker: MockerFixture, isatty, expected_output
):
"""Test that ui.write_json works."""
console = Console(enable=True)
mocker.patch.object(console, "isatty", return_value=isatty)
message = {"hello": "world", "date": datetime.datetime(1970, 1, 1)}
console.write_json(message, default=str)
captured = capsys.readouterr()
assert captured.out == expected_output
def test_capsys_works(capsys: CaptureFixture[str]):
"""Sanity check that capsys can capture outputs from a global ui."""
from dvc.ui import ui
message = "hello world"
ui.write(message)
ui.error_write(message)
captured = capsys.readouterr()
assert captured.out == f"{message}\n"
assert captured.err == f"{message}\n"