diff options
Diffstat (limited to 'setuptools/tests/test_svn.py')
-rw-r--r-- | setuptools/tests/test_svn.py | 85 |
1 files changed, 51 insertions, 34 deletions
diff --git a/setuptools/tests/test_svn.py b/setuptools/tests/test_svn.py index 90f213b4..1a41e427 100644 --- a/setuptools/tests/test_svn.py +++ b/setuptools/tests/test_svn.py @@ -3,18 +3,20 @@ import os +import zipfile import sys import tempfile import unittest import shutil import stat -import setuptools.command.egg_info as egg_info +from setuptools import svn_utils + #requires python >= 2.4 from subprocess import call as _call def _remove_dir(target): - + #on windows this seems to a problem for dir_path, dirs, files in os.walk(target): os.chmod(dir_path, stat.S_IWRITE) @@ -22,50 +24,65 @@ def _remove_dir(target): os.chmod(os.path.join(dir_path, filename), stat.S_IWRITE) shutil.rmtree(target) -class TestEmptySvn(unittest.TestCase): +class TestSvnVersion(unittest.TestCase): + def test_no_svn_found(self): + old_path = os.environ['path'] + os.environ['path'] = '' + try: + version = svn_utils.SVNEntries.get_svn_tool_version() + self.assertEqual(version, '') + finally: + os.environ['path'] = old_path + def test_svn_should_exist(self): + version = svn_utils.SVNEntries.get_svn_tool_version() + self.assertNotEqual(version, '') - def setUp(self): - self.temp_dir = tempfile.mkdtemp() - self.old_cwd = os.getcwd() - os.chdir(self.temp_dir) - #apparently there is a standing bug in python about having - #to use shell=True in windows to get a path search. - if _call(['svnadmin', 'create', 'svn'], shell=(sys.platform == 'win32')): - raise 'Failed to create SVN repository' - self.svnrepo = os.path.join(self.temp_dir, 'svn') +class TestSvn_1_7(unittest.TestCase): - if _call(['svn', 'checkout', 'file:///' + self.svnrepo.replace('\\','/'), 'co']): - os.chdir(self.old_cwd) - _remove_dir(self.temp_dir) - raise 'Failed to checkout SVN repository' + def setUp(self): + self.temp_dir = tempfile.mkdtemp() + zip_file, source, target = [None, None, None] + try: + zip_file = zipfile.ZipFile(os.path.join('setuptools', 'tests', + 'svn17_example.zip')) + for files in zip_file.namelist(): + zip_file.extract(files, self.temp_dir) + finally: + if zip_file: + zip_file.close() + del zip_file - os.chdir(os.path.join(self.temp_dir, 'co')) + self.old_cwd = os.getcwd() + os.chdir(os.path.join(self.temp_dir, 'svn17_example')) def tearDown(self): os.chdir(self.old_cwd) _remove_dir(self.temp_dir) - def test_can_get_revision_empty(self): - """Check that svn revision can be retrieved from an working set on an empty repository.""" - self.assertEquals('0', egg_info._get_svn_revision()) - - def test_can_get_revision_single_commit(self): - """Check that svn revision can be retrieved from an working set on an empty repository.""" - - open('README', 'w').close() - exitcode = _call(['svn', 'add', 'README'], shell=(sys.platform == 'win32')) - self.assertEqual(0, exitcode) - - exitcode = _call(['svn', 'commit', '-m', '"README added"'], shell=(sys.platform == 'win32')) - self.assertEqual(0, exitcode) - - exitcode = _call(['svn', 'update'], shell=(sys.platform == 'win32')) - self.assertEqual(0, exitcode) + def test_svnentrycmd_is_valid(self): + entries = svn_utils.SVNEntries.load_dir('.') + self.assertIsInstance(entries, svn_utils.SVNEntriesCMD) + self.assertTrue(entries.is_valid()) + + def test_svnentrycmd_is_valid(self): + entries = svn_utils.SVNEntries.load_dir('.') + self.assertIsInstance(entries, svn_utils.SVNEntriesCMD) + self.assertTrue(entries.is_valid()) + self.assertEqual(entries.get_url(), + 'file:///C:/development/svn_example/repo1') + + def test_svnentrycmd_enteries(self): + entries = svn_utils.SVNEntries.load_dir('.') + self.assertIsInstance(entries, svn_utils.SVNEntriesCMD) + self.assertEqual(entries.parse_revision(), 3) + self.assertEqual(set(entries.get_undeleted_records()), + set([u'readme.txt', u'other'])) + self.assertEqual(set(entries.get_external_dirs('dir-props')), + set([u'third_party3', u'third_party2', u'third_party'])) - self.assertEquals('1', egg_info._get_svn_revision()) def test_suite(): |