summaryrefslogtreecommitdiff
path: root/tests/functional/test_truststore.py
blob: 33153d0fbf97f32f88efc37fbf47edecb6f319fa (plain)
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
import sys
from typing import Any, Callable

import pytest

from tests.lib import PipTestEnvironment, TestPipResult

PipRunner = Callable[..., TestPipResult]


@pytest.fixture()
def pip(script: PipTestEnvironment) -> PipRunner:
    def pip(*args: str, **kwargs: Any) -> TestPipResult:
        return script.pip(*args, "--use-feature=truststore", **kwargs)

    return pip


@pytest.mark.skipif(sys.version_info >= (3, 10), reason="3.10 can run truststore")
def test_truststore_error_on_old_python(pip: PipRunner) -> None:
    result = pip(
        "install",
        "--no-index",
        "does-not-matter",
        expect_error=True,
    )
    assert "The truststore feature is only available for Python 3.10+" in result.stderr


@pytest.mark.skipif(sys.version_info < (3, 10), reason="3.10+ required for truststore")
def test_truststore_error_without_preinstalled(pip: PipRunner) -> None:
    result = pip(
        "install",
        "--no-index",
        "does-not-matter",
        expect_error=True,
    )
    assert (
        "To use the truststore feature, 'truststore' must be installed into "
        "pip's current environment."
    ) in result.stderr


@pytest.mark.skipif(sys.version_info < (3, 10), reason="3.10+ required for truststore")
@pytest.mark.network
@pytest.mark.parametrize(
    "package",
    [
        "INITools",
        "https://github.com/pypa/pip-test-package/archive/refs/heads/master.zip",
    ],
    ids=["PyPI", "GitHub"],
)
def test_trustore_can_install(
    script: PipTestEnvironment,
    pip: PipRunner,
    package: str,
) -> None:
    script.pip("install", "truststore")
    result = pip("install", package)
    assert "Successfully installed" in result.stdout