From 90cde31e5407fd1e450aab511a29c5e6929795ed Mon Sep 17 00:00:00 2001 From: David Roetzel Date: Wed, 8 Nov 2023 10:08:51 +0100 Subject: [PATCH] Support empty yaml array #215 --- app/models/hiera_data/yaml_file.rb | 3 +-- .../environments/development/data/nodes/testhost.yaml | 1 + test/models/hiera_data/yaml_file_test.rb | 6 ++++++ test/models/hiera_data_test.rb | 2 +- 4 files changed, 9 insertions(+), 3 deletions(-) diff --git a/app/models/hiera_data/yaml_file.rb b/app/models/hiera_data/yaml_file.rb index a1e5cfd4..436161f1 100644 --- a/app/models/hiera_data/yaml_file.rb +++ b/app/models/hiera_data/yaml_file.rb @@ -47,8 +47,7 @@ def content_for_key(key) return value if [String, Integer, Float].include?(value.class) value_string = value.to_yaml - value_string.gsub!("---\n", '').gsub!(/^$\n/, '') - value_string + value_string.sub(/\A---(\n| )/, '').gsub(/^$\n/, '') end def write_key(key, value) diff --git a/test/fixtures/files/puppet/environments/development/data/nodes/testhost.yaml b/test/fixtures/files/puppet/environments/development/data/nodes/testhost.yaml index 7b0ad485..b5013d60 100644 --- a/test/fixtures/files/puppet/environments/development/data/nodes/testhost.yaml +++ b/test/fixtures/files/puppet/environments/development/data/nodes/testhost.yaml @@ -1,5 +1,6 @@ --- noop_mode: true +classes: [] foobar::enable_firstrun: true foobar::firstrun::linux_classes: hostname: hostname diff --git a/test/models/hiera_data/yaml_file_test.rb b/test/models/hiera_data/yaml_file_test.rb index 1edfbc47..05634675 100644 --- a/test/models/hiera_data/yaml_file_test.rb +++ b/test/models/hiera_data/yaml_file_test.rb @@ -14,6 +14,7 @@ class HieraData::YamlFileTest < ActiveSupport::TestCase test "#keys returns the top level keys for the file" do expected_keys = [ "noop_mode", + "classes", "foobar::enable_firstrun", "foobar::firstrun::linux_classes", "foobar::time::servers", @@ -71,6 +72,11 @@ class HieraData::YamlFileTest < ActiveSupport::TestCase assert_equal 0.1, file.content_for_key('hdm::float') end + test "#content_for_key returns empty array as array" do + file = HieraData::YamlFile.new(path: config_dir.join("nodes/testhost.yaml")) + assert_equal "[]\n", file.content_for_key('classes') + end + test "#write_key goes fine" do path = Rails.root.join('test', 'fixtures', 'files', 'puppet', 'environments', 'development', 'data', 'nodes', 'writehost.yaml') diff --git a/test/models/hiera_data_test.rb b/test/models/hiera_data_test.rb index 2ea4f9e1..d1e7c602 100644 --- a/test/models/hiera_data_test.rb +++ b/test/models/hiera_data_test.rb @@ -28,7 +28,7 @@ class HieraDataTest < ActiveSupport::TestCase test "#all_keys return all keys" do hiera = HieraData.new('development') expected_result = [ - "foobar::enable_firstrun", "foobar::firstrun::linux_classes", "foobar::postfix::tp::resources_hash", "foobar::time::servers", "foobar::timezone", "hdm::float", "hdm::integer", "noop_mode" + "classes", "foobar::enable_firstrun", "foobar::firstrun::linux_classes", "foobar::postfix::tp::resources_hash", "foobar::time::servers", "foobar::timezone", "hdm::float", "hdm::integer", "noop_mode" ] node = Node.new(hostname: "testhost", environment: "development")