summaryrefslogtreecommitdiff
path: root/testing/test_setuptools_support.py
blob: 68ef10315bf271c976f6a88e02d0a031c0937369 (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
"""
integration tests that check setuptools version support
"""
import os
import subprocess
import sys

import pytest


@pytest.fixture(scope="session")
def get_setuptools_packagedir(request):
    targets = request.config.cache.makedir("setuptools_installs")

    def makeinstall(version):
        target = targets.ensure(version, dir=1)
        subprocess.check_call(
            [
                sys.executable,
                "-m",
                "pip",
                "install",
                "--no-binary",
                "setuptools",
                "setuptools==" + version,
                "-t",
                str(target),
            ]
        )
        return target

    return makeinstall


SCRIPT = """
from __future__ import print_function
import sys
import setuptools
print(setuptools.__version__, 'expected', sys.argv[1])
import setuptools_scm.version
from setuptools_scm.__main__ import main
main()
"""


def check(packagedir, expected_version, **env):

    old_pythonpath = os.environ.get("PYTHONPATH")
    if old_pythonpath:
        pythonpath = f"{old_pythonpath}:{packagedir}"
    else:
        pythonpath = str(packagedir)
    subprocess.check_call(
        [sys.executable, "-c", SCRIPT, expected_version],
        env=dict(os.environ, PYTHONPATH=pythonpath, **env),
    )


def test_distlib_setuptools_works(get_setuptools_packagedir):
    packagedir = get_setuptools_packagedir("45.0.0")
    check(packagedir, "45.0.0")