diff --git a/lib/herb/configuration.rb b/lib/herb/configuration.rb index a8058264e..c293a10d2 100644 --- a/lib/herb/configuration.rb +++ b/lib/herb/configuration.rb @@ -225,7 +225,7 @@ def load_config return deep_merge(DEFAULTS, {}) unless @config_path&.exist? begin - user_config = YAML.safe_load_file(@config_path, permitted_classes: [Symbol]) || {} + user_config = YAML.safe_load_file(@config_path, permitted_classes: [Symbol], aliases: true) || {} deep_merge(DEFAULTS, user_config) rescue Psych::SyntaxError => e warn "Warning: Invalid YAML in #{@config_path}: #{e.message}" diff --git a/test/configuration_test.rb b/test/configuration_test.rb index 720022205..96b22d78e 100644 --- a/test/configuration_test.rb +++ b/test/configuration_test.rb @@ -41,6 +41,24 @@ def write_config(content, filename = ".herb.yml") assert_includes config.file_include_patterns, "**/*.custom.erb" end + test "loads configuration using YAML anchors and aliases" do + write_config(<<~YAML) + version: "0.9.6" + files: + include: &patterns + - "**/*.custom.erb" + - "**/*.other.erb" + exclude: *patterns + YAML + + config = Herb::Configuration.load(@temp_dir) + + assert_includes config.file_include_patterns, "**/*.custom.erb" + assert_includes config.file_include_patterns, "**/*.other.erb" + assert_includes config.file_exclude_patterns, "**/*.custom.erb" + assert_includes config.file_exclude_patterns, "**/*.other.erb" + end + test "searches parent directories for config file" do subdir = File.join(@temp_dir, "app", "views") FileUtils.mkdir_p(subdir)