Ticket #15675: ticket15675-5.patch
File ticket15675-5.patch, 6.2 KB (added by , 14 years ago) |
---|
-
AUTHORS
diff --git a/AUTHORS b/AUTHORS index ddd3cf8..02ea713 100644
a b answer newbie questions, and generally made Django that much better: 533 533 Jarek Zgoda <jarek.zgoda@gmail.com> 534 534 Cheng Zhang 535 535 Zlatko Mašek <zlatko.masek@gmail.com> 536 Mikołaj Siedlarek <mikolaj.siedlarek@gmail.com> 536 537 537 538 A big THANK YOU goes to: 538 539 -
django/core/management/commands/test.py
diff --git a/django/core/management/commands/test.py b/django/core/management/commands/test.py index 1be1e1e..0e265ca 100644
a b 1 1 from django.core.management.base import BaseCommand 2 from django.test.utils import get_runner 3 from django.conf import settings 2 4 from optparse import make_option 3 5 import sys 4 6 7 TestRunner = get_runner(settings) 8 5 9 class Command(BaseCommand): 6 10 option_list = BaseCommand.option_list + ( 7 11 make_option('--noinput', action='store_false', dest='interactive', default=True, 8 12 help='Tells Django to NOT prompt the user for input of any kind.'), 9 13 make_option('--failfast', action='store_true', dest='failfast', default=False, 10 14 help='Tells Django to stop running the test suite after first failed test.') 11 ) 15 ) + getattr(TestRunner, 'option_list', ()) 12 16 help = 'Runs the test suite for the specified applications, or the entire site if no apps are specified.' 13 17 args = '[appname ...]' 14 18 15 19 requires_model_validation = False 16 20 17 21 def handle(self, *test_labels, **options): 18 from django.conf import settings 19 from django.test.utils import get_runner 20 21 verbosity = int(options.get('verbosity', 1)) 22 interactive = options.get('interactive', True) 23 failfast = options.get('failfast', False) 24 TestRunner = get_runner(settings) 22 options['verbosity'] = int(options.get('verbosity', 1)) 23 options.setdefault('interactive', True) 24 options.setdefault('failfast', False) 25 25 26 test_runner = TestRunner( verbosity=verbosity, interactive=interactive, failfast=failfast)26 test_runner = TestRunner(**options) 27 27 failures = test_runner.run_tests(test_labels) 28 28 29 29 if failures: -
docs/topics/testing.txt
diff --git a/docs/topics/testing.txt b/docs/topics/testing.txt index fb9f6e5..adbdae8 100644
a b set up, execute and tear down the test suite. 1645 1645 write your own test runner, ensure accept and handle the ``**kwargs`` 1646 1646 parameter. 1647 1647 1648 .. versionadded:: development 1649 1650 Your test runner may define some command-line options which will be fed 1651 into ``test`` management command's ``OptionParser``. If you need such 1652 functionality, see the ``option_list`` attribute. Options you declare 1653 will be provided to your test runner's constructor as additional keyword 1654 arguments. 1655 1656 Attributes 1657 ~~~~~~~~~~ 1658 1659 .. versionadded:: development 1660 1661 .. attribute:: DjangoTestSuiteRunner.option_list 1662 1663 This is the tuple of ``optparse`` options which will be fed into the management 1664 command's ``OptionParser`` for parsing arguments. 1665 1666 Methods 1667 ~~~~~~~ 1668 1648 1669 .. method:: DjangoTestSuiteRunner.run_tests(test_labels, extra_tests=None, **kwargs) 1649 1670 1650 1671 Run the test suite. -
tests/regressiontests/test_runner/tests.py
diff --git a/tests/regressiontests/test_runner/tests.py b/tests/regressiontests/test_runner/tests.py index b3d6475..6ec2deb 100644
a b Tests for django test runner 3 3 """ 4 4 import StringIO 5 5 import warnings 6 from optparse import make_option 6 7 7 8 from django.core.exceptions import ImproperlyConfigured 8 9 from django.test import simple 9 10 from django.test.utils import get_warnings_state, restore_warnings_state 10 11 from django.utils import unittest 11 12 13 from regressiontests.admin_scripts.tests import AdminScriptTestCase 12 14 13 15 class DjangoTestRunnerTests(unittest.TestCase): 14 16 def setUp(self): … … class DependencyOrderingTests(unittest.TestCase): 128 130 129 131 self.assertRaises(ImproperlyConfigured, simple.dependency_ordered, raw, dependencies=dependencies) 130 132 133 class CustomOptionsTestRunner(simple.DjangoTestSuiteRunner): 134 option_list = ( 135 make_option('--option_a','-a', action='store', dest='option_a', default='1'), 136 make_option('--option_b','-b', action='store', dest='option_b', default='2'), 137 make_option('--option_c','-c', action='store', dest='option_c', default='3'), 138 ) 139 140 def __init__(self, verbosity=1, interactive=True, failfast=True, option_a=None, option_b=None, option_c=None, **kwargs): 141 super(CustomOptionsTestRunner, self).__init__(verbosity=verbosity, interactive=interactive, 142 failfast=failfast) 143 self.option_a = option_a 144 self.option_b = option_b 145 self.option_c = option_c 146 147 def run_tests(self, test_labels, extra_tests=None, **kwargs): 148 print "%s:%s:%s" % (self.option_a, self.option_b, self.option_c) 149 150 class CustomTestRunnerOptionsTests(AdminScriptTestCase): 151 152 def setUp(self): 153 settings = { 154 'TEST_RUNNER': '\'regressiontests.test_runner.tests.CustomOptionsTestRunner\'', 155 } 156 self.write_settings('settings.py', sdict=settings) 157 158 def tearDown(self): 159 self.remove_settings('settings.py') 160 161 def test_default_options(self): 162 args = ['test', '--settings=settings'] 163 out, err = self.run_django_admin(args) 164 self.assertNoOutput(err) 165 self.assertOutput(out, '1:2:3') 166 167 def test_default_and_given_options(self): 168 args = ['test', '--settings=settings', '--option_b=foo'] 169 out, err = self.run_django_admin(args) 170 self.assertNoOutput(err) 171 self.assertOutput(out, '1:foo:3') 172 173 def test_option_name_and_value_separated(self): 174 args = ['test', '--settings=settings', '--option_b', 'foo'] 175 out, err = self.run_django_admin(args) 176 self.assertNoOutput(err) 177 self.assertOutput(out, '1:foo:3') 178 179 def test_all_options_given(self): 180 args = ['test', '--settings=settings', '--option_a=bar', '--option_b=foo', '--option_c=31337'] 181 out, err = self.run_django_admin(args) 182 self.assertNoOutput(err) 183 self.assertOutput(out, 'bar:foo:31337') 184