diff options
author | Éric Araujo <merwok@netwok.org> | 2012-02-09 13:29:11 (GMT) |
---|---|---|
committer | Éric Araujo <merwok@netwok.org> | 2012-02-09 13:29:11 (GMT) |
commit | 5c69b66086e9665b4e9afefa7854cbd966d386e4 (patch) | |
tree | d991bf0c9c1a51a971edb2bca1e061259b9f6f74 /Lib/packaging | |
parent | 1aa54a417d767efb2ebb4c1a31e69f7be9b1d6ae (diff) | |
download | cpython-5c69b66086e9665b4e9afefa7854cbd966d386e4.zip cpython-5c69b66086e9665b4e9afefa7854cbd966d386e4.tar.gz cpython-5c69b66086e9665b4e9afefa7854cbd966d386e4.tar.bz2 |
Group commands by topic in “pysetup run --list-commands” output.
This fixes a regression from distutils, where “setup.py --help-commands”
prints out commands grouped by topic (i.e. building vs. installing),
which is more useful than using sorted.
Diffstat (limited to 'Lib/packaging')
-rw-r--r-- | Lib/packaging/command/__init__.py | 50 | ||||
-rw-r--r-- | Lib/packaging/run.py | 9 | ||||
-rw-r--r-- | Lib/packaging/tests/test_run.py | 17 |
3 files changed, 40 insertions, 36 deletions
diff --git a/Lib/packaging/command/__init__.py b/Lib/packaging/command/__init__.py index cd34fc8..87227c0 100644 --- a/Lib/packaging/command/__init__.py +++ b/Lib/packaging/command/__init__.py @@ -6,38 +6,28 @@ from packaging.util import resolve_name __all__ = ['get_command_names', 'set_command', 'get_command_class', 'STANDARD_COMMANDS'] -_COMMANDS = { - 'check': 'packaging.command.check.check', - 'test': 'packaging.command.test.test', - 'build': 'packaging.command.build.build', - 'build_py': 'packaging.command.build_py.build_py', - 'build_ext': 'packaging.command.build_ext.build_ext', - 'build_clib': 'packaging.command.build_clib.build_clib', - 'build_scripts': 'packaging.command.build_scripts.build_scripts', - 'clean': 'packaging.command.clean.clean', - 'install_dist': 'packaging.command.install_dist.install_dist', - 'install_lib': 'packaging.command.install_lib.install_lib', - 'install_headers': 'packaging.command.install_headers.install_headers', - 'install_scripts': 'packaging.command.install_scripts.install_scripts', - 'install_data': 'packaging.command.install_data.install_data', - 'install_distinfo': - 'packaging.command.install_distinfo.install_distinfo', - 'sdist': 'packaging.command.sdist.sdist', - 'bdist': 'packaging.command.bdist.bdist', - 'bdist_dumb': 'packaging.command.bdist_dumb.bdist_dumb', - 'bdist_wininst': 'packaging.command.bdist_wininst.bdist_wininst', - 'register': 'packaging.command.register.register', - 'upload': 'packaging.command.upload.upload', - 'upload_docs': 'packaging.command.upload_docs.upload_docs', -} - -# XXX this is crappy + +STANDARD_COMMANDS = [ + # packaging + 'check', 'test', + # building + 'build', 'build_py', 'build_ext', 'build_clib', 'build_scripts', 'clean', + # installing + 'install_dist', 'install_lib', 'install_headers', 'install_scripts', + 'install_data', 'install_distinfo', + # distributing + 'sdist', 'bdist', 'bdist_dumb', 'bdist_wininst', + 'register', 'upload', 'upload_docs', + ] + if os.name == 'nt': - _COMMANDS['bdist_msi'] = 'packaging.command.bdist_msi.bdist_msi' + STANDARD_COMMANDS.insert(STANDARD_COMMANDS.index('bdist_wininst'), + 'bdist_msi') -# XXX use OrderedDict to preserve the grouping (build-related, install-related, -# distribution-related) -STANDARD_COMMANDS = set(_COMMANDS) +# XXX maybe we need more than one registry, so that --list-comands can display +# standard, custom and overriden standard commands differently +_COMMANDS = dict((name, 'packaging.command.%s.%s' % (name, name)) + for name in STANDARD_COMMANDS) def get_command_names(): diff --git a/Lib/packaging/run.py b/Lib/packaging/run.py index 4756f7c..c3600a7 100644 --- a/Lib/packaging/run.py +++ b/Lib/packaging/run.py @@ -254,16 +254,13 @@ def _run(dispatcher, args, **kw): parser = dispatcher.parser args = args[1:] - commands = STANDARD_COMMANDS # + extra commands + commands = STANDARD_COMMANDS # FIXME display extra commands if args == ['--list-commands']: print('List of available commands:') - cmds = sorted(commands) - - for cmd in cmds: + for cmd in commands: cls = dispatcher.cmdclass.get(cmd) or get_command_class(cmd) - desc = getattr(cls, 'description', - '(no description available)') + desc = getattr(cls, 'description', '(no description available)') print(' %s: %s' % (cmd, desc)) return diff --git a/Lib/packaging/tests/test_run.py b/Lib/packaging/tests/test_run.py index 84b9bf6..14e7b07 100644 --- a/Lib/packaging/tests/test_run.py +++ b/Lib/packaging/tests/test_run.py @@ -67,6 +67,23 @@ class RunTestCase(support.TempdirManager, self.assertGreater(out, b'') self.assertEqual(err, b'') + def test_list_commands(self): + status, out, err = assert_python_ok('-m', 'packaging.run', 'run', + '--list-commands') + # check that something is displayed + self.assertEqual(status, 0) + self.assertGreater(out, b'') + self.assertEqual(err, b'') + + # make sure the manual grouping of commands is respected + check_position = out.find(b' check: ') + build_position = out.find(b' build: ') + self.assertTrue(check_position, out) # "out" printed as debugging aid + self.assertTrue(build_position, out) + self.assertLess(check_position, build_position, out) + + # TODO test that custom commands don't break --list-commands + def test_suite(): return unittest.makeSuite(RunTestCase) |