gh-155648: In IDLE tests, call unittest.main without exit arg - #156249
Merged
Conversation
In idlelib.idle_test, test_xyz.py files should end with
```
if __name__ == '__main__':
unittest.main(verbosity=2, exit=0)
```
5 files add the possibly confusing `exit=2` ("why?"),
which is equivalent to the default `exit=True`.
4 files add `exit=False`. This is also nonsensical when there
is nothing more to run; main will immediately exit anyway.
When running the test from an IDLE editor, this argument
has no visible effect. However, A Claude-based
bug finder claims that in other circumstances (such as a program running
the test in a shell), the good test may falsely fail. Even if this is
not true, it can only confuse a reader.
|
Thanks @terryjreedy for the PR 🌮🎉.. I'm working now to backport this PR to: 3.13, 3.14, 3.15. |
|
GH-156251 is a backport of this pull request to the 3.15 branch. |
|
GH-156252 is a backport of this pull request to the 3.14 branch. |
|
GH-156253 is a backport of this pull request to the 3.13 branch. |
|
terryjreedy
added a commit
that referenced
this pull request
Aug 23, 2026
…H-156249) (#156253) gh-155648: In IDLE tests, call unittest.main without exit arg (GH-156249) * gh-155648: In IDLE tests, call unittest.main without exit arg DD bug 73: In idlelib.idle_test, test_xyz.py files should end with if __name__ == '__main__': unittest.main(verbosity=2) The default exit is True. This need not and should not be added. 5 files add the confusing equivalent exit=2 ("why the weird value?"), 4 files add exit=False. This is nonsensical when there is nothing more to run; main will immediately exit anyway. When running a test file from an IDLE editor, this argument has no visible effect. However, a Claude-based bug finder claims that in other circumstances (such as a program running the test in a shell), the good test may falsely fail. Even if this is not true, it can only confuse a reader. (The only place in idlelib for exit=False is in idlelib/abc.py files where the unittest is followed by an htest. The default exit=True exits the process, skipping the htest.) As part of editing the discussion of this in idle_test/htest.py, I clarified other things. (cherry picked from commit c20318b) Co-authored-by: Terry Jan Reedy <tjreedy@udel.edu>
terryjreedy
added a commit
that referenced
this pull request
Aug 23, 2026
…H-156249) (#156252) gh-155648: In IDLE tests, call unittest.main without exit arg (GH-156249) * gh-155648: In IDLE tests, call unittest.main without exit arg DD bug 73: In idlelib.idle_test, test_xyz.py files should end with if __name__ == '__main__': unittest.main(verbosity=2) The default exit is True. This need not and should not be added. 5 files add the confusing equivalent exit=2 ("why the weird value?"), 4 files add exit=False. This is nonsensical when there is nothing more to run; main will immediately exit anyway. When running a test file from an IDLE editor, this argument has no visible effect. However, a Claude-based bug finder claims that in other circumstances (such as a program running the test in a shell), the good test may falsely fail. Even if this is not true, it can only confuse a reader. (The only place in idlelib for exit=False is in idlelib/abc.py files where the unittest is followed by an htest. The default exit=True exits the process, skipping the htest.) As part of editing the discussion of this in idle_test/htest.py, I clarified other things. (cherry picked from commit c20318b) Co-authored-by: Terry Jan Reedy <tjreedy@udel.edu>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
DD bug 73: In idlelib.idle_test, test_xyz.py files should end with
The default exit is True. This need not and should not be added.
5 files add the confusing equivalent
exit=2("why the weird value?"),4 files add
exit=False. This is nonsensical when there is nothing more to run;main will immediately exit anyway. When running a test file from an IDLE editor,
this argument has no visible effect. However, a Claude-based
bug finder claims that in other circumstances (such as a program running
the test in a shell), the good test may falsely fail. Even if this is
not true, it can only confuse a reader.
(The only place in idlelib for exit=False is in idlelib/abc.py files where the unittest
is followed by an htest. The default exit=True exits the process, skipping the htest.)
As part of editing the discussion of this in idle_test/htest.py, I clarified other things.