summaryrefslogtreecommitdiff
path: root/tests/util/test_ci.py
blob: ef9a089dc0eb0d71c6c663e4f16be747956cc204 (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
62
63
64
65
from __future__ import annotations

import pytest

from tox.util.ci import _ENV_VARS, is_ci


@pytest.mark.parametrize(
    "env_var",
    {
        "CI": None,  # generic flag
        "TF_BUILD": "true",  # Azure Pipelines
        "bamboo.buildKey": None,  # Bamboo
        "BUILDKITE": "true",  # Buildkite
        "CIRCLECI": "true",  # Circle CI
        "CIRRUS_CI": "true",  # Cirrus CI
        "CODEBUILD_BUILD_ID": None,  # CodeBuild
        "GITHUB_ACTIONS": "true",  # GitHub Actions
        "GITLAB_CI": None,  # GitLab CI
        "HEROKU_TEST_RUN_ID": None,  # Heroku CI
        "BUILD_ID": None,  # Hudson
        "TEAMCITY_VERSION": None,  # TeamCity
        "TRAVIS": "true",  # Travis CI
    }.items(),
    ids=lambda v: v[0],  # type: ignore
)
def test_is_ci(env_var: tuple[str, str | None], monkeypatch: pytest.MonkeyPatch) -> None:
    for var in _ENV_VARS:
        monkeypatch.delenv(var, raising=False)
    monkeypatch.setenv(env_var[0], env_var[1] or "")
    assert is_ci()


@pytest.mark.parametrize(
    "env_var",
    {
        "TF_BUILD": "",  # Azure Pipelines
        "BUILDKITE": "",  # Buildkite
        "CIRCLECI": "",  # Circle CI
        "CIRRUS_CI": "",  # Cirrus CI
        "GITHUB_ACTIONS": "",  # GitHub Actions
        "TRAVIS": "",  # Travis CI
    }.items(),
    ids=lambda v: v[0],  # type: ignore
)
def test_is_ci_bad_set(env_var: tuple[str, str], monkeypatch: pytest.MonkeyPatch) -> None:
    for var in _ENV_VARS:
        monkeypatch.delenv(var, raising=False)
    monkeypatch.setenv(env_var[0], env_var[1])
    assert not is_ci()


def test_is_ci_not(monkeypatch: pytest.MonkeyPatch) -> None:
    for var in _ENV_VARS:
        monkeypatch.delenv(var, raising=False)
    assert not is_ci()


def test_is_ci_not_teamcity_local(monkeypatch: pytest.MonkeyPatch) -> None:
    # pycharm sets this
    for var in _ENV_VARS:
        monkeypatch.delenv(var, raising=False)

    monkeypatch.setenv("TEAMCITY_VERSION", "LOCAL")
    assert not is_ci()