Skip to content

Commit 135b81c

Browse files
committed
(PUP-5937) Make --strict setting control ignore/warning/error
This makes the severity level of the re-definition of hash key follow the level of the --strict setting.
1 parent 7300d47 commit 135b81c

File tree

2 files changed

+38
-6
lines changed

2 files changed

+38
-6
lines changed

lib/puppet/pops/validation/validator_factory_4_0.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ def severity_producer
2727

2828
p[Issues::FUTURE_RESERVED_WORD] = :deprecation
2929

30-
p[Issues::DUPLICATE_KEY] = :warning
30+
p[Issues::DUPLICATE_KEY] = Puppet[:strict] == :off ? :ignore : Puppet[:strict]
3131
p[Issues::NAME_WITH_HYPHEN] = :error
3232
p[Issues::EMPTY_RESOURCE_SPECIALIZATION] = :ignore
3333
p

spec/unit/pops/validator/validator_spec.rb

Lines changed: 37 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -34,11 +34,43 @@ def validate(model)
3434
expect(validate(fqn('::_aa').var())).to_not have_issue(Puppet::Pops::Issues::ILLEGAL_VAR_NAME)
3535
end
3636

37-
it 'produces a warning for duplicate keyes in a literal hash' do
38-
acceptor = validate(parse('{ a => 1, a => 2 }'))
39-
expect(acceptor.warning_count).to eql(1)
40-
expect(acceptor.error_count).to eql(0)
41-
expect(acceptor).to have_issue(Puppet::Pops::Issues::DUPLICATE_KEY)
37+
context 'with the default settings for --strict' do
38+
it 'produces a warning for duplicate keyes in a literal hash' do
39+
acceptor = validate(parse('{ a => 1, a => 2 }'))
40+
expect(acceptor.warning_count).to eql(1)
41+
expect(acceptor.error_count).to eql(0)
42+
expect(acceptor).to have_issue(Puppet::Pops::Issues::DUPLICATE_KEY)
43+
end
44+
end
45+
46+
context 'with --strict set to warning' do
47+
before(:each) { Puppet[:strict] = :warning }
48+
it 'produces a warning for duplicate keyes in a literal hash' do
49+
acceptor = validate(parse('{ a => 1, a => 2 }'))
50+
expect(acceptor.warning_count).to eql(1)
51+
expect(acceptor.error_count).to eql(0)
52+
expect(acceptor).to have_issue(Puppet::Pops::Issues::DUPLICATE_KEY)
53+
end
54+
end
55+
56+
context 'with --strict set to error' do
57+
before(:each) { Puppet[:strict] = :error }
58+
it 'produces an error for duplicate keyes in a literal hash' do
59+
acceptor = validate(parse('{ a => 1, a => 2 }'))
60+
expect(acceptor.warning_count).to eql(0)
61+
expect(acceptor.error_count).to eql(1)
62+
expect(acceptor).to have_issue(Puppet::Pops::Issues::DUPLICATE_KEY)
63+
end
64+
end
65+
66+
context 'with --strict set to off' do
67+
before(:each) { Puppet[:strict] = :off }
68+
it 'produces an error for duplicate keyes in a literal hash' do
69+
acceptor = validate(parse('{ a => 1, a => 2 }'))
70+
expect(acceptor.warning_count).to eql(0)
71+
expect(acceptor.error_count).to eql(0)
72+
expect(acceptor).to_not have_issue(Puppet::Pops::Issues::DUPLICATE_KEY)
73+
end
4274
end
4375

4476
context 'for non productive expressions' do

0 commit comments

Comments
 (0)