Skip to content

Commit

Permalink
Revert "Merge pull request #2533 from pypa/fix/2529"
Browse files Browse the repository at this point in the history
This reverts commit ef457b2, reversing
changes made to d2b1f7e.
  • Loading branch information
jaraco committed Jan 17, 2021
1 parent dc051ce commit 5156278
Show file tree
Hide file tree
Showing 2 changed files with 38 additions and 56 deletions.
10 changes: 4 additions & 6 deletions setuptools/command/egg_info.py
Original file line number Diff line number Diff line change
Expand Up @@ -131,12 +131,10 @@ def _maybe_tag(self, version):
egg_info may be called more than once for a distribution,
in which case the version string already contains all tags.
"""
# Remove the tags if they exist. The tags maybe have been normalized
# (e.g. turning .dev into .dev0) so we can't just compare strings
base_version = parse_version(version).base_version

# Add the tags
return base_version + self.vtags
return (
version if self.vtags and version.endswith(self.vtags)
else version + self.vtags
)

def tags(self):
version = ''
Expand Down
84 changes: 34 additions & 50 deletions setuptools/tests/test_egg_info.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@
import stat
import time

from setuptools.build_meta import prepare_metadata_for_build_wheel
from setuptools.command.egg_info import (
egg_info, manifest_maker, EggInfoDeprecationWarning, get_pkg_info_revision,
)
Expand All @@ -20,26 +19,6 @@
from . import contexts


def _run_egg_info_command(tmpdir_cwd, env, cmd=None, output=None):
environ = os.environ.copy().update(
HOME=env.paths['home'],
)
if cmd is None:
cmd = [
'egg_info',
]
code, data = environment.run_setup_py(
cmd=cmd,
pypath=os.pathsep.join([env.paths['lib'], str(tmpdir_cwd)]),
data_stream=1,
env=environ,
)
assert not code, data

if output:
assert output in data


class Environment(str):
pass

Expand Down Expand Up @@ -153,7 +132,7 @@ def test_egg_info_save_version_info_setup_defaults(self, tmpdir_cwd, env):
def test_expected_files_produced(self, tmpdir_cwd, env):
self._create_project()

_run_egg_info_command(tmpdir_cwd, env)
self._run_egg_info_command(tmpdir_cwd, env)
actual = os.listdir('foo.egg-info')

expected = [
Expand Down Expand Up @@ -187,7 +166,7 @@ def test_license_is_a_string(self, tmpdir_cwd, env):
# currently configured to use a subprocess, the actual traceback
# object is lost and we need to parse it from stderr
with pytest.raises(AssertionError) as exc:
_run_egg_info_command(tmpdir_cwd, env)
self._run_egg_info_command(tmpdir_cwd, env)

# Hopefully this is not too fragile: the only argument to the
# assertion error should be a traceback, ending with:
Expand All @@ -201,13 +180,13 @@ def test_rebuilt(self, tmpdir_cwd, env):
"""Ensure timestamps are updated when the command is re-run."""
self._create_project()

_run_egg_info_command(tmpdir_cwd, env)
self._run_egg_info_command(tmpdir_cwd, env)
timestamp_a = os.path.getmtime('foo.egg-info')

# arbitrary sleep just to handle *really* fast systems
time.sleep(.001)

_run_egg_info_command(tmpdir_cwd, env)
self._run_egg_info_command(tmpdir_cwd, env)
timestamp_b = os.path.getmtime('foo.egg-info')

assert timestamp_a != timestamp_b
Expand All @@ -222,7 +201,7 @@ def test_manifest_template_is_read(self, tmpdir_cwd, env):
'usage.rst': "Run 'hi'",
}
})
_run_egg_info_command(tmpdir_cwd, env)
self._run_egg_info_command(tmpdir_cwd, env)
egg_info_dir = os.path.join('.', 'foo.egg-info')
sources_txt = os.path.join(egg_info_dir, 'SOURCES.txt')
with open(sources_txt) as f:
Expand Down Expand Up @@ -462,7 +441,7 @@ def test_requires(
self, tmpdir_cwd, env, requires, use_setup_cfg,
expected_requires, install_cmd_kwargs):
self._setup_script_with_requires(requires, use_setup_cfg)
_run_egg_info_command(tmpdir_cwd, env, **install_cmd_kwargs)
self._run_egg_info_command(tmpdir_cwd, env, **install_cmd_kwargs)
egg_info_dir = os.path.join('.', 'foo.egg-info')
requires_txt = os.path.join(egg_info_dir, 'requires.txt')
if os.path.exists(requires_txt):
Expand All @@ -482,22 +461,22 @@ def test_install_requires_unordered_disallowed(self, tmpdir_cwd, env):
req = 'install_requires={"fake-factory==0.5.2", "pytz"}'
self._setup_script_with_requires(req)
with pytest.raises(AssertionError):
_run_egg_info_command(tmpdir_cwd, env)
self._run_egg_info_command(tmpdir_cwd, env)

def test_extras_require_with_invalid_marker(self, tmpdir_cwd, env):
tmpl = 'extras_require={{":{marker}": ["barbazquux"]}},'
req = tmpl.format(marker=self.invalid_marker)
self._setup_script_with_requires(req)
with pytest.raises(AssertionError):
_run_egg_info_command(tmpdir_cwd, env)
self._run_egg_info_command(tmpdir_cwd, env)
assert glob.glob(os.path.join(env.paths['lib'], 'barbazquux*')) == []

def test_extras_require_with_invalid_marker_in_req(self, tmpdir_cwd, env):
tmpl = 'extras_require={{"extra": ["barbazquux; {marker}"]}},'
req = tmpl.format(marker=self.invalid_marker)
self._setup_script_with_requires(req)
with pytest.raises(AssertionError):
_run_egg_info_command(tmpdir_cwd, env)
self._run_egg_info_command(tmpdir_cwd, env)
assert glob.glob(os.path.join(env.paths['lib'], 'barbazquux*')) == []

def test_provides_extra(self, tmpdir_cwd, env):
Expand Down Expand Up @@ -886,22 +865,26 @@ def test_egg_info_includes_setup_py(self, tmpdir_cwd):
sources = f.read().split('\n')
assert 'setup.py' in sources

@pytest.mark.parametrize(
('make_metadata_path', 'run_command'),
[
(
lambda env: os.path.join('.', 'foo.egg-info', 'PKG-INFO'),
lambda tmpdir_cwd, env: _run_egg_info_command(tmpdir_cwd, env)
),
(
lambda env: os.path.join(env, 'foo.dist-info', 'METADATA'),
lambda tmpdir_cwd, env: prepare_metadata_for_build_wheel(env)
)
]
)
def test_egg_info_tag_only_once(
self, tmpdir_cwd, env, make_metadata_path, run_command
):
def _run_egg_info_command(self, tmpdir_cwd, env, cmd=None, output=None):
environ = os.environ.copy().update(
HOME=env.paths['home'],
)
if cmd is None:
cmd = [
'egg_info',
]
code, data = environment.run_setup_py(
cmd=cmd,
pypath=os.pathsep.join([env.paths['lib'], str(tmpdir_cwd)]),
data_stream=1,
env=environ,
)
assert not code, data

if output:
assert output in data

def test_egg_info_tag_only_once(self, tmpdir_cwd, env):
self._create_project()
build_files({
'setup.cfg': DALS("""
Expand All @@ -911,10 +894,11 @@ def test_egg_info_tag_only_once(
tag_svn_revision = 0
"""),
})
run_command(tmpdir_cwd, env)
with open(make_metadata_path(env)) as metadata_file:
metadata_lines = metadata_file.read().split('\n')
assert 'Version: 0.0.0.dev0' in metadata_lines
self._run_egg_info_command(tmpdir_cwd, env)
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')
assert 'Version: 0.0.0.dev0' in pkg_info_lines

def test_get_pkg_info_revision_deprecated(self):
pytest.warns(EggInfoDeprecationWarning, get_pkg_info_revision)

0 comments on commit 5156278

Please sign in to comment.