From 1cb5bbf865f53986ec219b4f9da3966d561ad928 Mon Sep 17 00:00:00 2001 From: Erik Montnemery Date: Sat, 20 Jan 2024 15:12:32 +0100 Subject: [PATCH] Fix empty files included by !include_dir_named (#108489) Co-authored-by: Joost Lekkerkerker --- homeassistant/util/yaml/loader.py | 7 ++++++- tests/util/yaml/test_init.py | 2 +- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/homeassistant/util/yaml/loader.py b/homeassistant/util/yaml/loader.py index aac3e1274ee..51564b6da88 100644 --- a/homeassistant/util/yaml/loader.py +++ b/homeassistant/util/yaml/loader.py @@ -359,7 +359,12 @@ def _include_dir_named_yaml(loader: LoaderType, node: yaml.nodes.Node) -> NodeDi filename = os.path.splitext(os.path.basename(fname))[0] if os.path.basename(fname) == SECRET_YAML: continue - mapping[filename] = load_yaml(fname, loader.secrets) + loaded_yaml = load_yaml(fname, loader.secrets) + if loaded_yaml is None: + # Special case, an empty file included by !include_dir_named is treated + # as an empty dictionary + loaded_yaml = NodeDictClass() + mapping[filename] = loaded_yaml return _add_reference(mapping, loader, node) diff --git a/tests/util/yaml/test_init.py b/tests/util/yaml/test_init.py index 30637fe2785..93c8ed50498 100644 --- a/tests/util/yaml/test_init.py +++ b/tests/util/yaml/test_init.py @@ -193,7 +193,7 @@ def test_include_dir_list_recursive( ), ( {"/test/first.yaml": "1", "/test/second.yaml": None}, - {"first": 1, "second": None}, + {"first": 1, "second": {}}, ), ], )