Kaydet (Commit) 6fd287e6 authored tarafından Éric Araujo's avatar Éric Araujo

Fix return code of “pysetup run COMMAND” (closes #12222)

üst 8ed34a13
...@@ -283,10 +283,11 @@ def _run(dispatcher, args, **kw): ...@@ -283,10 +283,11 @@ def _run(dispatcher, args, **kw):
dist.parse_config_files() dist.parse_config_files()
for cmd in dispatcher.commands: 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]) dist.run_command(cmd, dispatcher.command_options[cmd])
# XXX this is crappy return 0
return dist
@action_help("""\ @action_help("""\
......
...@@ -4,12 +4,9 @@ import sys ...@@ -4,12 +4,9 @@ import sys
import logging import logging
import packaging.util import packaging.util
from io import StringIO
from packaging.run import main
from packaging.errors import PackagingError from packaging.errors import PackagingError
from packaging.install import remove from packaging.install import remove
from packaging.database import disable_cache, enable_cache from packaging.database import disable_cache, enable_cache
from packaging.command.install_dist import install_dist
from packaging.tests import unittest, support from packaging.tests import unittest, support
...@@ -47,16 +44,12 @@ class UninstallTestCase(support.TempdirManager, ...@@ -47,16 +44,12 @@ class UninstallTestCase(support.TempdirManager,
packaging.util._path_created.clear() packaging.util._path_created.clear()
super(UninstallTestCase, self).tearDown() 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): def get_path(self, dist, name):
cmd = install_dist(dist) # the dist argument must contain an install_dist command correctly
cmd.prefix = self.root_dir # initialized with a prefix option and finalized befored this method
cmd.finalize_options() # 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) return getattr(cmd, 'install_' + name)
def make_dist(self, name='Foo', **kw): def make_dist(self, name='Foo', **kw):
...@@ -83,8 +76,17 @@ class UninstallTestCase(support.TempdirManager, ...@@ -83,8 +76,17 @@ class UninstallTestCase(support.TempdirManager,
if not dirname: if not dirname:
dirname = self.make_dist(name, **kw) dirname = self.make_dist(name, **kw)
os.chdir(dirname) 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') site_packages = self.get_path(dist, 'purelib')
return dist, site_packages return dist, site_packages
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment