diff --git a/os_apply_config/apply_config.py b/os_apply_config/apply_config.py index fa609ea..b99ebe6 100755 --- a/os_apply_config/apply_config.py +++ b/os_apply_config/apply_config.py @@ -158,6 +158,8 @@ def print_key( for key in keys: try: config = config[key] + if config is None: + raise TypeError() except (KeyError, TypeError): if default is not None: print(str(default)) diff --git a/os_apply_config/tests/test_apply_config.py b/os_apply_config/tests/test_apply_config.py index 16319b5..45efa43 100644 --- a/os_apply_config/tests/test_apply_config.py +++ b/os_apply_config/tests/test_apply_config.py @@ -39,6 +39,7 @@ TEMPLATE_PATHS = [ CONFIG = { "x": "foo", "y": False, + "z": None, "database": { "url": "sqlite:///blah" } @@ -114,6 +115,14 @@ class TestRunOSConfigApplier(testtools.TestCase): self.stdout.read().strip()) self.assertEqual('', self.logger.output) + def test_print_null_key(self): + self.assertEqual(0, apply_config.main( + ['os-apply-config.py', '--metadata', self.path, '--key', + 'z', '--type', 'raw', '--key-default', ''])) + self.stdout.seek(0) + self.assertEqual('', self.stdout.read().strip()) + self.assertEqual('', self.logger.output) + def test_print_key_missing(self): self.assertEqual(1, apply_config.main( ['os-apply-config.py', '--metadata', self.path, '--key',