aboutsummaryrefslogtreecommitdiffstats
path: root/setuptools/tests
diff options
context:
space:
mode:
authorPaul Ganssle <paul@ganssle.io>2019-01-27 12:11:21 -0500
committerPaul Ganssle <paul@ganssle.io>2019-02-03 12:25:05 -0500
commit6d0daf14277223da4e32093c00157ae5b26d1ece (patch)
treefead554a0572139ab0737610da43440e454a7d17 /setuptools/tests
parentf40a47a776904b09747502a1f210af9fc92ec542 (diff)
downloadexternal_python_setuptools-6d0daf14277223da4e32093c00157ae5b26d1ece.tar.gz
external_python_setuptools-6d0daf14277223da4e32093c00157ae5b26d1ece.tar.bz2
external_python_setuptools-6d0daf14277223da4e32093c00157ae5b26d1ece.zip
Wrap build_meta tests in a reusable test class
Diffstat (limited to 'setuptools/tests')
-rw-r--r--setuptools/tests/test_build_meta.py268
1 files changed, 134 insertions, 134 deletions
diff --git a/setuptools/tests/test_build_meta.py b/setuptools/tests/test_build_meta.py
index 82b44c89..a9865382 100644
--- a/setuptools/tests/test_build_meta.py
+++ b/setuptools/tests/test_build_meta.py
@@ -6,7 +6,6 @@ import tarfile
import pytest
-from setuptools.build_meta import build_sdist
from .files import build_files
from .textwrap import DALS
from . import py2_only
@@ -103,136 +102,137 @@ defns = [
]
-@pytest.fixture(params=defns)
-def build_backend(tmpdir, request):
- build_files(request.param, prefix=str(tmpdir))
- with tmpdir.as_cwd():
- yield BuildBackend(cwd='.')
-
-
-def test_get_requires_for_build_wheel(build_backend):
- actual = build_backend.get_requires_for_build_wheel()
- expected = ['six', 'wheel']
- assert sorted(actual) == sorted(expected)
-
-
-def test_get_requires_for_build_sdist(build_backend):
- actual = build_backend.get_requires_for_build_sdist()
- expected = ['six']
- assert sorted(actual) == sorted(expected)
-
-
-def test_build_wheel(build_backend):
- dist_dir = os.path.abspath('pip-wheel')
- os.makedirs(dist_dir)
- wheel_name = build_backend.build_wheel(dist_dir)
-
- assert os.path.isfile(os.path.join(dist_dir, wheel_name))
-
-
-def test_build_sdist(build_backend):
- dist_dir = os.path.abspath('pip-sdist')
- os.makedirs(dist_dir)
- sdist_name = build_backend.build_sdist(dist_dir)
-
- assert os.path.isfile(os.path.join(dist_dir, sdist_name))
-
-
-def test_prepare_metadata_for_build_wheel(build_backend):
- dist_dir = os.path.abspath('pip-dist-info')
- os.makedirs(dist_dir)
-
- dist_info = build_backend.prepare_metadata_for_build_wheel(dist_dir)
-
- assert os.path.isfile(os.path.join(dist_dir, dist_info, 'METADATA'))
-
-
-@py2_only
-def test_prepare_metadata_for_build_wheel_with_str(build_backend):
- dist_dir = os.path.abspath(str('pip-dist-info'))
- os.makedirs(dist_dir)
-
- 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))
-
-
-def test_build_sdist_setup_py_exists(tmpdir_cwd):
- # If build_sdist is called from a script other than setup.py,
- # ensure setup.py is include
- build_files(defns[0])
- targz_path = build_sdist("temp")
- with tarfile.open(os.path.join("temp", targz_path)) as tar:
- assert any('setup.py' in name for name in tar.getnames())
-
-
-def test_build_sdist_setup_py_manifest_excluded(tmpdir_cwd):
- # Ensure that MANIFEST.in can exclude setup.py
- files = {
- 'setup.py': DALS("""
- __import__('setuptools').setup(
- name='foo',
- version='0.0.0',
- py_modules=['hello']
- )"""),
- 'hello.py': '',
- 'MANIFEST.in': DALS("""
- exclude setup.py
- """)
- }
-
- build_files(files)
- targz_path = build_sdist("temp")
- with tarfile.open(os.path.join("temp", targz_path)) as tar:
- assert not any('setup.py' in name for name in tar.getnames())
-
-
-def test_build_sdist_builds_targz_even_if_zip_indicated(tmpdir_cwd):
- files = {
- 'setup.py': DALS("""
- __import__('setuptools').setup(
- name='foo',
- version='0.0.0',
- py_modules=['hello']
- )"""),
- 'hello.py': '',
- 'setup.cfg': DALS("""
- [sdist]
- formats=zip
- """)
- }
-
- build_files(files)
- build_sdist("temp")
+class TestBuildMetaBackend:
+ backend_name = 'setuptools.build_meta'
+
+ def get_build_backend(self):
+ return BuildBackend(cwd='.', backend_name=self.backend_name)
+
+ @pytest.fixture(params=defns)
+ def build_backend(self, tmpdir, request):
+ build_files(request.param, prefix=str(tmpdir))
+ with tmpdir.as_cwd():
+ yield self.get_build_backend()
+
+ def test_get_requires_for_build_wheel(self, build_backend):
+ actual = build_backend.get_requires_for_build_wheel()
+ expected = ['six', 'wheel']
+ assert sorted(actual) == sorted(expected)
+
+ def test_get_requires_for_build_sdist(self, build_backend):
+ actual = build_backend.get_requires_for_build_sdist()
+ expected = ['six']
+ assert sorted(actual) == sorted(expected)
+
+ def test_build_wheel(self, build_backend):
+ dist_dir = os.path.abspath('pip-wheel')
+ os.makedirs(dist_dir)
+ wheel_name = build_backend.build_wheel(dist_dir)
+
+ assert os.path.isfile(os.path.join(dist_dir, wheel_name))
+
+ def test_build_sdist(self, build_backend):
+ dist_dir = os.path.abspath('pip-sdist')
+ os.makedirs(dist_dir)
+ sdist_name = build_backend.build_sdist(dist_dir)
+
+ assert os.path.isfile(os.path.join(dist_dir, sdist_name))
+
+ def test_prepare_metadata_for_build_wheel(self, build_backend):
+ dist_dir = os.path.abspath('pip-dist-info')
+ os.makedirs(dist_dir)
+
+ dist_info = build_backend.prepare_metadata_for_build_wheel(dist_dir)
+
+ assert os.path.isfile(os.path.join(dist_dir, dist_info, 'METADATA'))
+
+ @py2_only
+ def test_prepare_metadata_for_build_wheel_with_str(self, build_backend):
+ dist_dir = os.path.abspath(str('pip-dist-info'))
+ os.makedirs(dist_dir)
+
+ 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(self, 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(self, 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))
+
+ def test_build_sdist_setup_py_exists(self, tmpdir_cwd):
+ # If build_sdist is called from a script other than setup.py,
+ # ensure setup.py is included
+ build_files(defns[0])
+
+ build_backend = self.get_build_backend()
+ targz_path = build_backend.build_sdist("temp")
+ with tarfile.open(os.path.join("temp", targz_path)) as tar:
+ assert any('setup.py' in name for name in tar.getnames())
+
+ def test_build_sdist_setup_py_manifest_excluded(self, tmpdir_cwd):
+ # Ensure that MANIFEST.in can exclude setup.py
+ files = {
+ 'setup.py': DALS("""
+ __import__('setuptools').setup(
+ name='foo',
+ version='0.0.0',
+ py_modules=['hello']
+ )"""),
+ 'hello.py': '',
+ 'MANIFEST.in': DALS("""
+ exclude setup.py
+ """)
+ }
+
+ build_files(files)
+
+ build_backend = self.get_build_backend()
+ targz_path = build_backend.build_sdist("temp")
+ with tarfile.open(os.path.join("temp", targz_path)) as tar:
+ assert not any('setup.py' in name for name in tar.getnames())
+
+ def test_build_sdist_builds_targz_even_if_zip_indicated(self, tmpdir_cwd):
+ files = {
+ 'setup.py': DALS("""
+ __import__('setuptools').setup(
+ name='foo',
+ version='0.0.0',
+ py_modules=['hello']
+ )"""),
+ 'hello.py': '',
+ 'setup.cfg': DALS("""
+ [sdist]
+ formats=zip
+ """)
+ }
+
+ build_files(files)
+
+ build_backend = self.get_build_backend()
+ build_backend.build_sdist("temp")