174 lines
5.3 KiB
Python
174 lines
5.3 KiB
Python
|
|
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)
|
|
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
|
|
|
|
|
|
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__)
|