summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorBaptiste Mispelon <bmispelon@gmail.com>2019-11-30 22:10:16 +0100
committerMariusz Felisiak <felisiak.mariusz@gmail.com>2019-12-09 13:47:12 +0100
commit9e565386d3fafc8cc15d07095e50d574e5f53802 (patch)
tree230529a4e6c62c4e90e7e05f8561e4f2481fcf80 /tests
parentf46452638885d89cacfca6831e0b9982c87b6527 (diff)
Fixed #27430 -- Added -b/--buffer option to DiscoverRunner.
Diffstat (limited to 'tests')
-rwxr-xr-xtests/runtests.py9
-rw-r--r--tests/test_runner/test_discover_runner.py30
-rw-r--r--tests/test_runner_apps/buffer/tests_buffer.py14
3 files changed, 50 insertions, 3 deletions
diff --git a/tests/runtests.py b/tests/runtests.py
index 293396f96c..1282538a6d 100755
--- a/tests/runtests.py
+++ b/tests/runtests.py
@@ -281,7 +281,7 @@ class ActionSelenium(argparse.Action):
def django_tests(verbosity, interactive, failfast, keepdb, reverse,
test_labels, debug_sql, parallel, tags, exclude_tags,
- test_name_patterns, start_at, start_after, pdb):
+ test_name_patterns, start_at, start_after, pdb, buffer):
state = setup(verbosity, test_labels, parallel, start_at, start_after)
extra_tests = []
@@ -302,6 +302,7 @@ def django_tests(verbosity, interactive, failfast, keepdb, reverse,
exclude_tags=exclude_tags,
test_name_patterns=test_name_patterns,
pdb=pdb,
+ buffer=buffer,
)
failures = test_runner.run_tests(
test_labels or get_installed(),
@@ -497,6 +498,10 @@ if __name__ == "__main__":
'--pdb', action='store_true',
help='Runs the PDB debugger on error or failure.'
)
+ parser.add_argument(
+ '-b', '--buffer', action='store_true',
+ help='Discard output of passing tests.',
+ )
if PY37:
parser.add_argument(
'-k', dest='test_name_patterns', action='append',
@@ -563,7 +568,7 @@ if __name__ == "__main__":
options.debug_sql, options.parallel, options.tags,
options.exclude_tags,
getattr(options, 'test_name_patterns', None),
- options.start_at, options.start_after, options.pdb,
+ options.start_at, options.start_after, options.pdb, options.buffer,
)
if failures:
sys.exit(1)
diff --git a/tests/test_runner/test_discover_runner.py b/tests/test_runner/test_discover_runner.py
index 2334fe6b7f..186dc52a44 100644
--- a/tests/test_runner/test_discover_runner.py
+++ b/tests/test_runner/test_discover_runner.py
@@ -6,7 +6,7 @@ from unittest import TestSuite, TextTestRunner, defaultTestLoader, skipUnless
from django.db import connections
from django.test import SimpleTestCase
from django.test.runner import DiscoverRunner
-from django.test.utils import captured_stdout
+from django.test.utils import captured_stderr, captured_stdout
from django.utils.version import PY37
@@ -269,6 +269,34 @@ class DiscoverRunnerTests(SimpleTestCase):
with self.assertRaisesMessage(ValueError, msg):
DiscoverRunner(pdb=True, parallel=2)
+ def test_buffer_with_parallel(self):
+ msg = (
+ 'You cannot use -b/--buffer with parallel tests; pass '
+ '--parallel=1 to use it.'
+ )
+ with self.assertRaisesMessage(ValueError, msg):
+ DiscoverRunner(buffer=True, parallel=2)
+
+ def test_buffer_mode_test_pass(self):
+ runner = DiscoverRunner(buffer=True, verbose=0)
+ with captured_stdout() as stdout, captured_stderr() as stderr:
+ suite = runner.build_suite([
+ 'test_runner_apps.buffer.tests_buffer.WriteToStdoutStderrTestCase.test_pass',
+ ])
+ runner.run_suite(suite)
+ self.assertNotIn('Write to stderr.', stderr.getvalue())
+ self.assertNotIn('Write to stdout.', stdout.getvalue())
+
+ def test_buffer_mode_test_fail(self):
+ runner = DiscoverRunner(buffer=True, verbose=0)
+ with captured_stdout() as stdout, captured_stderr() as stderr:
+ suite = runner.build_suite([
+ 'test_runner_apps.buffer.tests_buffer.WriteToStdoutStderrTestCase.test_fail',
+ ])
+ runner.run_suite(suite)
+ self.assertIn('Write to stderr.', stderr.getvalue())
+ self.assertIn('Write to stdout.', stdout.getvalue())
+
class DiscoverRunnerGetDatabasesTests(SimpleTestCase):
runner = DiscoverRunner(verbosity=2)
diff --git a/tests/test_runner_apps/buffer/tests_buffer.py b/tests/test_runner_apps/buffer/tests_buffer.py
new file mode 100644
index 0000000000..36bc315d6d
--- /dev/null
+++ b/tests/test_runner_apps/buffer/tests_buffer.py
@@ -0,0 +1,14 @@
+import sys
+from unittest import TestCase
+
+
+class WriteToStdoutStderrTestCase(TestCase):
+ def test_pass(self):
+ sys.stderr.write('Write to stderr.')
+ sys.stdout.write('Write to stdout.')
+ self.assertTrue(True)
+
+ def test_fail(self):
+ sys.stderr.write('Write to stderr.')
+ sys.stdout.write('Write to stdout.')
+ self.assertTrue(False)