From f54beeb8a83ecf3d3e6b2e74147d6f3fe7349c74 Mon Sep 17 00:00:00 2001 From: David Roetzel Date: Tue, 8 Nov 2022 16:32:01 +0100 Subject: [PATCH] Return empty hash if yaml file is empty. (#104) Fixes #103 --- app/models/hiera_data/yaml_file.rb | 2 +- .../puppet/environments/development/data/nodes/empty.yaml | 0 test/models/hiera_data/yaml_file_test.rb | 6 ++++++ 3 files changed, 7 insertions(+), 1 deletion(-) create mode 100644 test/fixtures/files/puppet/environments/development/data/nodes/empty.yaml diff --git a/app/models/hiera_data/yaml_file.rb b/app/models/hiera_data/yaml_file.rb index 14ccf3be..42652b5a 100644 --- a/app/models/hiera_data/yaml_file.rb +++ b/app/models/hiera_data/yaml_file.rb @@ -25,7 +25,7 @@ def keys def content return nil unless exist? - @content ||= YAML.load(File.read(path)) + @content ||= (YAML.load(File.read(path)) || {}) end def [](key) diff --git a/test/fixtures/files/puppet/environments/development/data/nodes/empty.yaml b/test/fixtures/files/puppet/environments/development/data/nodes/empty.yaml new file mode 100644 index 00000000..e69de29b diff --git a/test/models/hiera_data/yaml_file_test.rb b/test/models/hiera_data/yaml_file_test.rb index 8adb2827..304c8a37 100644 --- a/test/models/hiera_data/yaml_file_test.rb +++ b/test/models/hiera_data/yaml_file_test.rb @@ -32,6 +32,12 @@ class HieraData::YamlFileTest < ActiveSupport::TestCase assert_equal expected_keys, file.keys end + test "#content returns empty hash when file is empty" do + file = HieraData::YamlFile.new(path: config_dir.join("nodes/empty.yaml")) + + assert_equal({}, file.content) + end + test "#content_for_key returns nil for unknown file and key" do file = HieraData::YamlFile.new(path: config_dir.join("role/hdm_test-development.yaml")) assert_nil file.content_for_key('noop_mode')