File: test_virtualenv_activator.py

package info (click to toggle)
xonsh 0.13.4%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 4,024 kB
  • sloc: python: 46,350; makefile: 136; sh: 41; xml: 17
file content (53 lines) | stat: -rw-r--r-- 1,434 bytes parent folder | download
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
import sys
from pathlib import Path
from subprocess import check_output

from xonsh.pytest.tools import ON_WINDOWS


def test_xonsh_activator(tmp_path):
    # Create virtualenv
    venv_dir = tmp_path / "venv"
    assert b"XonshActivator" in check_output(
        [sys.executable, "-m", "virtualenv", str(venv_dir)]
    )
    assert venv_dir.is_dir()

    # Check activation script created
    if ON_WINDOWS:
        bin_path = venv_dir / "Scripts"
    else:
        bin_path = venv_dir / "bin"
    activate_path = bin_path / "activate.xsh"
    assert activate_path.is_file()

    # Sanity
    original_python = check_output(
        [
            sys.executable,
            "-m",
            "xonsh",
            "-c",
            "import shutil; shutil.which('python') or shutil.which('python3')",
        ]
    ).decode()
    assert Path(original_python).parent != bin_path

    # Activate
    venv_python = check_output(
        [sys.executable, "-m", "xonsh", "-c", f"source {activate_path}; which python"]
    ).decode()
    assert Path(venv_python).parent == bin_path

    # Deactivate
    deactivated_python = check_output(
        [
            sys.executable,
            "-m",
            "xonsh",
            "-c",
            f"source {activate_path}; deactivate; "
            "import shutil; shutil.which('python') or shutil.which('python3')",
        ]
    ).decode()
    assert deactivated_python == original_python