aboutsummaryrefslogtreecommitdiffstats
path: root/setuptools/tests/test_glibc.py
blob: 795fdc5665bca24140db244e61a292c620ef2171 (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
import warnings

import pytest

from setuptools.glibc import check_glibc_version

__metaclass__ = type


@pytest.fixture(params=[
    "2.20",
    # used by "linaro glibc", see gh-3588
    "2.20-2014.11",
    # weird possibilities that I just made up
    "2.20+dev",
    "2.20-custom",
    "2.20.1",
    ])
def two_twenty(request):
    return request.param


@pytest.fixture(params=["asdf", "", "foo.bar"])
def bad_string(request):
    return request.param


class TestGlibc:
    def test_manylinux1_check_glibc_version(self, two_twenty):
        """
        Test that the check_glibc_version function is robust against weird
        glibc version strings.
        """
        assert check_glibc_version(two_twenty, 2, 15)
        assert check_glibc_version(two_twenty, 2, 20)
        assert not check_glibc_version(two_twenty, 2, 21)
        assert not check_glibc_version(two_twenty, 3, 15)
        assert not check_glibc_version(two_twenty, 1, 15)

    def test_bad_versions(self, bad_string):
        """
        For unparseable strings, warn and return False
        """
        with warnings.catch_warnings(record=True) as ws:
            warnings.filterwarnings("always")
            assert not check_glibc_version(bad_string, 2, 5)
            for w in ws:
                if "Expected glibc version with" in str(w.message):
                    break
            else:
                # Didn't find the warning we were expecting
                assert False