summaryrefslogtreecommitdiffstats
path: root/Lib/packaging/tests/test_dist.py
diff options
context:
space:
mode:
Diffstat (limited to 'Lib/packaging/tests/test_dist.py')
-rw-r--r--Lib/packaging/tests/test_dist.py264
1 files changed, 0 insertions, 264 deletions
diff --git a/Lib/packaging/tests/test_dist.py b/Lib/packaging/tests/test_dist.py
deleted file mode 100644
index 0623990..0000000
--- a/Lib/packaging/tests/test_dist.py
+++ /dev/null
@@ -1,264 +0,0 @@
-"""Tests for packaging.dist."""
-import os
-import sys
-import textwrap
-
-import packaging.dist
-
-from packaging.dist import Distribution
-from packaging.command.cmd import Command
-from packaging.errors import PackagingModuleError, PackagingOptionError
-from packaging.tests import support, unittest
-from packaging.tests.support import create_distribution, use_command
-from test.support import unload
-
-
-class test_dist(Command):
- """Custom command used for testing."""
-
- user_options = [
- ('sample-option=', 'S',
- "help text"),
- ]
-
- def initialize_options(self):
- self.sample_option = None
- self._record = []
-
- def finalize_options(self):
- if self.sample_option is None:
- self.sample_option = 'default value'
-
- def run(self):
- self._record.append('test_dist has run')
-
-
-class DistributionTestCase(support.TempdirManager,
- support.LoggingCatcher,
- support.EnvironRestorer,
- unittest.TestCase):
-
- restore_environ = ['HOME', 'PLAT']
-
- def setUp(self):
- super(DistributionTestCase, self).setUp()
- # XXX this is ugly, we should fix the functions to accept args
- # (defaulting to sys.argv)
- self.argv = sys.argv, sys.argv[:]
- del sys.argv[1:]
-
- def tearDown(self):
- sys.argv = self.argv[0]
- sys.argv[:] = self.argv[1]
- super(DistributionTestCase, self).tearDown()
-
- @unittest.skip('needs to be updated')
- def test_debug_mode(self):
- tmpdir = self.mkdtemp()
- setupcfg = os.path.join(tmpdir, 'setup.cfg')
- with open(setupcfg, "w") as f:
- f.write("[global]\n")
- f.write("command_packages = foo.bar, splat")
-
- files = [setupcfg]
- sys.argv.append("build")
- __, stdout = captured_stdout(create_distribution, files)
- self.assertEqual(stdout, '')
- # XXX debug mode does not exist anymore, test logging levels in this
- # test instead
- packaging.dist.DEBUG = True
- try:
- __, stdout = captured_stdout(create_distribution, files)
- self.assertEqual(stdout, '')
- finally:
- packaging.dist.DEBUG = False
-
- def test_bad_attr(self):
- Distribution(attrs={'author': 'xxx',
- 'name': 'xxx',
- 'version': '1.2',
- 'home_page': 'xxxx',
- 'badoptname': 'xxx'})
- logs = self.get_logs()
- self.assertEqual(len(logs), 1)
- self.assertIn('unknown argument', logs[0])
-
- def test_empty_options(self):
- # an empty options dictionary should not stay in the
- # list of attributes
- dist = Distribution(attrs={'author': 'xxx', 'name': 'xxx',
- 'version': '1.2', 'home_page': 'xxxx',
- 'options': {}})
-
- self.assertEqual(self.get_logs(), [])
- self.assertNotIn('options', dir(dist))
-
- def test_non_empty_options(self):
- # TODO: how to actually use options is not documented except
- # for a few cryptic comments in dist.py. If this is to stay
- # in the public API, it deserves some better documentation.
-
- # Here is an example of how it's used out there:
- # http://svn.pythonmac.org/py2app/py2app/trunk/doc/
- # index.html#specifying-customizations
- dist = Distribution(attrs={'author': 'xxx',
- 'name': 'xxx',
- 'version': 'xxx',
- 'home_page': 'xxxx',
- 'options': {'sdist': {'owner': 'root'}}})
-
- self.assertIn('owner', dist.get_option_dict('sdist'))
-
- def test_finalize_options(self):
- attrs = {'keywords': 'one,two',
- 'platform': 'one,two'}
-
- dist = Distribution(attrs=attrs)
- dist.finalize_options()
-
- # finalize_option splits platforms and keywords
- self.assertEqual(dist.metadata['platform'], ['one', 'two'])
- self.assertEqual(dist.metadata['keywords'], ['one', 'two'])
-
- def test_custom_pydistutils(self):
- # Bug #2166: make sure pydistutils.cfg is found
- if os.name == 'posix':
- user_filename = ".pydistutils.cfg"
- else:
- user_filename = "pydistutils.cfg"
-
- temp_dir = self.mkdtemp()
- user_filename = os.path.join(temp_dir, user_filename)
- with open(user_filename, 'w') as f:
- f.write('.')
-
- dist = Distribution()
-
- os.environ['HOME'] = temp_dir
- files = dist.find_config_files()
- self.assertIn(user_filename, files)
-
- def test_find_config_files_disable(self):
- # Bug #1180: Allow users to disable their own config file.
- temp_home = self.mkdtemp()
- if os.name == 'posix':
- user_filename = os.path.join(temp_home, ".pydistutils.cfg")
- else:
- user_filename = os.path.join(temp_home, "pydistutils.cfg")
-
- with open(user_filename, 'w') as f:
- f.write('[distutils2]\n')
-
- def _expander(path):
- return temp_home
-
- old_expander = os.path.expanduser
- os.path.expanduser = _expander
- try:
- d = packaging.dist.Distribution()
- all_files = d.find_config_files()
-
- d = packaging.dist.Distribution(attrs={'script_args':
- ['--no-user-cfg']})
- files = d.find_config_files()
- finally:
- os.path.expanduser = old_expander
-
- # make sure --no-user-cfg disables the user cfg file
- self.assertEqual((len(all_files) - 1), len(files))
-
- def test_special_hooks_parsing(self):
- temp_home = self.mkdtemp()
- config_files = [os.path.join(temp_home, "config1.cfg"),
- os.path.join(temp_home, "config2.cfg")]
-
- # Store two aliased hooks in config files
- self.write_file((temp_home, "config1.cfg"),
- '[test_dist]\npre-hook.a = type')
- self.write_file((temp_home, "config2.cfg"),
- '[test_dist]\npre-hook.b = type')
-
- use_command(self, 'packaging.tests.test_dist.test_dist')
-
- dist = create_distribution(config_files)
- cmd = dist.get_command_obj("test_dist")
- self.assertEqual(cmd.pre_hook, {"a": 'type', "b": 'type'})
-
- def test_hooks_get_run(self):
- temp_home = self.mkdtemp()
- module_name = os.path.split(temp_home)[-1]
- pyname = '%s.py' % module_name
- config_file = os.path.join(temp_home, "config1.cfg")
- hooks_module = os.path.join(temp_home, pyname)
-
- self.write_file(config_file, textwrap.dedent('''\
- [test_dist]
- pre-hook.test = %(modname)s.log_pre_call
- post-hook.test = %(modname)s.log_post_call'''
- % {'modname': module_name}))
-
- self.write_file(hooks_module, textwrap.dedent('''\
- record = []
-
- def log_pre_call(cmd):
- record.append('pre-%s' % cmd.get_command_name())
-
- def log_post_call(cmd):
- record.append('post-%s' % cmd.get_command_name())
- '''))
-
- use_command(self, 'packaging.tests.test_dist.test_dist')
- d = create_distribution([config_file])
- cmd = d.get_command_obj("test_dist")
-
- # prepare the call recorders
- sys.path.append(temp_home)
- self.addCleanup(sys.path.remove, temp_home)
- self.addCleanup(unload, module_name)
- record = __import__(module_name).record
-
- cmd.run = lambda: record.append('run')
- cmd.finalize_options = lambda: record.append('finalize')
- d.run_command('test_dist')
-
- self.assertEqual(record, ['finalize',
- 'pre-test_dist',
- 'run',
- 'post-test_dist'])
-
- def test_hooks_importable(self):
- temp_home = self.mkdtemp()
- config_file = os.path.join(temp_home, "config1.cfg")
-
- self.write_file(config_file, textwrap.dedent('''\
- [test_dist]
- pre-hook.test = nonexistent.dotted.name'''))
-
- use_command(self, 'packaging.tests.test_dist.test_dist')
- d = create_distribution([config_file])
- cmd = d.get_command_obj("test_dist")
- cmd.ensure_finalized()
-
- self.assertRaises(PackagingModuleError, d.run_command, 'test_dist')
-
- def test_hooks_callable(self):
- temp_home = self.mkdtemp()
- config_file = os.path.join(temp_home, "config1.cfg")
-
- self.write_file(config_file, textwrap.dedent('''\
- [test_dist]
- pre-hook.test = packaging.tests.test_dist.__doc__'''))
-
- use_command(self, 'packaging.tests.test_dist.test_dist')
- d = create_distribution([config_file])
- cmd = d.get_command_obj("test_dist")
- cmd.ensure_finalized()
-
- self.assertRaises(PackagingOptionError, d.run_command, 'test_dist')
-
-
-def test_suite():
- return unittest.makeSuite(DistributionTestCase)
-
-if __name__ == "__main__":
- unittest.main(defaultTest="test_suite")