Converted test management command to argparse

Keeping backwards compatibility with test_runner.option_list is
tricky and would imply transforming an optparse.Option to an
argparse.Action. I choose to introduce a backwards incompatible
change because it only affects testing, not runtime behavior.
This commit is contained in:
Claude Paroz 2014-06-06 20:12:23 +02:00
parent cbff097bd9
commit 4b4524291a
5 changed files with 86 additions and 50 deletions

View file

@ -294,6 +294,17 @@ you don't have to keep compatibility with older Django versions, it's better to
implement the new :meth:`~django.core.management.BaseCommand.add_arguments`
method as described in :doc:`/howto/custom-management-commands`.
Custom test management command arguments through test runner
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
The method to add custom arguments to the `test` management command through the
test runner has changed. Previously, you could provide an `option_list` class
variable on the test runner to add more arguments (à la :py:mod:`optparse`).
Now to implement the same behavior, you have to create an
``add_arguments(cls, parser)`` class method on the test runner and call
``parser.add_argument`` to add any custom arguments, as parser is now an
:py:class:`argparse.ArgumentParser` instance.
Miscellaneous
~~~~~~~~~~~~~

View file

@ -333,9 +333,15 @@ execute and tear down the test suite.
runner, ensure it accepts ``**kwargs``.
Your test runner may also define additional command-line options.
If you add an ``option_list`` attribute to a subclassed test runner,
those options will be added to the list of command-line options that
the :djadmin:`test` command can use.
Create or override an ``add_arguments(cls, parser)`` class method and add
custom arguments by calling ``parser.add_argument()`` inside the method, so
that the :djadmin:`test` command will be able to use those arguments.
.. versionchanged:: 1.8
Previously, you had to provide an ``option_list`` attribute to a
subclassed test runner to add options to the list of command-line
options that the :djadmin:`test` command could use.
Attributes
~~~~~~~~~~
@ -372,6 +378,12 @@ Attributes
management command's ``OptionParser`` for parsing arguments. See the
documentation for Python's ``optparse`` module for more details.
.. deprecated:: 1.8
You should now override the :meth:`~DiscoverRunner.add_arguments` class
method to add custom arguments accepted by the :djadmin:`test`
management command.
Methods
~~~~~~~
@ -389,6 +401,15 @@ Methods
This method should return the number of tests that failed.
.. classmethod:: DiscoverRunner.add_arguments(parser)
.. versionadded:: 1.8
Override this class method to add custom arguments accepted by the
:djadmin:`test` management command. See
:py:meth:`argparse.ArgumentParser.add_argument()` for details about adding
arguments to a parser.
.. method:: DiscoverRunner.setup_test_environment(**kwargs)
Sets up the test environment by calling