summaryrefslogtreecommitdiff
path: root/setuptools/tests/test_dist.py
diff options
context:
space:
mode:
Diffstat (limited to 'setuptools/tests/test_dist.py')
-rw-r--r--setuptools/tests/test_dist.py231
1 files changed, 0 insertions, 231 deletions
diff --git a/setuptools/tests/test_dist.py b/setuptools/tests/test_dist.py
index e7d2f5ca..b87c3704 100644
--- a/setuptools/tests/test_dist.py
+++ b/setuptools/tests/test_dist.py
@@ -1,7 +1,5 @@
-import io
import collections
import re
-import functools
import os
import urllib.request
import urllib.parse
@@ -11,10 +9,7 @@ from setuptools.dist import (
check_package_data,
DistDeprecationWarning,
check_specifier,
- rfc822_escape,
- rfc822_unescape,
)
-from setuptools import sic
from setuptools import Distribution
from .textwrap import DALS
@@ -82,198 +77,6 @@ EXAMPLE_BASE_INFO = dict(
)
-def __read_test_cases():
- base = EXAMPLE_BASE_INFO
-
- params = functools.partial(dict, base)
-
- test_cases = [
- ('Metadata version 1.0', params()),
- ('Metadata Version 1.0: Short long description', params(
- long_description='Short long description',
- )),
- ('Metadata version 1.1: Classifiers', params(
- classifiers=[
- 'Programming Language :: Python :: 3',
- 'Programming Language :: Python :: 3.7',
- 'License :: OSI Approved :: MIT License',
- ],
- )),
- ('Metadata version 1.1: Download URL', params(
- download_url='https://example.com',
- )),
- ('Metadata Version 1.2: Requires-Python', params(
- python_requires='>=3.7',
- )),
- pytest.param(
- 'Metadata Version 1.2: Project-Url',
- params(project_urls=dict(Foo='https://example.bar')),
- marks=pytest.mark.xfail(
- reason="Issue #1578: project_urls not read",
- ),
- ),
- ('Metadata Version 2.1: Long Description Content Type', params(
- long_description_content_type='text/x-rst; charset=UTF-8',
- )),
- ('License', params(license='MIT', )),
- ('License multiline', params(
- license='This is a long license \nover multiple lines',
- )),
- pytest.param(
- 'Metadata Version 2.1: Provides Extra',
- params(provides_extras=['foo', 'bar']),
- marks=pytest.mark.xfail(reason="provides_extras not read"),
- ),
- ('Missing author', dict(
- name='foo',
- version='1.0.0',
- author_email='snorri@sturluson.name',
- )),
- ('Missing author e-mail', dict(
- name='foo',
- version='1.0.0',
- author='Snorri Sturluson',
- )),
- ('Missing author and e-mail', dict(
- name='foo',
- version='1.0.0',
- )),
- ('Bypass normalized version', dict(
- name='foo',
- version=sic('1.0.0a'),
- )),
- ]
-
- return test_cases
-
-
-@pytest.mark.parametrize('name,attrs', __read_test_cases())
-def test_read_metadata(name, attrs):
- dist = Distribution(attrs)
- metadata_out = dist.metadata
- dist_class = metadata_out.__class__
-
- # Write to PKG_INFO and then load into a new metadata object
- PKG_INFO = io.StringIO()
-
- metadata_out.write_pkg_file(PKG_INFO)
-
- PKG_INFO.seek(0)
- metadata_in = dist_class()
- metadata_in.read_pkg_file(PKG_INFO)
-
- tested_attrs = [
- ('name', dist_class.get_name),
- ('version', dist_class.get_version),
- ('author', dist_class.get_contact),
- ('author_email', dist_class.get_contact_email),
- ('metadata_version', dist_class.get_metadata_version),
- ('provides', dist_class.get_provides),
- ('description', dist_class.get_description),
- ('long_description', dist_class.get_long_description),
- ('download_url', dist_class.get_download_url),
- ('keywords', dist_class.get_keywords),
- ('platforms', dist_class.get_platforms),
- ('obsoletes', dist_class.get_obsoletes),
- ('requires', dist_class.get_requires),
- ('classifiers', dist_class.get_classifiers),
- ('project_urls', lambda s: getattr(s, 'project_urls', {})),
- ('provides_extras', lambda s: getattr(s, 'provides_extras', set())),
- ]
-
- for attr, getter in tested_attrs:
- assert getter(metadata_in) == getter(metadata_out)
-
-
-def __maintainer_test_cases():
- attrs = {"name": "package",
- "version": "1.0",
- "description": "xxx"}
-
- def merge_dicts(d1, d2):
- d1 = d1.copy()
- d1.update(d2)
-
- return d1
-
- test_cases = [
- ('No author, no maintainer', attrs.copy()),
- ('Author (no e-mail), no maintainer', merge_dicts(
- attrs,
- {'author': 'Author Name'})),
- ('Author (e-mail), no maintainer', merge_dicts(
- attrs,
- {'author': 'Author Name',
- 'author_email': 'author@name.com'})),
- ('No author, maintainer (no e-mail)', merge_dicts(
- attrs,
- {'maintainer': 'Maintainer Name'})),
- ('No author, maintainer (e-mail)', merge_dicts(
- attrs,
- {'maintainer': 'Maintainer Name',
- 'maintainer_email': 'maintainer@name.com'})),
- ('Author (no e-mail), Maintainer (no-email)', merge_dicts(
- attrs,
- {'author': 'Author Name',
- 'maintainer': 'Maintainer Name'})),
- ('Author (e-mail), Maintainer (e-mail)', merge_dicts(
- attrs,
- {'author': 'Author Name',
- 'author_email': 'author@name.com',
- 'maintainer': 'Maintainer Name',
- 'maintainer_email': 'maintainer@name.com'})),
- ('No author (e-mail), no maintainer (e-mail)', merge_dicts(
- attrs,
- {'author_email': 'author@name.com',
- 'maintainer_email': 'maintainer@name.com'})),
- ('Author unicode', merge_dicts(
- attrs,
- {'author': '鉄沢寛'})),
- ('Maintainer unicode', merge_dicts(
- attrs,
- {'maintainer': 'Jan Łukasiewicz'})),
- ]
-
- return test_cases
-
-
-@pytest.mark.parametrize('name,attrs', __maintainer_test_cases())
-def test_maintainer_author(name, attrs, tmpdir):
- tested_keys = {
- 'author': 'Author',
- 'author_email': 'Author-email',
- 'maintainer': 'Maintainer',
- 'maintainer_email': 'Maintainer-email',
- }
-
- # Generate a PKG-INFO file
- dist = Distribution(attrs)
- fn = tmpdir.mkdir('pkg_info')
- fn_s = str(fn)
-
- dist.metadata.write_pkg_info(fn_s)
-
- with io.open(str(fn.join('PKG-INFO')), 'r', encoding='utf-8') as f:
- raw_pkg_lines = f.readlines()
-
- # Drop blank lines and strip lines from default description
- pkg_lines = list(filter(None, raw_pkg_lines[:-2]))
-
- pkg_lines_set = set(pkg_lines)
-
- # Duplicate lines should not be generated
- assert len(pkg_lines) == len(pkg_lines_set)
-
- for fkey, dkey in tested_keys.items():
- val = attrs.get(dkey, None)
- if val is None:
- for line in pkg_lines:
- assert not line.startswith(fkey + ':')
- else:
- line = '%s: %s' % (fkey, val)
- assert line in pkg_lines_set
-
-
def test_provides_extras_deterministic_order():
extras = collections.OrderedDict()
extras['a'] = ['foo']
@@ -347,40 +150,6 @@ def test_check_specifier():
dist = Distribution(attrs)
-@pytest.mark.parametrize(
- 'content, result',
- (
- pytest.param(
- "Just a single line",
- None,
- id="single_line",
- ),
- pytest.param(
- "Multiline\nText\nwithout\nextra indents\n",
- None,
- id="multiline",
- ),
- pytest.param(
- "Multiline\n With\n\nadditional\n indentation",
- None,
- id="multiline_with_indentation",
- ),
- pytest.param(
- " Leading whitespace",
- "Leading whitespace",
- id="remove_leading_whitespace",
- ),
- pytest.param(
- " Leading whitespace\nIn\n Multiline comment",
- "Leading whitespace\nIn\n Multiline comment",
- id="remove_leading_whitespace_multiline",
- ),
- )
-)
-def test_rfc822_unescape(content, result):
- assert (result or content) == rfc822_unescape(rfc822_escape(content))
-
-
def test_metadata_name():
with pytest.raises(DistutilsSetupError, match='missing.*name'):
Distribution()._validate_metadata()