mirror of
https://github.com/progval/Limnoria.git
synced 2025-04-26 13:01:06 -05:00
registry: Avoid calling Value.setValue() when closing registry
Fixes #1349
This commit is contained in:
parent
246f4d3e62
commit
94310d5c3d
@ -148,7 +148,12 @@ def close(registry, filename, private=True):
|
||||
if value._showDefault:
|
||||
lines.append('#\n')
|
||||
try:
|
||||
x = value.__class__(value._default, value._help)
|
||||
# We set setDefault to False and manually call
|
||||
# Value._setValue, just in case the class inherits
|
||||
# Value.setValue to set some global state (#1349)
|
||||
x = value.__class__(value._default, value._help,
|
||||
setDefault=False)
|
||||
x._setValue(value._default, inherited=False)
|
||||
except Exception as e:
|
||||
exception('Exception instantiating default for %s:' %
|
||||
value._name)
|
||||
|
@ -224,6 +224,24 @@ class ValuesTestCase(SupyTestCase):
|
||||
registry.open_registry(filename)
|
||||
self.assertEqual(conf.supybot.networks.test.password(), ' foo ')
|
||||
|
||||
def testSetValueUncalledOnClose(self):
|
||||
values_set = 0
|
||||
class StringWithSetLogging(registry.String):
|
||||
def setValue(self, v):
|
||||
nonlocal values_set
|
||||
values_set += 1
|
||||
|
||||
super(StringWithSetLogging, self).setValue(v)
|
||||
|
||||
group = registry.Group()
|
||||
group.setName('group')
|
||||
conf.registerGlobalValue(group, 'string', StringWithSetLogging('test', 'help'))
|
||||
group.string.set('mrrp')
|
||||
|
||||
filename = conf.supybot.directories.conf.dirize('setvaluecalls.conf')
|
||||
registry.close(group, filename)
|
||||
self.assertEqual(values_set, 2)
|
||||
|
||||
def testReload(self):
|
||||
import supybot.world as world
|
||||
with conf.supybot.reply.whenAddressedBy.chars.context('@'):
|
||||
|
Loading…
x
Reference in New Issue
Block a user