From f4c09d2e4123888f9d4cbb615eb7324a43c291b8 Mon Sep 17 00:00:00 2001 From: David Roetzel Date: Thu, 14 Mar 2024 15:44:41 +0100 Subject: [PATCH] Interpolate variables in datadir used for globs #329 --- app/models/hiera_data/hierarchy.rb | 2 +- test/models/hiera_data/hierarchy_test.rb | 12 ++++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/app/models/hiera_data/hierarchy.rb b/app/models/hiera_data/hierarchy.rb index 0455484a..b6fe7143 100644 --- a/app/models/hiera_data/hierarchy.rb +++ b/app/models/hiera_data/hierarchy.rb @@ -81,7 +81,7 @@ def resolved_paths(facts:) resolved_path = Interpolation.interpolate_facts(path:, facts:) if uses_globs? resolved_path = Interpolation - .interpolate_globs(path: resolved_path, datadir:) + .interpolate_globs(path: resolved_path, datadir: datadir(facts:)) end resolved_path end diff --git a/test/models/hiera_data/hierarchy_test.rb b/test/models/hiera_data/hierarchy_test.rb index 253c063f..a41f0803 100644 --- a/test/models/hiera_data/hierarchy_test.rb +++ b/test/models/hiera_data/hierarchy_test.rb @@ -85,6 +85,18 @@ class HierarchyTest < ActiveSupport::TestCase assert_equal expected_resolved_paths, hierarchy.resolved_paths(facts:) end + test "#resolved_paths resolves globs when given a dynamic datadir" do + base_path = Rails.root.join("test/fixtures/files/puppet/environments/dynamic_datadir") + globs = ["c*.yaml"] + raw_hash = { "name" => "Common", "datadir" => "%{facts.custom.datadir}", "globs" => globs } + hierarchy = HieraData::Hierarchy.new(raw_hash:, base_path:) + facts = { "custom" => { "datadir" => "data1" } } + expected_resolved_paths = [ + "common.yaml" + ] + assert_equal expected_resolved_paths, hierarchy.resolved_paths(facts:) + end + test "#name returns the existing name" do hierarchy = HieraData::Hierarchy.new(raw_hash:, base_path: ".") assert_equal "Yaml hierarchy", hierarchy.name