Handle reading of empty YamlFiles
python-yaml's safe_load returns 'None' when it parses an empty YamlFile,
but since empty YamlFiles correspond to empty dictionaries, really, we
handle things accordingly.
Signed-off-by: martin f. krafft <madduck@madduck.net>
diff --git a/storage/yaml_fs/tests/nodes/empty.yml b/storage/yaml_fs/tests/nodes/empty.yml
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/storage/yaml_fs/tests/nodes/empty.yml
diff --git a/storage/yaml_fs/tests/test_yamlfile.py b/storage/yaml_fs/tests/test_yamlfile.py
index 7e2bfb7..6a8c4db 100644
--- a/storage/yaml_fs/tests/test_yamlfile.py
+++ b/storage/yaml_fs/tests/test_yamlfile.py
@@ -10,6 +10,7 @@
import os, sys
TESTFILE = os.path.join(sys.path[0], 'nodes', 'blue.yml')
+EMPTYFILE = os.path.join(sys.path[0], 'nodes', 'empty.yml')
class TestYamlFile:
@@ -29,3 +30,9 @@
assert 'motd' in p
assert 'colour' in p
assert hasattr(p, 'merge')
+
+ def test_empty_file(self):
+ e = yamlfile.YamlFile(EMPTYFILE).entity
+ assert len(e.classes) == 0
+ assert len(e.parameters) == 0
+ assert len(e.applications) == 0
diff --git a/storage/yaml_fs/yamlfile.py b/storage/yaml_fs/yamlfile.py
index 56d1325..7570155 100644
--- a/storage/yaml_fs/yamlfile.py
+++ b/storage/yaml_fs/yamlfile.py
@@ -20,7 +20,9 @@
def _read(self):
fp = file(self._path)
- self._data = yaml.safe_load(fp)
+ data = yaml.safe_load(fp)
+ if data is not None:
+ self._data = data
fp.close()
def _get_entity(self):