| Index: recipe_engine/third_party/setuptools/tests/test_egg_info.py
|
| diff --git a/recipe_engine/third_party/setuptools/tests/test_egg_info.py b/recipe_engine/third_party/setuptools/tests/test_egg_info.py
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..e80684205f7f53155c41042f87aa812648ef53d8
|
| --- /dev/null
|
| +++ b/recipe_engine/third_party/setuptools/tests/test_egg_info.py
|
| @@ -0,0 +1,268 @@
|
| +
|
| +import distutils.core
|
| +import os
|
| +import sys
|
| +import tempfile
|
| +import shutil
|
| +import stat
|
| +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()
|
| +
|
| + def _create_project(self):
|
| + with open('setup.py', 'w') as f:
|
| + f.write('from setuptools import setup\n')
|
| + f.write('\n')
|
| + f.write('setup(\n')
|
| + f.write(" name='foo',\n")
|
| + f.write(" py_modules=['hello'],\n")
|
| + f.write(" entry_points={'console_scripts': ['hi = hello.run']},\n")
|
| + f.write(' zip_safe=False,\n')
|
| + f.write(' )\n')
|
| + with open('hello.py', 'w') as f:
|
| + f.write('def run():\n')
|
| + f.write(" print('hello')\n")
|
| +
|
| + @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')
|
| +
|
| + def test_egg_base_installed_egg_info(self):
|
| + self._create_project()
|
| + temp_dir = tempfile.mkdtemp(prefix='setuptools-test.')
|
| + os.chmod(temp_dir, stat.S_IRWXU)
|
| + try:
|
| + paths = {}
|
| + for dirname in ['home', 'lib', 'scripts', 'data', 'egg-base']:
|
| + paths[dirname] = os.path.join(temp_dir, dirname)
|
| + os.mkdir(paths[dirname])
|
| + config = os.path.join(paths['home'], '.pydistutils.cfg')
|
| + with open(config, 'w') as f:
|
| + f.write('[egg_info]\n')
|
| + f.write('egg-base = %s\n' % paths['egg-base'])
|
| + environ = os.environ.copy()
|
| + environ['HOME'] = paths['home']
|
| + code, data = environment.run_setup_py(
|
| + cmd=[
|
| + 'install', '--home', paths['home'],
|
| + '--install-lib', paths['lib'],
|
| + '--install-scripts', paths['scripts'],
|
| + '--install-data', paths['data']],
|
| + pypath=os.pathsep.join([paths['lib'], self.old_cwd]),
|
| + data_stream=1,
|
| + env=environ)
|
| + if code:
|
| + raise AssertionError(data)
|
| + egg_info = None
|
| + for dirpath, dirnames, filenames in os.walk(paths['lib']):
|
| + if os.path.basename(dirpath) == 'EGG-INFO':
|
| + egg_info = sorted(filenames)
|
| + self.assertEqual(
|
| + egg_info,
|
| + ['PKG-INFO',
|
| + 'SOURCES.txt',
|
| + 'dependency_links.txt',
|
| + 'entry_points.txt',
|
| + 'not-zip-safe',
|
| + 'top_level.txt'])
|
| + finally:
|
| + shutil.rmtree(temp_dir)
|
| +
|
| +
|
| +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)
|
| + 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.post1\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__)
|
|
|