diff options
| author | Anderson Bravalheri <andersonbravalheri@gmail.com> | 2022-11-15 15:06:36 +0000 |
|---|---|---|
| committer | Anderson Bravalheri <andersonbravalheri@gmail.com> | 2022-11-15 15:06:36 +0000 |
| commit | b682080b890b4a8de9be57ef2880606d0d5fcd5e (patch) | |
| tree | 88268b97316d83430890dd24d3a2c5a7b97f8f37 /setuptools | |
| parent | 94dcd5da01b83458af72406a955dc5d3fd32b339 (diff) | |
| download | python-setuptools-git-b682080b890b4a8de9be57ef2880606d0d5fcd5e.tar.gz | |
Test user-friendly exeptions for invalid entry-poitns
Diffstat (limited to 'setuptools')
| -rw-r--r-- | setuptools/tests/test_egg_info.py | 75 |
1 files changed, 53 insertions, 22 deletions
diff --git a/setuptools/tests/test_egg_info.py b/setuptools/tests/test_egg_info.py index ee07b5a1..387773c1 100644 --- a/setuptools/tests/test_egg_info.py +++ b/setuptools/tests/test_egg_info.py @@ -6,12 +6,18 @@ import re import stat import time from typing import List, Tuple +from pathlib import Path import pytest from jaraco import path +from setuptools import errors from setuptools.command.egg_info import ( - egg_info, manifest_maker, EggInfoDeprecationWarning, get_pkg_info_revision, + EggInfoDeprecationWarning, + egg_info, + get_pkg_info_revision, + manifest_maker, + write_entries, ) from setuptools.dist import Distribution @@ -24,6 +30,28 @@ class Environment(str): pass +@pytest.fixture +def env(): + with contexts.tempdir(prefix='setuptools-test.') as env_dir: + env = Environment(env_dir) + os.chmod(env_dir, stat.S_IRWXU) + subs = 'home', 'lib', 'scripts', 'data', 'egg-base' + env.paths = dict( + (dirname, os.path.join(env_dir, dirname)) + for dirname in subs + ) + list(map(os.mkdir, env.paths.values())) + path.build({ + env.paths['home']: { + '.pydistutils.cfg': DALS(""" + [egg_info] + egg-base = %(egg-base)s + """ % env.paths) + } + }) + yield env + + class TestEggInfo: setup_script = DALS(""" @@ -51,27 +79,6 @@ class TestEggInfo: version_str = pkg_info_lines[0].split(' ')[1] return tuple(map(int, version_str.split('.')[:2])) - @pytest.fixture - def env(self): - with contexts.tempdir(prefix='setuptools-test.') as env_dir: - env = Environment(env_dir) - os.chmod(env_dir, stat.S_IRWXU) - subs = 'home', 'lib', 'scripts', 'data', 'egg-base' - env.paths = dict( - (dirname, os.path.join(env_dir, dirname)) - for dirname in subs - ) - list(map(os.mkdir, env.paths.values())) - path.build({ - env.paths['home']: { - '.pydistutils.cfg': DALS(""" - [egg_info] - egg-base = %(egg-base)s - """ % env.paths) - } - }) - yield env - def test_egg_info_save_version_info_setup_empty(self, tmpdir_cwd, env): """ When the egg_info section is empty or not present, running @@ -1084,3 +1091,27 @@ class TestEggInfo: def test_get_pkg_info_revision_deprecated(self): pytest.warns(EggInfoDeprecationWarning, get_pkg_info_revision) + + +class TestWriteEntries: + + def test_invalid_entry_point(self, tmpdir_cwd, env): + dist = Distribution({"name": "foo", "version": "0.0.1"}) + dist.entry_points = {"foo": "foo = invalid-identifier:foo"} + cmd = dist.get_command_obj("egg_info") + expected_msg = r"Problems to parse .*invalid-identifier.*" + with pytest.raises(errors.OptionError, match=expected_msg) as ex: + write_entries(cmd, "entry_points", "entry_points.txt") + assert "ensure entry-point follows the spec" in ex.value.args[0] + + def test_valid_entry_point(self, tmpdir_cwd, env): + dist = Distribution({"name": "foo", "version": "0.0.1"}) + dist.entry_points = { + "abc": "foo = bar:baz", + "def": ["faa = bor:boz"], + } + cmd = dist.get_command_obj("egg_info") + write_entries(cmd, "entry_points", "entry_points.txt") + content = Path("entry_points.txt").read_text(encoding="utf-8") + assert "[abc]\nfoo = bar:baz\n" in content + assert "[def]\nfaa = bor:boz\n" in content |
