@@ -18,6 +18,7 @@
import subprocess

import pytest
from jaraco import path

from setuptools import sandbox
from setuptools.sandbox import run_setup
@@ -34,7 +35,6 @@
import pkg_resources

from . import contexts
from .files import build_files
from .textwrap import DALS


@@ -794,7 +794,7 @@ def test_setup_requires_with_transitive_extra_dependency(
# Create source tree for `dep`.
dep_pkg = os.path.join(temp_dir, 'dep')
os.mkdir(dep_pkg)
build_files({
path.build({
'setup.py':
DALS("""
import setuptools
@@ -6,15 +6,15 @@
import stat
import time

import pytest
from jaraco import path

from setuptools.command.egg_info import (
egg_info, manifest_maker, EggInfoDeprecationWarning, get_pkg_info_revision,
)
from setuptools.dist import Distribution

import pytest

from . import environment
from .files import build_files
from .textwrap import DALS
from . import contexts

@@ -37,7 +37,7 @@ class TestEggInfo:
""")

def _create_project(self):
build_files({
path.build({
'setup.py': self.setup_script,
'hello.py': DALS("""
def run():
@@ -56,7 +56,7 @@ def env(self):
for dirname in subs
)
list(map(os.mkdir, env.paths.values()))
build_files({
path.build({
env.paths['home']: {
'.pydistutils.cfg': DALS("""
[egg_info]
@@ -106,7 +106,7 @@ def test_egg_info_save_version_info_setup_defaults(self, tmpdir_cwd, env):
the file should remain unchanged.
"""
setup_cfg = os.path.join(env.paths['home'], 'setup.cfg')
build_files({
path.build({
setup_cfg: DALS("""
[egg_info]
tag_build =
@@ -159,8 +159,10 @@ def test_license_is_a_string(self, tmpdir_cwd, env):
setup()
""")

build_files({'setup.py': setup_script,
'setup.cfg': setup_config})
path.build({
'setup.py': setup_script,
'setup.cfg': setup_config,
})

# This command should fail with a ValueError, but because it's
# currently configured to use a subprocess, the actual traceback
@@ -193,7 +195,7 @@ def test_rebuilt(self, tmpdir_cwd, env):

def test_manifest_template_is_read(self, tmpdir_cwd, env):
self._create_project()
build_files({
path.build({
'MANIFEST.in': DALS("""
recursive-include docs *.rst
"""),
@@ -216,8 +218,10 @@ def _setup_script_with_requires(self, requires, use_setup_cfg=False):
'''
) % ('' if use_setup_cfg else requires)
setup_config = requires if use_setup_cfg else ''
build_files({'setup.py': setup_script,
'setup.cfg': setup_config})
path.build({
'setup.py': setup_script,
'setup.cfg': setup_config,
})

mismatch_marker = "python_version<'{this_ver}'".format(
this_ver=sys.version_info[0],
@@ -546,7 +550,7 @@ def test_doesnt_provides_extra(self, tmpdir_cwd, env):
def test_setup_cfg_license_file(
self, tmpdir_cwd, env, files, license_in_sources):
self._create_project()
build_files(files)
path.build(files)

environment.run_setup_py(
cmd=['egg_info'],
@@ -645,7 +649,7 @@ def test_setup_cfg_license_file(
def test_setup_cfg_license_files(
self, tmpdir_cwd, env, files, incl_licenses, excl_licenses):
self._create_project()
build_files(files)
path.build(files)

environment.run_setup_py(
cmd=['egg_info'],
@@ -750,7 +754,7 @@ def test_setup_cfg_license_files(
def test_setup_cfg_license_file_license_files(
self, tmpdir_cwd, env, files, incl_licenses, excl_licenses):
self._create_project()
build_files(files)
path.build(files)

environment.run_setup_py(
cmd=['egg_info'],
@@ -886,7 +890,7 @@ def _run_egg_info_command(self, tmpdir_cwd, env, cmd=None, output=None):

def test_egg_info_tag_only_once(self, tmpdir_cwd, env):
self._create_project()
build_files({
path.build({
'setup.cfg': DALS("""
[egg_info]
tag_build = dev
@@ -1,9 +1,8 @@
import pytest
from jaraco import path

from setuptools.glob import glob

from .files import build_files


@pytest.mark.parametrize('tree, pattern, matches', (
('', b'', []),
@@ -31,5 +30,5 @@
))
def test_glob(monkeypatch, tmpdir, tree, pattern, matches):
monkeypatch.chdir(tmpdir)
build_files({name: '' for name in tree.split()})
path.build({name: '' for name in tree.split()})
assert list(sorted(glob(pattern))) == list(sorted(matches))
@@ -1,27 +1,24 @@
import pytest
import os

from jaraco import path

from setuptools.command.upload_docs import upload_docs
from setuptools.dist import Distribution


@pytest.fixture
def sphinx_doc_sample_project(tmpdir_cwd):
# setup.py
with open('setup.py', 'wt') as f:
f.write('from setuptools import setup; setup()\n')

os.makedirs('build/docs')

# A test conf.py for Sphinx
with open('build/docs/conf.py', 'w') as f:
f.write("project = 'test'")

# A test index.rst for Sphinx
with open('build/docs/index.rst', 'w') as f:
f.write(".. toctree::\
path.build({
'setup.py': 'from setuptools import setup; setup()',
'build': {
'docs': {
'conf.py': 'project="test"',
'index.rst': ".. toctree::\
:maxdepth: 2\
:caption: Contents:")
:caption: Contents:",
},
},
})


@pytest.mark.usefixtures('sphinx_doc_sample_project')
@@ -3,35 +3,28 @@
import contextlib

import pytest
from jaraco import path

from setuptools.command.upload_docs import upload_docs
from setuptools.dist import Distribution

from .textwrap import DALS
from . import contexts

SETUP_PY = DALS(
"""
from setuptools import setup
setup(name='foo')
""")


@pytest.fixture
def sample_project(tmpdir_cwd):
# setup.py
with open('setup.py', 'wt') as f:
f.write(SETUP_PY)

os.mkdir('build')

# A test document.
with open('build/index.html', 'w') as f:
f.write("Hello world.")

# An empty folder.
os.mkdir('build/empty')
path.build({
'setup.py': DALS("""
from setuptools import setup
setup(name='foo')
"""),
'build': {
'index.html': 'Hello world.',
'empty': {},
}
})


@pytest.mark.usefixtures('sample_project')
@@ -1,6 +1,7 @@
import glob
import os
import sys
import itertools

import pathlib

@@ -65,20 +66,29 @@ def _get_pip_versions():
# No network, disable most of these tests
network = False

def mark(param, *marks):
if not isinstance(param, type(pytest.param(''))):
param = pytest.param(param)
return param._replace(marks=param.marks + marks)

def skip_network(param):
return param if network else mark(param, pytest.mark.skip(reason="no network"))

network_versions = [
'pip==9.0.3',
'pip==10.0.1',
'pip==18.1',
'pip==19.0.1',
mark('pip==19.3.1', pytest.mark.xfail(reason='pypa/pip#6599')),
'pip==20.0.2',
'https://github.com/pypa/pip/archive/master.zip',
]

versions = [None] + [
pytest.param(v, **({} if network else {'marks': pytest.mark.skip}))
for v in network_versions
]
versions = itertools.chain(
[None],
map(skip_network, network_versions)
)

return versions
return list(versions)


@pytest.mark.parametrize('pip_version', _get_pip_versions())
@@ -15,14 +15,14 @@
import zipfile

import pytest
from jaraco import path

from pkg_resources import Distribution, PathMetadata, PY_MAJOR
from setuptools.extern.packaging.utils import canonicalize_name
from setuptools.extern.packaging.tags import parse_tag
from setuptools.wheel import Wheel

from .contexts import tempdir
from .files import build_files
from .textwrap import DALS


@@ -91,7 +91,7 @@ def build_wheel(extra_file_defs=None, **kwargs):
if extra_file_defs:
file_defs.update(extra_file_defs)
with tempdir() as source_dir:
build_files(file_defs, source_dir)
path.build(file_defs, source_dir)
subprocess.check_call((sys.executable, 'setup.py',
'-q', 'bdist_wheel'), cwd=source_dir)
yield glob.glob(os.path.join(source_dir, 'dist', '*.whl'))[0]