Skip to content

Commit 00a0062

Browse files
committed
Test the VenvBuilder
1 parent 05c93c7 commit 00a0062

File tree

1 file changed

+60
-0
lines changed

1 file changed

+60
-0
lines changed

tests/unit/builders/test_venv.py

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
import subprocess
2+
3+
import pretend
4+
import pytest
5+
6+
import virtualenv.builders.venv
7+
8+
from virtualenv.builders.venv import VenvBuilder, _SCRIPT
9+
10+
11+
def test_venv_builder_check_available_success(monkeypatch):
12+
check_output = pretend.call_recorder(lambda *a, **kw: None)
13+
monkeypatch.setattr(
14+
virtualenv.builders.venv,
15+
"check_output",
16+
check_output,
17+
)
18+
19+
assert VenvBuilder.check_available("wat")
20+
assert check_output.calls == [
21+
pretend.call(["wat", "-c", "import venv"], stderr=subprocess.STDOUT),
22+
]
23+
24+
25+
def test_venv_builder_check_available_fails(monkeypatch):
26+
@pretend.call_recorder
27+
def check_output(*args, **kwargs):
28+
raise subprocess.CalledProcessError(1, "an error!")
29+
30+
monkeypatch.setattr(
31+
virtualenv.builders.venv,
32+
"check_output",
33+
check_output,
34+
)
35+
36+
assert not VenvBuilder.check_available("wat")
37+
assert check_output.calls == [
38+
pretend.call(["wat", "-c", "import venv"], stderr=subprocess.STDOUT),
39+
]
40+
41+
42+
@pytest.mark.parametrize("system_site_packages", [True, False])
43+
def test_venv_builder_create_venv(tmpdir, monkeypatch, system_site_packages):
44+
check_call = pretend.call_recorder(lambda *a, **kw: None)
45+
monkeypatch.setattr(subprocess, "check_call", check_call)
46+
builder = VenvBuilder(
47+
"wat",
48+
None,
49+
system_site_packages=system_site_packages,
50+
)
51+
builder.create_virtual_environment(str(tmpdir))
52+
53+
script = _SCRIPT.format(
54+
system_site_packages=system_site_packages,
55+
destination=str(tmpdir),
56+
)
57+
58+
assert check_call.calls == [
59+
pretend.call(["wat", "-c", script])
60+
]

0 commit comments

Comments
 (0)