Repository navigation
Multiple test modules fail to run if invoked directly #90583
Copy link
Copy link
Closed
Labels
3.10 (EOL)end of lifeend of life3.11only security fixesonly security fixes3.9 (EOL)end of lifeend of lifetestsTests in the Lib/test dirTests in the Lib/test dirtype-bugAn unexpected behavior, bug, or errorAn unexpected behavior, bug, or error
Description
Note: these values reflect the state of the issue at the time it was migrated and might not reflect the current state.
Show more details
GitHub fields:
assignee = None
closed_at = None
created_at = <Date 2022-01-18.18:41:39.303>
labels = ['type-bug', 'tests', '3.9', '3.10', '3.11']
title = 'Multiple test modules fail to run if invoked directly'
updated_at = <Date 2022-01-23.02:38:46.011>
user = 'https://github.com/sobolevn'bugs.python.org fields:
activity = <Date 2022-01-23.02:38:46.011>
actor = 'jaraco'
assignee = 'none'
closed = False
closed_date = None
closer = None
components = ['Tests']
creation = <Date 2022-01-18.18:41:39.303>
creator = 'sobolevn'
dependencies = []
files = []
hgrepos = []
issue_num = 46425
keywords = ['patch']
message_count = 18.0
messages = ['410879', '410880', '410881', '410886', '410887', '410911', '410924', '410999', '411000', '411088', '411247', '411250', '411252', '411264', '411265', '411266', '411267', '411334']
nosy_count = 9.0
nosy_names = ['terry.reedy', 'jaraco', 'asvetlov', 'ethan.furman', 'zach.ware', 'serhiy.storchaka', 'corona10', 'miss-islington', 'sobolevn']
pr_nums = ['30666', '30676', '30681', '30682', '30699', '30700', '30725', '30746', '30782', '30783', '30792', '30799', '30800', '30802', '30803']
priority = 'normal'
resolution = None
stage = 'patch review'
status = 'open'
superseder = None
type = 'behavior'
url = 'https://bugs.python.org/issue46425'
versions = ['Python 3.9', 'Python 3.10', 'Python 3.11']Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
3.10 (EOL)end of lifeend of life3.11only security fixesonly security fixes3.9 (EOL)end of lifeend of lifetestsTests in the Lib/test dirTests in the Lib/test dirtype-bugAn unexpected behavior, bug, or errorAn unexpected behavior, bug, or error
Activity
sobolevn commentedon Jan 18, 2022
While working on a similar issue for
test_typing.py(https://bugs.python.org/issue46416) I wondered: how many other modules also have this problem?So, after several hours of local testing, I got several problems:
Lib/test/test_compileall.py
Uses relative
.import that cannot be resolvedLib/test/test_distutils.py
Is missing
import unittestto rununittest.main()Lib/test/test_dtrace.py
Calls undefined
test_main()instead ofunittest.main()Lib/test/test_tools/test_freeze.py
Uses relative
.import that cannot be resolvedLib/test/test_zipfile64.py
Imports undefined
from test.support import TESTFNLib/unittest/test/test_program.py
Uses relative
.import that cannot be resolvedProbably there are other problems, because I haven't checked:
test_importlib, because it has a lot of failure (I don't know how to fix them yet)__qualname__with module namesTo keep PRs reviews sane, I will include changes for several modules and split this big task of checking all test modules into several consecutive and rather simple pull requests.
The first one with the problems described above is on its way!
ethanfurman commentedon Jan 18, 2022
I suggest your grouping of PRs be by error type -- so have batches of "relative import" fixes and batches of "TESTFN" fixes, etc.
serhiy-storchaka commentedon Jan 18, 2022
New changeset 1292aa6 by Nikita Sobolev in branch 'main':
bpo-46425: Fix direct invocation of multiple test modules (GH-30666)
1292aa6
sobolevn commentedon Jan 18, 2022
Thank you, Ethan. Good idea! Will do from the second PR.
Thanks for merging, Serhiy.
terryjreedy commentedon Jan 18, 2022
Nikita, thanks for doing this.
Ethan's suggestion has two advantages. 1. It would fix most backport issues. By containing a mix of changes, PR-30666 cannot be backported as is. 'unittest.main' should always backport unless there is a context conflict. But 3.9 does not have os.helper and TESTFN is still in test.support in 3.9 and that change cannot backport. (I did not check 3.10.)
I suggest you write a script to directly run each test.test_xyz file via subprocess and report to stdout. The test for this issue is a clean report. If you do so, I will run it on Windows in a fresh build of each of 3.9, 3.10, and 3.11.
Note that there are two possible commands: 'python -m test test_xyz' and 'python -m test.test_xyz'. They are subtly different. So I would add an option to do it each way.
With current 3.11, test_importlib runs fine on my Windows, with 1436 tests.
sobolevn commentedon Jan 18, 2022
Terry, yes I am using this script to run tests locally:
And this one to populate
files.txt:---
There are several other problems that I have to fix manually. For example, module-level
raise unittest.case.SkipTest():I am not sure what is the proper solution to this one 🤔
Probably, I will update my script for more advanced Python-based one and ignore this exception.
In the end, I expect to run this script without any failures. This is going to be a great result!
---
I will also check that all possible modes
python -m test test_xyz/python -m test.test_xyz/python [Lib/test/test_xyz.py](https://github.com/python/cpython/blob/main/Lib/test/test_xyz.py)are supported.---
Also, thank you for listing concrete problems with my first submission. The second one is bound to a single problem and a single submodule.
sobolevn commentedon Jan 19, 2022
Important note, in practice there's also a difference in how one calls some test module:
Example of a test failure because of that: #30681
corona10 commentedon Jan 20, 2022
New changeset 8105dd2 by Nikita Sobolev in branch '3.9':
[3.9] bpo-46425: Fix direct invocation of multiple test modules (GH-30666) (GH-30700)
8105dd2
corona10 commentedon Jan 20, 2022
New changeset a6a0885 by Nikita Sobolev in branch '3.10':
[3.10] bpo-46425: Fix direct invocation of multiple test modules (GH-30666) (GH-30699)
a6a0885
serhiy-storchaka commentedon Jan 21, 2022
New changeset 22f73bd by Nikita Sobolev in branch 'main':
bpo-46425: Fix direct invocation of
test_contextlib(GH-30681)22f73bd
asvetlov commentedon Jan 22, 2022
New changeset 5a53400 by Nikita Sobolev in branch 'main':
bpo-46425: fix direct invocation of
asynciotests (bpo-30725)5a53400
miss-islington commentedon Jan 22, 2022
New changeset 3c4a374 by Miss Islington (bot) in branch '3.9':
bpo-46425: fix direct invocation of
asynciotests (GH-30725)3c4a374
asvetlov commentedon Jan 22, 2022
New changeset 6111d5d by Miss Islington (bot) in branch '3.10':
bpo-46425: fix direct invocation of
asynciotests (GH-30725) (bpo-30782)6111d5d
asvetlov commentedon Jan 22, 2022
New changeset 101a184 by Nikita Sobolev in branch 'main':
bpo-46425: fix direct invocation of
test_traceback(GH-30746)101a184
asvetlov commentedon Jan 22, 2022
New changeset 55f4ec4 by Nikita Sobolev in branch 'main':
bpo-46425: use absolute imports in
test_sqlite3(GH-30676)55f4ec4
asvetlov commentedon Jan 22, 2022
New changeset 57316c5 by Nikita Sobolev in branch 'main':
bpo-46425: fix direct invocation of
test_importlib(GH-30682)57316c5
asvetlov commentedon Jan 22, 2022
New changeset 1f8014c by Nikita Sobolev in branch 'main':
bpo-46425: fix direct invocation of
test_fileutilsandtest_zoneinfo(GH-30792)1f8014c
jaraco commentedon Jan 23, 2022
New changeset d888ff5 by Jason R. Coombs in branch 'main':
bpo-46425: Partially revert "bpo-46425: fix direct invocation of
test_importlib(GH-30682)" (GH-30799)d888ff5
kumaraditya303 commentedon Apr 16, 2022
@sobolevn Is this fixed now or are there more modules left?