fixed autoloading with device names containing dots

flatpak
sezanzeb 4 years ago
parent d5b7dc5998
commit 9cb77290cf

@ -85,7 +85,7 @@ class ConfigBase:
config : dict config : dict
The dictionary to search. Defaults to self._config. The dictionary to search. Defaults to self._config.
""" """
chunks = path.split('.') chunks = path.copy() if isinstance(path, list) else path.split('.')
if config is None: if config is None:
child = self._config child = self._config
@ -110,7 +110,7 @@ class ConfigBase:
Parameters Parameters
---------- ----------
path : string path : string or string[]
For example 'macros.keystroke_sleep_ms' For example 'macros.keystroke_sleep_ms'
""" """
def callback(parent, child, chunk): def callback(parent, child, chunk):
@ -124,8 +124,9 @@ class ConfigBase:
Parameters Parameters
---------- ----------
path : string path : string or string[]
For example 'macros.keystroke_sleep_ms' For example 'macros.keystroke_sleep_ms'
or ['macros', 'keystroke_sleep_ms']
value : any value : any
""" """
logger.debug( logger.debug(
@ -197,13 +198,13 @@ class GlobalConfig(ConfigBase):
if None, don't autoload something for this device. if None, don't autoload something for this device.
""" """
if preset is not None: if preset is not None:
self.set(f'autoload.{device}', preset) self.set(['autoload', device], preset)
else: else:
logger.info( logger.info(
'Not loading injecting for "%s" automatically anmore', 'Not loading injecting for "%s" automatically anmore',
device device
) )
self.remove(f'autoload.{device}') self.remove(['autoload', device])
def iterate_autoload_presets(self): def iterate_autoload_presets(self):
"""Get tuples of (device, preset).""" """Get tuples of (device, preset)."""
@ -211,7 +212,7 @@ class GlobalConfig(ConfigBase):
def is_autoloaded(self, device, preset): def is_autoloaded(self, device, preset):
"""Should this preset be loaded automatically?""" """Should this preset be loaded automatically?"""
return self.get(f'autoload.{device}', log_unknown=False) == preset return self.get(['autoload', device], log_unknown=False) == preset
def load_config(self): def load_config(self):
"""Load the config from the file system.""" """Load the config from the file system."""

@ -86,36 +86,42 @@ class TestConfig(unittest.TestCase):
def test_autoload(self): def test_autoload(self):
self.assertEqual(len(config.iterate_autoload_presets()), 0) self.assertEqual(len(config.iterate_autoload_presets()), 0)
self.assertFalse(config.is_autoloaded('d1', 'a')) self.assertFalse(config.is_autoloaded('d1', 'a'))
self.assertFalse(config.is_autoloaded('d2', 'b')) self.assertFalse(config.is_autoloaded('d2.foo', 'b'))
self.assertEqual(config.get(['autoload', 'd1']), None)
self.assertEqual(config.get(['autoload', 'd2.foo']), None)
config.set_autoload_preset('d1', 'a') config.set_autoload_preset('d1', 'a')
self.assertEqual(len(config.iterate_autoload_presets()), 1) self.assertEqual(len(config.iterate_autoload_presets()), 1)
self.assertTrue(config.is_autoloaded('d1', 'a')) self.assertTrue(config.is_autoloaded('d1', 'a'))
self.assertFalse(config.is_autoloaded('d2', 'b')) self.assertFalse(config.is_autoloaded('d2.foo', 'b'))
config.set_autoload_preset('d2', 'b') config.set_autoload_preset('d2.foo', 'b')
self.assertEqual(len(config.iterate_autoload_presets()), 2) self.assertEqual(len(config.iterate_autoload_presets()), 2)
self.assertTrue(config.is_autoloaded('d1', 'a')) self.assertTrue(config.is_autoloaded('d1', 'a'))
self.assertTrue(config.is_autoloaded('d2', 'b')) self.assertTrue(config.is_autoloaded('d2.foo', 'b'))
self.assertEqual(config.get(['autoload', 'd1']), 'a')
self.assertEqual(config.get(['autoload', 'd2.foo']), 'b')
config.set_autoload_preset('d2', 'c') config.set_autoload_preset('d2.foo', 'c')
self.assertEqual(len(config.iterate_autoload_presets()), 2) self.assertEqual(len(config.iterate_autoload_presets()), 2)
self.assertTrue(config.is_autoloaded('d1', 'a')) self.assertTrue(config.is_autoloaded('d1', 'a'))
self.assertFalse(config.is_autoloaded('d2', 'b')) self.assertFalse(config.is_autoloaded('d2.foo', 'b'))
self.assertTrue(config.is_autoloaded('d2', 'c')) self.assertTrue(config.is_autoloaded('d2.foo', 'c'))
self.assertEqual(config._config['autoload']['d2.foo'], 'c')
self.assertListEqual( self.assertListEqual(
list(config.iterate_autoload_presets()), list(config.iterate_autoload_presets()),
[('d1', 'a'), ('d2', 'c')] [('d1', 'a'), ('d2.foo', 'c')]
) )
config.set_autoload_preset('d2', None) config.set_autoload_preset('d2.foo', None)
self.assertTrue(config.is_autoloaded('d1', 'a')) self.assertTrue(config.is_autoloaded('d1', 'a'))
self.assertFalse(config.is_autoloaded('d2', 'b')) self.assertFalse(config.is_autoloaded('d2.foo', 'b'))
self.assertFalse(config.is_autoloaded('d2', 'c')) self.assertFalse(config.is_autoloaded('d2.foo', 'c'))
self.assertListEqual( self.assertListEqual(
list(config.iterate_autoload_presets()), list(config.iterate_autoload_presets()),
[('d1', 'a')] [('d1', 'a')]
) )
self.assertEqual(config.get(['autoload', 'd1']), 'a')
def test_initial(self): def test_initial(self):
# when loading for the first time, create a config file with # when loading for the first time, create a config file with
@ -136,7 +142,7 @@ class TestConfig(unittest.TestCase):
self.assertEqual(len(config.iterate_autoload_presets()), 0) self.assertEqual(len(config.iterate_autoload_presets()), 0)
config.set_autoload_preset('d1', 'a') config.set_autoload_preset('d1', 'a')
config.set_autoload_preset('d2', 'b') config.set_autoload_preset('d2.foo', 'b')
config.save_config() config.save_config()
# ignored after load # ignored after load
@ -145,7 +151,7 @@ class TestConfig(unittest.TestCase):
config.load_config() config.load_config()
self.assertListEqual( self.assertListEqual(
list(config.iterate_autoload_presets()), list(config.iterate_autoload_presets()),
[('d1', 'a'), ('d2', 'b')] [('d1', 'a'), ('d2.foo', 'b')]
) )

Loading…
Cancel
Save