Skip to content

Commit 2844695

Browse files
authored
Merge pull request #2513 from AriaXLi/fact-3135
(FACT-3135) Add support for yaml anchors in Facter 4
2 parents 832c9b5 + bbc2d3b commit 2844695

File tree

3 files changed

+20
-2
lines changed

3 files changed

+20
-2
lines changed

lib/facter/custom_facts/util/parser.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -119,9 +119,9 @@ def parse_results
119119
cont = content.gsub(TIME, '"\1"')
120120

121121
if Gem::Version.new(Psych::VERSION) >= Gem::Version.new('3.1.0') # Ruby 2.6+
122-
YAML.safe_load(cont, permitted_classes: [Date])
122+
YAML.safe_load(cont, permitted_classes: [Date], aliases: true)
123123
else
124-
YAML.safe_load(cont, [Date])
124+
YAML.safe_load(cont, [Date], [], [], true)
125125
end
126126
end
127127
end

spec/custom_facts/util/parser_spec.rb

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -318,6 +318,16 @@ def expects_to_parse_powershell(cmd, result)
318318
let(:yaml_parser) { LegacyFacter::Util::Parser::YamlParser.new(nil, yaml_content) }
319319

320320
describe '#parse_results' do
321+
context 'when yaml anchors are present' do
322+
let(:yaml_content) { load_fixture('external_fact_yaml_anchor').read }
323+
324+
it 'parses the yaml anchors' do
325+
expected_result = { 'one' => { 'test' => { 'a' => ['foo'] } }, 'two' => { 'TEST' => { 'A' => ['foo'] } } }
326+
327+
expect(yaml_parser.parse_results).to eq(expected_result)
328+
end
329+
end
330+
321331
context 'when yaml contains Time formatted fields' do
322332
context 'when time zone is present' do
323333
let(:yaml_content) { load_fixture('external_fact_yaml').read }
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
---
2+
one:
3+
test:
4+
a: &a1
5+
- foo
6+
two:
7+
TEST:
8+
A: *a1

0 commit comments

Comments
 (0)