[Django] #32808: DiscoverRunner.build_suite() does not restore self.test_loader.testNamePatterns

13 views
Skip to first unread message

Django

unread,
Jun 2, 2021, 1:30:12 AM6/2/21
to django-...@googlegroups.com
#32808: DiscoverRunner.build_suite() does not restore
self.test_loader.testNamePatterns
---------------------------------------------+------------------------
Reporter: Chris Jerdonek | Owner: nobody
Type: Bug | Status: new
Component: Testing framework | Version: 3.2
Severity: Normal | Keywords:
Triage Stage: Unreviewed | Has patch: 0
Needs documentation: 0 | Needs tests: 0
Patch needs improvement: 0 | Easy pickings: 0
UI/UX: 0 |
---------------------------------------------+------------------------
`DiscoverRunner.build_suite()` does not restore
`self.test_loader.testNamePatterns` after setting it in this line:
https://github.com/django/django/blob/e703b152c6148ddda1b072a4353e9a41dca87f90/django/test/runner.py#L639

I noticed this issue when finding a test isolation issue while working on
#24522. The test
`test_runner.test_discover_runner.DiscoverRunnerTests.test_name_patterns`
passes `test_name_patterns` to `DiscoverRunner`:
https://github.com/django/django/blob/e703b152c6148ddda1b072a4353e9a41dca87f90/tests/test_runner/test_discover_runner.py#L119-L122

And this causes some later tests to fail.

--
Ticket URL: <https://code.djangoproject.com/ticket/32808>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.

Django

unread,
Jun 2, 2021, 1:43:46 AM6/2/21
to django-...@googlegroups.com
#32808: DiscoverRunner.build_suite() does not restore
self.test_loader.testNamePatterns
-----------------------------------+------------------------------------

Reporter: Chris Jerdonek | Owner: nobody
Type: Bug | Status: new
Component: Testing framework | Version: 3.2
Severity: Normal | Resolution:
Keywords: | Triage Stage: Accepted

Has patch: 0 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
-----------------------------------+------------------------------------
Changes (by Mariusz Felisiak):

* stage: Unreviewed => Accepted


Comment:

Good catch! A minimal set of tests to reproduce:
{{{
./runtests.py
test_runner.test_discover_runner.DiscoverRunnerTests.test_name_patterns
test_runner.tests.TestSuiteTests --parallel=1
}}}

--
Ticket URL: <https://code.djangoproject.com/ticket/32808#comment:1>

Django

unread,
Jun 2, 2021, 1:54:52 AM6/2/21
to django-...@googlegroups.com
#32808: DiscoverRunner.build_suite() does not restore
self.test_loader.testNamePatterns
-----------------------------------+------------------------------------

Reporter: Chris Jerdonek | Owner: nobody
Type: Bug | Status: new
Component: Testing framework | Version: 3.2
Severity: Normal | Resolution:
Keywords: | Triage Stage: Accepted
Has patch: 0 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
-----------------------------------+------------------------------------

Comment (by Chris Jerdonek):

Thanks! Yes, or even smaller--

{{{
$ ./runtests.py
test_runner.test_discover_runner.DiscoverRunnerTests.test_name_patterns
test_runner.tests.TestSuiteTests.test_iter_test_cases_mixed_test_suite_classes
}}}

--
Ticket URL: <https://code.djangoproject.com/ticket/32808#comment:2>

Django

unread,
Jun 2, 2021, 7:26:49 AM6/2/21
to django-...@googlegroups.com
#32808: DiscoverRunner.build_suite() does not restore
self.test_loader.testNamePatterns
-------------------------------------+-------------------------------------
Reporter: Chris Jerdonek | Owner: Mariusz
| Felisiak
Type: Bug | Status: assigned

Component: Testing framework | Version: 3.2
Severity: Normal | Resolution:
Keywords: | Triage Stage: Accepted
Has patch: 0 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------
Changes (by Mariusz Felisiak):

* owner: nobody => Mariusz Felisiak
* status: new => assigned


--
Ticket URL: <https://code.djangoproject.com/ticket/32808#comment:3>

Django

unread,
Jun 2, 2021, 7:33:00 AM6/2/21
to django-...@googlegroups.com
#32808: DiscoverRunner.build_suite() does not restore
self.test_loader.testNamePatterns
-------------------------------------+-------------------------------------
Reporter: Chris Jerdonek | Owner: Mariusz
| Felisiak
Type: Bug | Status: assigned
Component: Testing framework | Version: 3.2
Severity: Normal | Resolution:
Keywords: | Triage Stage: Accepted
Has patch: 1 | Needs documentation: 0

Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------
Changes (by Mariusz Felisiak):

* has_patch: 0 => 1


Comment:

[https://github.com/django/django/pull/14478 PR]

--
Ticket URL: <https://code.djangoproject.com/ticket/32808#comment:4>

Django

unread,
Jun 3, 2021, 2:59:53 AM6/3/21
to django-...@googlegroups.com
#32808: DiscoverRunner.build_suite() does not restore
self.test_loader.testNamePatterns
-------------------------------------+-------------------------------------
Reporter: Chris Jerdonek | Owner: Mariusz
| Felisiak
Type: Bug | Status: closed

Component: Testing framework | Version: 3.2
Severity: Normal | Resolution: fixed
Keywords: | Triage Stage: Accepted
Has patch: 1 | Needs documentation: 0

Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------
Changes (by GitHub <noreply@…>):

* status: assigned => closed
* resolution: => fixed


Comment:

In [changeset:"62e8f369c3bdb7dbfe76d128437c0a9c0715a067" 62e8f369]:
{{{
#!CommitTicketReference repository=""
revision="62e8f369c3bdb7dbfe76d128437c0a9c0715a067"
Fixed #32808 -- Prevented DiscoverRunner.build_suite() from mutating test
loader patterns.

Thanks Chris Jerdonek for the report and reviews.
}}}

--
Ticket URL: <https://code.djangoproject.com/ticket/32808#comment:5>

Reply all
Reply to author
Forward
0 new messages