diff options
author | Jeremy Stanley <fungi@yuggoth.org> | 2017-11-21 00:48:44 +0000 |
---|---|---|
committer | Jeremy Stanley <fungi@yuggoth.org> | 2017-11-22 19:24:12 +0000 |
commit | df2246449c271c07586bcecc3eaa36e9b0e94e3d (patch) | |
tree | a729506809366de107bf68d4d9962cd043dc0e93 /setuptools/tests | |
parent | d45be2cc4f7a1e4ddc70b363baaa613c6b068b98 (diff) | |
download | python-setuptools-git-df2246449c271c07586bcecc3eaa36e9b0e94e3d.tar.gz |
Support PEP 345 Project-URL metadata
By including one or more Project-URL entries in PKG-INFO metadata,
PyPI can display helpful hyperlinks in a generic manner. Add support
here to be able to pass it through setup.cfg and setup.py with a
project_urls dict. See the corresponding section of the Core
Metadata Specifications from the Python Packaging User Guide for
details:
https://packaging.python.org/specifications/core-metadata/#project-url-multiple-use
Diffstat (limited to 'setuptools/tests')
-rw-r--r-- | setuptools/tests/test_config.py | 16 | ||||
-rw-r--r-- | setuptools/tests/test_egg_info.py | 30 |
2 files changed, 46 insertions, 0 deletions
diff --git a/setuptools/tests/test_config.py b/setuptools/tests/test_config.py index cdfa5af4..a69bca46 100644 --- a/setuptools/tests/test_config.py +++ b/setuptools/tests/test_config.py @@ -215,6 +215,22 @@ class TestMetadata: 'Programming Language :: Python :: 3.5', ] + def test_dict(self, tmpdir): + + fake_env( + tmpdir, + '[metadata]\n' + 'project_urls =\n' + ' Link One = https://example.com/one/\n' + ' Link Two = https://example.com/two/\n' + ) + with get_dist(tmpdir) as dist: + metadata = dist.metadata + assert metadata.project_urls == { + 'Link One': 'https://example.com/one/', + 'Link Two': 'https://example.com/two/', + } + def test_version(self, tmpdir): _, config = fake_env( diff --git a/setuptools/tests/test_egg_info.py b/setuptools/tests/test_egg_info.py index a97d0c84..e05498b8 100644 --- a/setuptools/tests/test_egg_info.py +++ b/setuptools/tests/test_egg_info.py @@ -417,6 +417,36 @@ class TestEggInfo(object): expected_line = 'Description-Content-Type: text/markdown' assert expected_line in pkg_info_lines + def test_project_urls(self, tmpdir_cwd, env): + # Test that specifying a `project_urls` dict to the `setup` + # function results in writing multiple `Project-URL` lines to + # the `PKG-INFO` file in the `<distribution>.egg-info` + # directory. + # `Project-URL` is described at https://packaging.python.org + # /specifications/core-metadata/#project-url-multiple-use + + self._setup_script_with_requires( + """project_urls={ + 'Link One': 'https://example.com/one/', + 'Link Two': 'https://example.com/two/', + },""") + environ = os.environ.copy().update( + HOME=env.paths['home'], + ) + code, data = environment.run_setup_py( + cmd=['egg_info'], + pypath=os.pathsep.join([env.paths['lib'], str(tmpdir_cwd)]), + data_stream=1, + env=environ, + ) + egg_info_dir = os.path.join('.', 'foo.egg-info') + with open(os.path.join(egg_info_dir, 'PKG-INFO')) as pkginfo_file: + pkg_info_lines = pkginfo_file.read().split('\n') + expected_line = 'Project-URL: Link One, https://example.com/one/' + assert expected_line in pkg_info_lines + expected_line = 'Project-URL: Link Two, https://example.com/two/' + assert expected_line in pkg_info_lines + def test_python_requires_egg_info(self, tmpdir_cwd, env): self._setup_script_with_requires( """python_requires='>=2.7.12',""") |