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
|
from __future__ import annotations
import logging
import pytest
from virtualenv import __version__
from virtualenv.run import cli_run, session_via_cli
def test_help(capsys):
with pytest.raises(SystemExit) as context:
cli_run(args=["-h", "-vvv"])
assert context.value.code == 0
out, err = capsys.readouterr()
assert not err
assert out
def test_version(capsys):
with pytest.raises(SystemExit) as context:
cli_run(args=["--version"])
assert context.value.code == 0
content, err = capsys.readouterr()
assert not err
assert __version__ in content
import virtualenv # noqa: PLC0415
assert virtualenv.__file__ in content
@pytest.mark.parametrize("on", [True, False])
def test_logging_setup(caplog, on):
caplog.set_level(logging.DEBUG)
session_via_cli(["env"], setup_logging=on)
# DEBUG only level output is generated during this phase, default output is WARN, so if on no records should be
if on:
assert not caplog.records
else:
assert caplog.records
def test_invalid_discovery_method_via_env(monkeypatch: pytest.MonkeyPatch) -> None:
monkeypatch.setenv("VIRTUALENV_DISCOVERY", "pyenv")
with pytest.raises(RuntimeError, match=r"discovery 'pyenv' is not available") as exc_info:
session_via_cli(["env"])
error_message = str(exc_info.value)
assert "discovery 'pyenv' is not available" in error_message
assert "Available discovery methods:" in error_message
assert "builtin" in error_message
assert "Is the plugin installed?" in error_message
|