Skip to content

gh-155648: Write the empty and placeholder IDLE tests - #156260

Open
serhiy-storchaka wants to merge 4 commits into
python:mainfrom
serhiy-storchaka:idle-test-placeholders
Open

gh-155648: Write the empty and placeholder IDLE tests#156260
serhiy-storchaka wants to merge 4 commits into
python:mainfrom
serhiy-storchaka:idle-test-placeholders

Conversation

@serhiy-storchaka

@serhiy-storchaka serhiy-storchaka commented Aug 23, 2026

Copy link
Copy Markdown
Member

Several tests in idlelib/idle_test are empty stubs or placeholders that cannot fail. Write them instead of removing them.

  • test_editor.RMenuTest was added in bpo-39885: IDLE: Leave selection when right click within #18951, which fixed right-clicking inside a selection, with the note that an automated test should follow. Its DummyRMenu class is used now to test right_menu_event(), together with the rmenu_check_*() methods that supply the menu entry states.
  • test_configdialog.ConfigDialogTest was left with two empty stubs in bpo-30780: Add IDLE configdialog tests #3592, named after the two ConfigDialog methods which the button tests only check to be called. They are tested with a fake parent whose instance dictionary contains an autospecced EditorWindow.
  • test_configdialog.ExtPageTest was added empty, with a commented out "Nothing here yet TODO" skip, when ExtPage was factored out in bpo-40468: Factor out class ExtPage in idlelib.configdialog #26618. The extensions page is the only configuration page without tests.
  • test_grep.Default_commandTest was left empty in 2013 because GrepDialog.default_command() imports OutputWindow when called. The import cannot be moved to the top of the module due to an import loop, but the imported class can be replaced with a mock.
  • test_config.ChangesTest.test_save_default never called save_all(), so it tested nothing. The test for the Save() calls asked for by the following TODO comment is added too.
  • test_config.IdleConfTest.test_get_current_keyset only tested the non-darwin branch, because the default key sets no longer contain Alt keys. An extension binding with an Alt key is added, so that its replacement with Option can be tested.
  • template.py lost the from idlelib import zzdummy line in gh-151428: Remove unused imports from stdlib #151478 as an unused import, but idle_test/README.txt instructs the user to replace zzdummy with the name of the module under test. A Ruff per-file ignore keeps it now.

Each new test was checked to fail when the corresponding code is broken.

The first two items are an alternative to #156257, which comments these stubs out instead. That PR also fixes the vacuous assertion in test_autocomplete and the placeholder assertion in template.py, which are not touched here.

serhiy-storchaka and others added 3 commits August 23, 2026 10:23
It was removed as an unused import in pythonGH-151478, but template.py is a
skeleton for creating new IDLE test files, and idle_test/README.txt
instructs the user to replace 'zzdummy' with the name of the module
under test.  Add a Ruff per-file ignore to keep it.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…m out

test_editor.RMenuTest was added in pythonGH-18951, which fixed right-clicking
inside a selection, with the note that an automated test should follow.
Use the DummyRMenu class left there to test right_menu_event(), and test
the rmenu_check_*() methods that supply the menu entry states.

test_configdialog.ConfigDialogTest was left with two empty stubs in
pythonGH-3592, named after the two ConfigDialog methods which the button tests
only check to be called.  Test them with a fake parent whose instance
dictionary contains an autospecced EditorWindow.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
* test_configdialog.ExtPageTest was added empty, with a commented-out
  "Nothing here yet TODO" skip, when ExtPage was factored out of
  ConfigDialog in pythonGH-26618.  Test load_extensions(), extension_selected(),
  set_extension_value() and save_all_changed_extensions().

* test_grep.Default_commandTest was left empty in 2013 because
  GrepDialog.default_command() imports OutputWindow when called, and the
  import cannot be moved to the top of the module due to an import loop.
  Replace the imported class with a mock instead of moving the import.

* test_config.ChangesTest.test_save_default never called save_all(), so
  it tested nothing.  Add the missing assertions, and add the test for
  the Save() calls that the following TODO comment asked for.

* test_config.IdleConfTest.test_get_current_keyset only tested the
  non-darwin branch, because the default key sets no longer contain Alt
  keys.  Add an extension binding with an Alt key, so that its
  replacement with Option can be tested.  Remove the stale commented-out
  test in test_get_extension_keys, which used the ZoomHeight extension.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Text.bbox() returns None while the window is not mapped, as on Windows,
where the root window of the test is withdrawn.  Ask the widget for the
index of the clicked character instead of computing the coordinates of
a known index.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant