File: test_upgrade_shared.py

package info (click to toggle)
python-pipx 1.8.0-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 1,776 kB
  • sloc: python: 9,653; makefile: 17; sh: 7
file content (66 lines) | stat: -rw-r--r-- 2,817 bytes parent folder | download | duplicates (2)
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
56
57
58
59
60
61
62
63
64
65
66
import subprocess

import pytest  # type: ignore[import-not-found]

from helpers import run_pipx_cli


@pytest.fixture
def shared_libs(pipx_ultra_temp_env):
    # local import to get the shared_libs object patched by fixtures
    from pipx.shared_libs import shared_libs as _shared_libs

    yield _shared_libs


def test_upgrade_shared(shared_libs, capsys, caplog):
    assert shared_libs.has_been_updated_this_run is False
    assert shared_libs.is_valid is False
    assert run_pipx_cli(["upgrade-shared", "-v"]) == 0
    captured = capsys.readouterr()
    assert "creating shared libraries" in captured.err
    assert "upgrading shared libraries" in captured.err
    assert "Upgrading shared libraries in" in caplog.text
    assert "Already upgraded libraries in" not in caplog.text
    assert shared_libs.has_been_updated_this_run is True
    assert shared_libs.is_valid is True
    shared_libs.has_been_updated_this_run = False
    assert run_pipx_cli(["upgrade-shared", "-v"]) == 0
    captured = capsys.readouterr()
    assert "creating shared libraries" not in captured.err
    assert "upgrading shared libraries" in captured.err
    assert "Upgrading shared libraries in" in caplog.text
    assert "Already upgraded libraries in" not in caplog.text
    assert shared_libs.has_been_updated_this_run is True
    assert run_pipx_cli(["upgrade-shared", "-v"]) == 0
    assert "Already upgraded libraries in" in caplog.text


def test_upgrade_shared_pip_args(shared_libs, capsys, caplog):
    assert shared_libs.has_been_updated_this_run is False
    assert shared_libs.is_valid is False
    assert run_pipx_cli(["upgrade-shared", "-v", "--pip-args='--no-index'"]) == 1
    captured = capsys.readouterr()
    assert "creating shared libraries" in captured.err
    assert "upgrading shared libraries" in captured.err
    assert "Upgrading shared libraries in" in caplog.text
    assert "Already upgraded libraries in" not in caplog.text
    assert shared_libs.has_been_updated_this_run is False
    assert shared_libs.is_valid is True


def test_upgrade_shared_pin_pip(shared_libs):
    def pip_version():
        cmd = "from importlib.metadata import version; print(version('pip'))"
        ret = subprocess.run([shared_libs.python_path, "-c", cmd], check=True, capture_output=True, text=True)
        return ret.stdout.strip()

    assert shared_libs.has_been_updated_this_run is False
    assert shared_libs.is_valid is False
    assert run_pipx_cli(["upgrade-shared", "-v", "--pip-args=pip==24.0"]) == 0
    assert shared_libs.is_valid is True
    assert pip_version() == "24.0"
    shared_libs.has_been_updated_this_run = False  # reset for next run
    assert run_pipx_cli(["upgrade-shared", "-v", "--pip-args=pip==23.3.2"]) == 0
    assert shared_libs.is_valid is True
    assert pip_version() == "23.3.2"