Skip to content

Commit 771d7da

Browse files
serhiy-storchakacsabella
authored andcommitted
gh-75595: Do not save a blank int entry in IDLE Settings (GH-152743)
gh-83653: Do not save a blank int entry in IDLE Settings Blanking an integer entry wrote an empty string to the config file, which caused an "invalid int value" warning when it was read back. (cherry picked from commit 3428762) Co-authored-by: Serhiy Storchaka <storchaka@gmail.com> Co-authored-by: Cheryl Sabella <cheryl.sabella@gmail.com>
1 parent bef8ff9 commit 771d7da

3 files changed

Lines changed: 19 additions & 1 deletion

File tree

Lib/idlelib/configdialog.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2257,7 +2257,11 @@ def make_callback(var, config):
22572257
"Return default callback function to add values to changes instance."
22582258
def default_callback(*params):
22592259
"Add config values to changes instance."
2260-
changes.add_option(*config, var.get())
2260+
value = var.get()
2261+
# A blanked int entry is an empty string; do not save it as an
2262+
# invalid config value (gh-83653).
2263+
if value != '':
2264+
changes.add_option(*config, value)
22612265
return default_callback
22622266

22632267
def attach(self):

Lib/idlelib/idle_test/test_configdialog.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1545,6 +1545,17 @@ def test_make_callback(self):
15451545
self.assertEqual(changes['main']['section']['option'], '42')
15461546
changes.clear()
15471547

1548+
# gh-83653: a blank int entry is not saved as bad config data.
1549+
sv = StringVar(root)
1550+
cb = self.tracers.make_callback(sv, ('main', 'section', 'option'))
1551+
sv.set('')
1552+
cb()
1553+
self.assertNotIn('section', changes['main'])
1554+
sv.set('5')
1555+
cb()
1556+
self.assertEqual(changes['main']['section']['option'], '5')
1557+
changes.clear()
1558+
15481559
def test_attach_detach(self):
15491560
tr = self.tracers
15501561
iv = tr.add(self.iv, self.var_changed_increment)
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
Blanking an integer entry in IDLE's Settings dialog, such as "Auto squeeze
2+
min lines", no longer saves an empty string as an invalid configuration
3+
value.

0 commit comments

Comments
 (0)