﻿id	summary	reporter	owner	description	type	status	component	version	severity	resolution	keywords	cc	stage	has_patch	needs_docs	needs_tests	needs_better_patch	easy	ui_ux
32914	DiscoverRunner doesn't always group tests by class	Chris Jerdonek	Chris Jerdonek	"The following is an issue that has been present in the test runner since before I started working on this area of the code this year (e.g. since this commit: https://github.com/django/django/tree/ec0ff406311de88f4e2a135d784363424fe602aa ), but I hadn't taken time to report it until now.

Namely, if tests are provided to the test runner on the command-line that aren't already grouped by test-case class, then `DiscoverRunner` won't group them by test-case class.

Here is an example (class A, class B, then class A again):

{{{
$ ./tests/runtests.py test_runner.tests.DependencyOrderingTests.test_simple_dependencies test_runner.tests.ManageCommandTests.test_custom_test_runner test_runner.tests.DependencyOrderingTests.test_chained_dependencies -v3 

Testing against Django installed in '/.../django/django'
Importing application test_runner
Found 3 test(s).
Skipping setup of unused database(s): default, other.
System check identified no issues (0 silenced).
test_simple_dependencies (test_runner.tests.DependencyOrderingTests) ... ok
test_custom_test_runner (test_runner.tests.ManageCommandTests) ... ok
test_chained_dependencies (test_runner.tests.DependencyOrderingTests) ... ok

----------------------------------------------------------------------
Ran 3 tests in 0.002s

OK
}}}

This can interfere with things like parallel tests, which assume the tests are grouped by class, as well as the new shuffling code. 

This can be fixed in [https://github.com/django/django/blob/f42ccdd835e5b3f0914b5e6f87621c648136ea36/django/test/runner.py#L987-L1015 reorder_tests()], which already iterates over all tests, as it has logic to group tests by test type and remove duplicates.
"	Cleanup/optimization	closed	Testing framework	dev	Normal	fixed			Ready for checkin	1	0	0	0	0	0
