mirror of
https://github.com/Stone-Red-Code/dvc.git
synced 2026-11-02 07:18:25 +01:00
Before, we used to set it during initialization. But this made it hard to test using capsys as capsys changes the reference to sys.stdout and sys.stderr with the mocked one during the test. But since we are using dvc.ui globally and setting it to a real sys.stdout and sys.stderr before capsys comes into effect, testing was not possible with it. Now, by using property hack, we will be using the values of sys.stdout and sys.stderr during the time of write, so the mocking would work and would be easier to test.
29 lines
740 B
Python
29 lines
740 B
Python
from pytest import CaptureFixture
|
|
|
|
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"
|
|
|
|
|
|
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"
|