Skip to content

Commit c2d14d8

Browse files
committed
(PUP-6930) Make DUPLICATE_DEFAULT an error
Before this, a DUPLICATE_KEY was under the control of the `strict` setting. This commit changes that to be a hard error.
1 parent e49a882 commit c2d14d8

File tree

3 files changed

+18
-55
lines changed

3 files changed

+18
-55
lines changed

lib/puppet/pops/issues.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -619,7 +619,7 @@ def self.hard_issue(issue_code, *args, &block)
619619
"The key '#{key}' is declared more than once"
620620
end
621621

622-
DUPLICATE_DEFAULT = issue :DUPLICATE_DEFAULT, :container do
622+
DUPLICATE_DEFAULT = hard_issue :DUPLICATE_DEFAULT, :container do
623623
"This #{label.label(container)} already has a 'default' entry - this is a duplicate"
624624
end
625625

lib/puppet/pops/validation/validator_factory_4_0.rb

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@ def severity_producer
2828
p[Issues::FUTURE_RESERVED_WORD] = :deprecation
2929

3030
p[Issues::DUPLICATE_KEY] = Puppet[:strict] == :off ? :ignore : Puppet[:strict]
31-
p[Issues::DUPLICATE_DEFAULT] = Puppet[:strict] == :off ? :ignore : Puppet[:strict]
3231
p[Issues::NAME_WITH_HYPHEN] = :error
3332
p[Issues::EMPTY_RESOURCE_SPECIALIZATION] = :ignore
3433
p

spec/unit/pops/validator/validator_spec.rb

Lines changed: 17 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -56,20 +56,6 @@ def validate(model)
5656
expect(acceptor.error_count).to eql(0)
5757
expect(acceptor).to have_issue(Puppet::Pops::Issues::DUPLICATE_KEY)
5858
end
59-
60-
it 'produces a warning for duplicate default in a case expression' do
61-
acceptor = validate(parse('case 1 { default: {1} default : {2} }'))
62-
expect(acceptor.warning_count).to eql(1)
63-
expect(acceptor.error_count).to eql(0)
64-
expect(acceptor).to have_issue(Puppet::Pops::Issues::DUPLICATE_DEFAULT)
65-
end
66-
67-
it 'produces a warning for duplicate default in a selector expression' do
68-
acceptor = validate(parse(' 1 ? { default => 1, default => 2 }'))
69-
expect(acceptor.warning_count).to eql(1)
70-
expect(acceptor.error_count).to eql(0)
71-
expect(acceptor).to have_issue(Puppet::Pops::Issues::DUPLICATE_DEFAULT)
72-
end
7359
end
7460

7561
context 'with --strict set to warning' do
@@ -80,20 +66,6 @@ def validate(model)
8066
expect(acceptor.error_count).to eql(0)
8167
expect(acceptor).to have_issue(Puppet::Pops::Issues::DUPLICATE_KEY)
8268
end
83-
84-
it 'produces a warning for duplicate default in a case expression' do
85-
acceptor = validate(parse('case 1 { default: {1} default : {2} }'))
86-
expect(acceptor.warning_count).to eql(1)
87-
expect(acceptor.error_count).to eql(0)
88-
expect(acceptor).to have_issue(Puppet::Pops::Issues::DUPLICATE_DEFAULT)
89-
end
90-
91-
it 'produces a warning for duplicate default in a selector expression' do
92-
acceptor = validate(parse(' 1 ? { default => 1, default => 2 }'))
93-
expect(acceptor.warning_count).to eql(1)
94-
expect(acceptor.error_count).to eql(0)
95-
expect(acceptor).to have_issue(Puppet::Pops::Issues::DUPLICATE_DEFAULT)
96-
end
9769
end
9870

9971
context 'with --strict set to error' do
@@ -104,20 +76,6 @@ def validate(model)
10476
expect(acceptor.error_count).to eql(1)
10577
expect(acceptor).to have_issue(Puppet::Pops::Issues::DUPLICATE_KEY)
10678
end
107-
108-
it 'produces an error for duplicate default in a case expression' do
109-
acceptor = validate(parse('case 1 { default: {1} default : {2} }'))
110-
expect(acceptor.warning_count).to eql(0)
111-
expect(acceptor.error_count).to eql(1)
112-
expect(acceptor).to have_issue(Puppet::Pops::Issues::DUPLICATE_DEFAULT)
113-
end
114-
115-
it 'produces an error for duplicate default in a selector expression' do
116-
acceptor = validate(parse(' 1 ? { default => 1, default => 2 }'))
117-
expect(acceptor.warning_count).to eql(0)
118-
expect(acceptor.error_count).to eql(1)
119-
expect(acceptor).to have_issue(Puppet::Pops::Issues::DUPLICATE_DEFAULT)
120-
end
12179
end
12280

12381
context 'with --strict set to off' do
@@ -128,19 +86,25 @@ def validate(model)
12886
expect(acceptor.error_count).to eql(0)
12987
expect(acceptor).to_not have_issue(Puppet::Pops::Issues::DUPLICATE_KEY)
13088
end
89+
end
13190

132-
it 'does not produce an error for duplicate default in a case expression' do
133-
acceptor = validate(parse('case 1 { default: {1} default : {2} }'))
134-
expect(acceptor.warning_count).to eql(0)
135-
expect(acceptor.error_count).to eql(0)
136-
expect(acceptor).to_not have_issue(Puppet::Pops::Issues::DUPLICATE_DEFAULT)
137-
end
91+
[:off, :warning, :error].each do |level|
92+
context "with --strict set to #{level}" do
93+
before(:each) { Puppet[:strict] = level }
13894

139-
it 'does not produce an error for duplicate default in a selector expression' do
140-
acceptor = validate(parse(' 1 ? { default => 1, default => 2 }'))
141-
expect(acceptor.warning_count).to eql(0)
142-
expect(acceptor.error_count).to eql(0)
143-
expect(acceptor).to_not have_issue(Puppet::Pops::Issues::DUPLICATE_DEFAULT)
95+
it 'produces an error for duplicate default in a case expression' do
96+
acceptor = validate(parse('case 1 { default: {1} default : {2} }'))
97+
expect(acceptor.warning_count).to eql(0)
98+
expect(acceptor.error_count).to eql(1)
99+
expect(acceptor).to have_issue(Puppet::Pops::Issues::DUPLICATE_DEFAULT)
100+
end
101+
102+
it 'prouces an error for duplicate default in a selector expression' do
103+
acceptor = validate(parse(' 1 ? { default => 1, default => 2 }'))
104+
expect(acceptor.warning_count).to eql(0)
105+
expect(acceptor.error_count).to eql(1)
106+
expect(acceptor).to have_issue(Puppet::Pops::Issues::DUPLICATE_DEFAULT)
107+
end
144108
end
145109
end
146110

0 commit comments

Comments
 (0)