← 返回首页
gh-54781: Move Lib/tkinter/test/test_ttk/ to Lib/test/test_ttk/ by vstinner · Pull Request #94070 · python/cpython · GitHub
Skip to content

Navigation Menu

Toggle navigation
Sign in
Appearance settings
Search or jump to...

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Include my email address so I can be contacted

Saved searches

Use saved searches to filter your results more quickly

Appearance settings
Resetting focus

gh-54781: Move Lib/tkinter/test/test_ttk/ to Lib/test/test_ttk/#94070

Merged
vstinner merged 8 commits into
python:mainfrom
vstinner:test_tkinter
Jun 22, 2022
Merged

gh-54781: Move Lib/tkinter/test/test_ttk/ to Lib/test/test_ttk/#94070
vstinner merged 8 commits into
python:mainfrom
vstinner:test_tkinter

Conversation

vstinner commented Jun 21, 2022
edited by bedevere-bot
Loading

Copy link
Copy Markdown
Member

Move Lib/tkinter/test/ to Lib/test/test_tkinter/.

Rename test_tk to test_tkinter, and rename test_ttk_guionly to test_ttk.

vstinner requested a review from a team as a code owner June 21, 2022 15:39

Copy link
Copy Markdown
Member Author

I can still run tests on an newly installed (patched) Python 3.12:

$ /opt/py3.12/bin/python3.12 -m test test_tkinter -u all -v (...) Ran 731 tests in 6.853s $ /opt/py3.12/bin/python3.12 -m test test_ttk -u all -v (...) Ran 308 tests in 7.905s $ /opt/py3.12/bin/python3.12 -m test test_tkinter test_tkinter skipped -- Use of the 'gui' resource not enabled test_tkinter skipped (resource denied) $ /opt/py3.12/bin/python3.12 -m test test_ttk test_ttk skipped -- Use of the 'gui' resource not enabled test_ttk skipped (resource denied)

Copy link
Copy Markdown
Member Author

Rename test_tk to test_tkinter

For me, it's disturbing when tests don't have the same name than the tested module. asyncio => test_asyncio. tkinter => test_tk ???

rename test_ttk_guionly to test_ttk

I can keep test_ttk_guionly name if you prefer, but for me, tests should use the GUI. Only the special tests test_ttk_textonly should have a special name, no?

Copy link
Copy Markdown
Member Author

cc @terryjreedy @serhiy-storchaka

Copy link
Copy Markdown
Member Author

This PR is special. I made the new directory tree "flat". support.py and test_simpledialog.py now lives in Lib/test/test_tkinter/. Previously, test_simpledialog.py was in a test_tkinter/ sub-directory.

Before:

Lib/tkinter/test/ Lib/tkinter/test/README Lib/tkinter/test/__init__.py Lib/tkinter/test/support.py Lib/tkinter/test/test_tkinter Lib/tkinter/test/test_tkinter/__init__.py Lib/tkinter/test/test_tkinter/test_colorchooser.py Lib/tkinter/test/test_tkinter/test_font.py Lib/tkinter/test/test_tkinter/test_geometry_managers.py Lib/tkinter/test/test_tkinter/test_images.py Lib/tkinter/test/test_tkinter/test_loadtk.py Lib/tkinter/test/test_tkinter/test_messagebox.py Lib/tkinter/test/test_tkinter/test_misc.py Lib/tkinter/test/test_tkinter/test_simpledialog.py Lib/tkinter/test/test_tkinter/test_text.py Lib/tkinter/test/test_tkinter/test_variables.py Lib/tkinter/test/test_tkinter/test_widgets.py Lib/tkinter/test/test_ttk Lib/tkinter/test/test_ttk/__init__.py Lib/tkinter/test/test_ttk/test_extensions.py Lib/tkinter/test/test_ttk/test_style.py Lib/tkinter/test/test_ttk/test_widgets.py Lib/tkinter/test/widget_tests.py

After:

Lib/test/test_ttk/ Lib/test/test_ttk/__init__.py Lib/test/test_ttk/test_extensions.py Lib/test/test_ttk/test_style.py Lib/test/test_ttk/test_widgets.py Lib/test/test_tkinter/ Lib/test/test_tkinter/README Lib/test/test_tkinter/__init__.py Lib/test/test_tkinter/support.py Lib/test/test_tkinter/test_colorchooser.py Lib/test/test_tkinter/test_font.py Lib/test/test_tkinter/test_geometry_managers.py Lib/test/test_tkinter/test_images.py Lib/test/test_tkinter/test_loadtk.py Lib/test/test_tkinter/test_messagebox.py Lib/test/test_tkinter/test_misc.py Lib/test/test_tkinter/test_simpledialog.py Lib/test/test_tkinter/test_text.py Lib/test/test_tkinter/test_variables.py Lib/test/test_tkinter/test_widgets.py Lib/test/test_tkinter/widget_tests.py

Copy link
Copy Markdown
Member Author

Windows (x64) job failed but I cannot get the logs. I cancelled the workflow. I still cannot see the logs. Strange.

zware commented Jun 21, 2022

Copy link
Copy Markdown
Member

Windows (x64) job failed but I cannot get the logs. I cancelled the workflow. I still cannot see the logs. Strange.

The failure is unrelated, see #94068.

serhiy-storchaka requested review from serhiy-storchaka and removed request for a team June 21, 2022 15:54

Copy link
Copy Markdown
Member Author

Oh. Windows build failed with an unrelated error:

Error: D:\a\cpython\cpython\Modules\socketmodule.c(7475,5): error C2065: 'HVSOCKET_CONTAINER_PASSTHRU': undeclared identifier [D:\a\cpython\cpython\PCbuild_socket.vcxproj]

vstinner closed this Jun 21, 2022
vstinner reopened this Jun 21, 2022

zooba commented Jun 21, 2022

Copy link
Copy Markdown
Member

Yeah, seems we're in the middle of the rollout of new CI images, so there's a chance you'll get the older image and not see the error. But you'll need my PR for it to be reliable.

Comment thread Lib/test/test_tkinter/__init__.py Outdated

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Choose a reason Spam Abuse Off Topic Outdated Duplicate Resolved Low Quality Hide comment

Does python -m test.test_tkinter still work?

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Choose a reason Spam Abuse Off Topic Outdated Duplicate Resolved Low Quality Hide comment

It would work if a __main__ module gets added. But it was test.test_tk before, not test.test_tkinter.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Choose a reason Spam Abuse Off Topic Outdated Duplicate Resolved Low Quality Hide comment

Ah you care about this command? If you do, I can add a __main__.py file.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Choose a reason Spam Abuse Off Topic Outdated Duplicate Resolved Low Quality Hide comment

Yes, please add it. And test different ways of running tests:

python -m test.test_xxx python -m unittest test.test_xxx python -m test test_xxx

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Choose a reason Spam Abuse Off Topic Outdated Duplicate Resolved Low Quality Hide comment

I added __main__ sub-modules. Example:

./python -m test.test_ttk -v ./python -m test test_ttk -v -u all ./python -m unittest test.test_ttk -v

The 3 commands end with: Ran 308 tests.

Comment thread Lib/test/test_tkinter/__init__.py Outdated

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Choose a reason Spam Abuse Off Topic Outdated Duplicate Resolved Low Quality Hide comment

Why not use just loader.discover()?

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Choose a reason Spam Abuse Off Topic Outdated Duplicate Resolved Low Quality Hide comment

I copy/paste the code from test_asyncio, it works, so I didn't change it :-)

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Choose a reason Spam Abuse Off Topic Outdated Duplicate Resolved Low Quality Hide comment

Does loader.discover() work with zipimport?

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Choose a reason Spam Abuse Off Topic Outdated Duplicate Resolved Low Quality Hide comment

Does loader.discover() work with zipimport?

I have no idea. If there is an issue, I suggest to fix all load_tests() functions of Lib/test/ in a separated PR.

Copy link
Copy Markdown
Member

Should it be backported?

Copy link
Copy Markdown
Member

I would prefer that ttk tests be included under test_tkinter, with names like test_ttk_widgets, so that python -m test.test_tkinter (and python -m test -ugui test_tkinter) tests everything. But re-organization details are up to Serhiy.

Copy link
Copy Markdown
Member

This patch will require changes to the scripts *nix distributions use to make tkinter (and IDLE) a separate install. I don't know how they would feel about backports.

Copy link
Copy Markdown
Member Author

I rebased the PR to get the fix for the Windows build: #94068

Copy link
Copy Markdown
Member Author

Should it be backported?

This specific PR change the name of two tests, so no, it should not be backported.

It also changes the build system (Linux, VS project). Honestly, it sounds risky and I would prefer to not backport it.

Copy link
Copy Markdown
Member Author

I would prefer that ttk tests be included under test_tkinter

Oh. I tried to minimize changes in this PR. But I'm open to reorganizing tests.

@serhiy-storchaka: Are you fine with the 2 proposed tests, or do you want to merge them?

vstinner commented Jun 21, 2022
edited
Loading

Copy link
Copy Markdown
Member Author

This patch will require changes to the scripts *nix distributions use to make tkinter (and IDLE) a separate install. I don't know how they would feel about backports.

Once issue #54781 will be fixed, I will properly document these changes in What's New in Python 3.12. IMO it fits into the Build Changes section.

Copy link
Copy Markdown
Member

Are you fine with the 2 proposed tests, or do you want to merge them?

I was going to ask about merging them, but I am fine with the current state of this PR. If you are going to merge test_ttk into test_tkinter, do not forget about test_tcl.

Maybe do this in a separate PR?

vstinner commented Jun 21, 2022
edited
Loading

Copy link
Copy Markdown
Member Author

I was going to ask about merging them, but I am fine with the current state of this PR. If you are going to merge test_ttk into test_tkinter, do not forget about test_tcl.

Oh, merging 3 Tkinter tests sound out of my skills. I don't know well this module and I would prefer if someone else do it.

Here I'm trying to focus on fixing the 12 years old issue #54781 :-) Perfect is the enemy of good ;-)

Copy link
Copy Markdown
Member Author

@serhiy-storchaka: Does it look good to you like that?

Copy link
Copy Markdown
Member Author

@serhiy-storchaka wrote "I am fine with the current state of this PR". I plan to merge the PR tomorrow if I don't hear back from @serhiy-storchaka.

vstinner added 3 commits June 22, 2022 19:14
* Add Lib/test/test_ttk/__init__.py based on test_ttk_guionly.py. * Remove Lib/test/test_ttk_guionly.py.
Remove Lib/test/test_tk.py.
31 hidden items Load more…
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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

7 participants

Footer

© 2026 GitHub, Inc.