mirror of
https://github.com/Stone-Red-Code/dvc.git
synced 2026-11-02 07:18:25 +01:00
71 lines
1.7 KiB
Python
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"
|