config_settings = _fix_config(config_settings)
sdist_directory = os.path.abspath(sdist_directory)
sys.argv = sys.argv[:1] + ['sdist'] + \
- config_settings["--global-option"]
+ config_settings["--global-option"] + \
+ ["--dist-dir", sdist_directory]
_run_setup()
- if sdist_directory != 'dist':
- shutil.rmtree(sdist_directory)
- shutil.copytree('dist', sdist_directory)
sdists = [f for f in os.listdir(sdist_directory)
if f.endswith('.tar.gz')]
from __future__ import unicode_literals
import os
+import shutil
import pytest
__metaclass__ = type
-
futures = pytest.importorskip('concurrent.futures')
importlib = pytest.importorskip('importlib')
class BuildBackend(BuildBackendBase):
"""PEP 517 Build Backend"""
+
def __init__(self, *args, **kwargs):
super(BuildBackend, self).__init__(*args, **kwargs)
self.pool = futures.ProcessPoolExecutor()
def __getattr__(self, name):
"""Handles aribrary function invocations on the build backend."""
+
def method(*args, **kw):
root = os.path.abspath(self.cwd)
caller = BuildBackendCaller(root, self.env, self.backend_name)
'setup.py': DALS("""
__import__('setuptools').setup(
name='foo',
+ version='0.0.0',
py_modules=['hello'],
setup_requires=['six'],
)
assert __name__ == '__main__'
__import__('setuptools').setup(
name='foo',
+ version='0.0.0',
py_modules=['hello'],
setup_requires=['six'],
)
assert variable
__import__('setuptools').setup(
name='foo',
+ version='0.0.0',
py_modules=['hello'],
setup_requires=['six'],
)
dist_info = build_backend.prepare_metadata_for_build_wheel(dist_dir)
assert os.path.isfile(os.path.join(dist_dir, dist_info, 'METADATA'))
+
+
+def test_build_sdist_explicit_dist(build_backend):
+ # explicitly specifying the dist folder should work
+ # the folder sdist_directory and the ``--dist-dir`` can be the same
+ dist_dir = os.path.abspath('dist')
+ sdist_name = build_backend.build_sdist(dist_dir)
+ assert os.path.isfile(os.path.join(dist_dir, sdist_name))
+
+
+def test_build_sdist_version_change(build_backend):
+ sdist_into_directory = os.path.abspath("out_sdist")
+ os.makedirs(sdist_into_directory)
+
+ sdist_name = build_backend.build_sdist(sdist_into_directory)
+ assert os.path.isfile(os.path.join(sdist_into_directory, sdist_name))
+
+ # if the setup.py changes subsequent call of the build meta should still succeed, given the
+ # sdist_directory the frontend specifies is empty
+ with open(os.path.abspath("setup.py"), 'rt') as file_handler:
+ content = file_handler.read()
+ with open(os.path.abspath("setup.py"), 'wt') as file_handler:
+ file_handler.write(content.replace("version='0.0.0'", "version='0.0.1'"))
+
+ shutil.rmtree(sdist_into_directory)
+ os.makedirs(sdist_into_directory)
+
+ sdist_name = build_backend.build_sdist("out_sdist")
+ assert os.path.isfile(os.path.join(os.path.abspath("out_sdist"), sdist_name))