diff options
author | Éric Araujo <merwok@netwok.org> | 2011-10-06 03:28:56 (GMT) |
---|---|---|
committer | Éric Araujo <merwok@netwok.org> | 2011-10-06 03:28:56 (GMT) |
commit | 6fd287e6c2024206c07d336b86edb10c3a17c4ef (patch) | |
tree | 76abed7372dee58220d2abce7d1d97ab81d10fe6 /Lib/packaging | |
parent | 8ed34a130ea8c30b98bf45eaed8ffa68e7e6ed71 (diff) | |
download | cpython-6fd287e6c2024206c07d336b86edb10c3a17c4ef.zip cpython-6fd287e6c2024206c07d336b86edb10c3a17c4ef.tar.gz cpython-6fd287e6c2024206c07d336b86edb10c3a17c4ef.tar.bz2 |
Fix return code of “pysetup run COMMAND” (closes #12222)
Diffstat (limited to 'Lib/packaging')
-rw-r--r-- | Lib/packaging/run.py | 5 | ||||
-rw-r--r-- | Lib/packaging/tests/test_uninstall.py | 30 |
2 files changed, 19 insertions, 16 deletions
diff --git a/Lib/packaging/run.py b/Lib/packaging/run.py index 5affb17..59ad6ee 100644 --- a/Lib/packaging/run.py +++ b/Lib/packaging/run.py @@ -283,10 +283,11 @@ def _run(dispatcher, args, **kw): dist.parse_config_files() for cmd in dispatcher.commands: + # FIXME need to catch MetadataMissingError here (from the check command + # e.g.)--or catch any exception, print an error message and exit with 1 dist.run_command(cmd, dispatcher.command_options[cmd]) - # XXX this is crappy - return dist + return 0 @action_help("""\ diff --git a/Lib/packaging/tests/test_uninstall.py b/Lib/packaging/tests/test_uninstall.py index 49fcb42..8f094f4 100644 --- a/Lib/packaging/tests/test_uninstall.py +++ b/Lib/packaging/tests/test_uninstall.py @@ -4,12 +4,9 @@ import sys import logging import packaging.util -from io import StringIO -from packaging.run import main from packaging.errors import PackagingError from packaging.install import remove from packaging.database import disable_cache, enable_cache -from packaging.command.install_dist import install_dist from packaging.tests import unittest, support @@ -47,16 +44,12 @@ class UninstallTestCase(support.TempdirManager, packaging.util._path_created.clear() super(UninstallTestCase, self).tearDown() - def run_setup(self, *args): - # run setup with args - args = ['run'] + list(args) - dist = main(args) - return dist - def get_path(self, dist, name): - cmd = install_dist(dist) - cmd.prefix = self.root_dir - cmd.finalize_options() + # the dist argument must contain an install_dist command correctly + # initialized with a prefix option and finalized befored this method + # can be called successfully; practically, this means that you should + # call self.install_dist before self.get_path + cmd = dist.get_command_obj('install_dist') return getattr(cmd, 'install_' + name) def make_dist(self, name='Foo', **kw): @@ -83,8 +76,17 @@ class UninstallTestCase(support.TempdirManager, if not dirname: dirname = self.make_dist(name, **kw) os.chdir(dirname) - sys.stderr = StringIO() - dist = self.run_setup('install_dist', '--prefix=' + self.root_dir) + + dist = support.TestDistribution() + # for some unfathomable reason, the tests will fail horribly if the + # parse_config_files method is not called, even if it doesn't do + # anything useful; trying to build and use a command object manually + # also fails + dist.parse_config_files() + dist.finalize_options() + dist.run_command('install_dist', + {'prefix': ('command line', self.root_dir)}) + site_packages = self.get_path(dist, 'purelib') return dist, site_packages |