fixed autoloading with device names containing dots

xkb
sezanzeb 4 years ago committed by sezanzeb
parent 78e4fa7eea
commit 5187e23a92

@ -85,7 +85,7 @@ class ConfigBase:
config : dict
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:
child = self._config
@ -110,7 +110,7 @@ class ConfigBase:
Parameters
----------
path : string
path : string or string[]
For example 'macros.keystroke_sleep_ms'
"""
def callback(parent, child, chunk):
@ -124,8 +124,9 @@ class ConfigBase:
Parameters
----------
path : string
path : string or string[]
For example 'macros.keystroke_sleep_ms'
or ['macros', 'keystroke_sleep_ms']
value : any
"""
logger.debug(
@ -197,13 +198,13 @@ class GlobalConfig(ConfigBase):
if None, don't autoload something for this device.
"""
if preset is not None:
self.set(f'autoload.{device}', preset)
self.set(['autoload', device], preset)
else:
logger.info(
'Not loading injecting for "%s" automatically anmore',
device
)
self.remove(f'autoload.{device}')
self.remove(['autoload', device])
def iterate_autoload_presets(self):
"""Get tuples of (device, preset)."""
@ -211,7 +212,7 @@ class GlobalConfig(ConfigBase):
def is_autoloaded(self, device, preset):
"""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):
"""Load the config from the file system."""

@ -86,36 +86,42 @@ class TestConfig(unittest.TestCase):
def test_autoload(self):
self.assertEqual(len(config.iterate_autoload_presets()), 0)
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')
self.assertEqual(len(config.iterate_autoload_presets()), 1)
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.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.assertTrue(config.is_autoloaded('d1', 'a'))
self.assertFalse(config.is_autoloaded('d2', 'b'))
self.assertTrue(config.is_autoloaded('d2', 'c'))
self.assertFalse(config.is_autoloaded('d2.foo', 'b'))
self.assertTrue(config.is_autoloaded('d2.foo', 'c'))
self.assertEqual(config._config['autoload']['d2.foo'], 'c')
self.assertListEqual(
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.assertFalse(config.is_autoloaded('d2', 'b'))
self.assertFalse(config.is_autoloaded('d2', 'c'))
self.assertFalse(config.is_autoloaded('d2.foo', 'b'))
self.assertFalse(config.is_autoloaded('d2.foo', 'c'))
self.assertListEqual(
list(config.iterate_autoload_presets()),
[('d1', 'a')]
)
self.assertEqual(config.get(['autoload', 'd1']), 'a')
def test_initial(self):
# 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)
config.set_autoload_preset('d1', 'a')
config.set_autoload_preset('d2', 'b')
config.set_autoload_preset('d2.foo', 'b')
config.save_config()
# ignored after load
@ -145,7 +151,7 @@ class TestConfig(unittest.TestCase):
config.load_config()
self.assertListEqual(
list(config.iterate_autoload_presets()),
[('d1', 'a'), ('d2', 'b')]
[('d1', 'a'), ('d2.foo', 'b')]
)

Loading…
Cancel
Save