aboutsummaryrefslogtreecommitdiffstats
path: root/setuptools/tests/test_egg_info.py
diff options
context:
space:
mode:
Diffstat (limited to 'setuptools/tests/test_egg_info.py')
-rw-r--r--setuptools/tests/test_egg_info.py300
1 files changed, 94 insertions, 206 deletions
diff --git a/setuptools/tests/test_egg_info.py b/setuptools/tests/test_egg_info.py
index e803a41e..a1caf9fd 100644
--- a/setuptools/tests/test_egg_info.py
+++ b/setuptools/tests/test_egg_info.py
@@ -1,210 +1,98 @@
-
import os
-import sys
-import tempfile
-import shutil
-import unittest
-
-import pkg_resources
-import warnings
-from setuptools.command import egg_info
-from setuptools import svn_utils
-from setuptools.tests import environment, test_svn
-from setuptools.tests.py26compat import skipIf
-
-ENTRIES_V10 = pkg_resources.resource_string(__name__, 'entries-v10')
-"An entries file generated with svn 1.6.17 against the legacy Setuptools repo"
-
-
-class TestEggInfo(unittest.TestCase):
-
- def setUp(self):
- self.test_dir = tempfile.mkdtemp()
- os.mkdir(os.path.join(self.test_dir, '.svn'))
-
- self.old_cwd = os.getcwd()
- os.chdir(self.test_dir)
-
- def tearDown(self):
- os.chdir(self.old_cwd)
- shutil.rmtree(self.test_dir)
-
- def _write_entries(self, entries):
- fn = os.path.join(self.test_dir, '.svn', 'entries')
- entries_f = open(fn, 'wb')
- entries_f.write(entries)
- entries_f.close()
-
- @skipIf(not test_svn._svn_check, "No SVN to text, in the first place")
- def test_version_10_format(self):
- """
- """
- #keeping this set for 1.6 is a good check on the get_svn_revision
- #to ensure I return using svnversion what would had been returned
- version_str = svn_utils.SvnInfo.get_svn_version()
- version = [int(x) for x in version_str.split('.')[:2]]
- if version != [1, 6]:
- if hasattr(self, 'skipTest'):
- self.skipTest('')
- else:
- sys.stderr.write('\n Skipping due to SVN Version\n')
- return
-
- self._write_entries(ENTRIES_V10)
- rev = egg_info.egg_info.get_svn_revision()
- self.assertEqual(rev, '89000')
-
- def test_version_10_format_legacy_parser(self):
- """
- """
- path_variable = None
- for env in os.environ:
- if env.lower() == 'path':
- path_variable = env
-
- if path_variable:
- old_path = os.environ[path_variable]
- os.environ[path_variable] = ''
- #catch_warnings not available until py26
- warning_filters = warnings.filters
- warnings.filters = warning_filters[:]
- try:
- warnings.simplefilter("ignore", DeprecationWarning)
- self._write_entries(ENTRIES_V10)
- rev = egg_info.egg_info.get_svn_revision()
- finally:
- #restore the warning filters
- warnings.filters = warning_filters
- #restore the os path
- if path_variable:
- os.environ[path_variable] = old_path
-
- self.assertEqual(rev, '89000')
-
-DUMMY_SOURCE_TXT = """CHANGES.txt
-CONTRIBUTORS.txt
-HISTORY.txt
-LICENSE
-MANIFEST.in
-README.txt
-setup.py
-dummy/__init__.py
-dummy/test.txt
-dummy.egg-info/PKG-INFO
-dummy.egg-info/SOURCES.txt
-dummy.egg-info/dependency_links.txt
-dummy.egg-info/top_level.txt"""
-
-
-class TestSvnDummy(environment.ZippedEnvironment):
-
- def setUp(self):
- version = svn_utils.SvnInfo.get_svn_version()
- if not version: # None or Empty
- return None
-
- self.base_version = tuple([int(x) for x in version.split('.')][:2])
-
- if not self.base_version:
- raise ValueError('No SVN tools installed')
- elif self.base_version < (1, 3):
- raise ValueError('Insufficient SVN Version %s' % version)
- elif self.base_version >= (1, 9):
- #trying the latest version
- self.base_version = (1, 8)
-
- self.dataname = "dummy%i%i" % self.base_version
- self.datafile = os.path.join('setuptools', 'tests',
- 'svn_data', self.dataname + ".zip")
- super(TestSvnDummy, self).setUp()
-
- @skipIf(not test_svn._svn_check, "No SVN to text, in the first place")
- def test_sources(self):
- code, data = environment.run_setup_py(["sdist"],
- pypath=self.old_cwd,
- data_stream=1)
+import stat
+
+import pytest
+
+from . import environment
+from .textwrap import DALS
+from . import contexts
+
+
+class TestEggInfo:
+
+ setup_script = DALS("""
+ from setuptools import setup
+
+ setup(
+ name='foo',
+ py_modules=['hello'],
+ entry_points={'console_scripts': ['hi = hello.run']},
+ zip_safe=False,
+ )
+ """)
+
+ def _create_project(self):
+ with open('setup.py', 'w') as f:
+ f.write(self.setup_script)
+
+ with open('hello.py', 'w') as f:
+ f.write(DALS("""
+ def run():
+ print('hello')
+ """))
+
+ @pytest.yield_fixture
+ def env(self):
+ class Environment(str): pass
+
+ 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()))
+ config = os.path.join(env.paths['home'], '.pydistutils.cfg')
+ with open(config, 'w') as f:
+ f.write(DALS("""
+ [egg_info]
+ egg-base = %(egg-base)s
+ """ % env.paths
+ ))
+ yield env
+
+ def test_egg_base_installed_egg_info(self, tmpdir_cwd, env):
+ self._create_project()
+
+ environ = os.environ.copy().update(
+ HOME=env.paths['home'],
+ )
+ cmd = [
+ 'install',
+ '--home', env.paths['home'],
+ '--install-lib', env.paths['lib'],
+ '--install-scripts', env.paths['scripts'],
+ '--install-data', env.paths['data'],
+ ]
+ code, data = environment.run_setup_py(
+ cmd=cmd,
+ pypath=os.pathsep.join([env.paths['lib'], str(tmpdir_cwd)]),
+ data_stream=1,
+ env=environ,
+ )
if code:
raise AssertionError(data)
- sources = os.path.join('dummy.egg-info', 'SOURCES.txt')
- infile = open(sources, 'r')
- try:
- read_contents = infile.read()
- finally:
- infile.close()
- del infile
-
- self.assertEqual(DUMMY_SOURCE_TXT, read_contents)
-
- return data
-
- @skipIf(not test_svn._svn_check, "No SVN to text, in the first place")
- def test_svn_tags(self):
- code, data = environment.run_setup_py(["egg_info",
- "--tag-svn-revision"],
- pypath=self.old_cwd,
- data_stream=1)
- if code:
- raise AssertionError(data)
-
- pkginfo = os.path.join('dummy.egg-info', 'PKG-INFO')
- infile = open(pkginfo, 'r')
- try:
- read_contents = infile.readlines()
- finally:
- infile.close()
- del infile
-
- self.assertTrue("Version: 0.1.1-r1\n" in read_contents)
-
- @skipIf(not test_svn._svn_check, "No SVN to text, in the first place")
- def test_no_tags(self):
- code, data = environment.run_setup_py(["egg_info"],
- pypath=self.old_cwd,
- data_stream=1)
- if code:
- raise AssertionError(data)
-
- pkginfo = os.path.join('dummy.egg-info', 'PKG-INFO')
- infile = open(pkginfo, 'r')
- try:
- read_contents = infile.readlines()
- finally:
- infile.close()
- del infile
-
- self.assertTrue("Version: 0.1.1\n" in read_contents)
-
-
-class TestSvnDummyLegacy(environment.ZippedEnvironment):
-
- def setUp(self):
- self.base_version = (1, 6)
- self.dataname = "dummy%i%i" % self.base_version
- self.datafile = os.path.join('setuptools', 'tests',
- 'svn_data', self.dataname + ".zip")
- super(TestSvnDummyLegacy, self).setUp()
-
- def test_sources(self):
- code, data = environment.run_setup_py(["sdist"],
- pypath=self.old_cwd,
- path="",
- data_stream=1)
- if code:
- raise AssertionError(data)
-
- sources = os.path.join('dummy.egg-info', 'SOURCES.txt')
- infile = open(sources, 'r')
- try:
- read_contents = infile.read()
- finally:
- infile.close()
- del infile
-
- self.assertEqual(DUMMY_SOURCE_TXT, read_contents)
-
- return data
-
-
-def test_suite():
- return unittest.defaultTestLoader.loadTestsFromName(__name__)
+ actual = self._find_egg_info_files(env.paths['lib'])
+
+ expected = [
+ 'PKG-INFO',
+ 'SOURCES.txt',
+ 'dependency_links.txt',
+ 'entry_points.txt',
+ 'not-zip-safe',
+ 'top_level.txt',
+ ]
+ assert sorted(actual) == expected
+
+ def _find_egg_info_files(self, root):
+ results = (
+ filenames
+ for dirpath, dirnames, filenames in os.walk(root)
+ if os.path.basename(dirpath) == 'EGG-INFO'
+ )
+ # expect exactly one result
+ result, = results
+ return result