Skip to content

Commit b880af5

Browse files
Add multi-version support to provider unit tests
Add support for testing against multiple kernel and iptables versions, to ensure that features gated by kernel or iptables version aren't rendered un-testable. Also, pull the handy construct for handling the addition of '--wait' in later iptables versions in the ip6tables test cases over to iptables tests as well, because with multi-version support, the test cases for iptables will start to need it as well.
1 parent ebabdc3 commit b880af5

File tree

2 files changed

+17
-0
lines changed

2 files changed

+17
-0
lines changed

spec/unit/puppet/provider/ip6tables_spec.rb

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,14 @@ def stub_iptables
124124
describe 'when working out general_args' do
125125
HASH_TO_ARGS6.each do |test_name, data|
126126
describe "for test data '#{test_name}'" do
127+
before :each do
128+
# Allow examples to stub kernel and iptables versions
129+
allow(Facter.fact(:ip6tables_version)).to receive(:value).and_return(data[:ip6tables_version]) if data[:ip6tables_version]
130+
allow(Facter.fact(:kernelversion)).to receive(:value).and_return(data[:kernel_version]) if data[:kernel_version]
131+
# Unload existing provider so provider features get re-assessed after we stub the determining facts
132+
Puppet::Type.type(:firewall).unprovide(:ip6tables)
133+
end
134+
127135
let(:resource) { Puppet::Type.type(:firewall).new(data[:params]) }
128136
let(:provider6) { Puppet::Type.type(:firewall).provider(:ip6tables) }
129137
let(:instance) { provider6.new(resource) }

spec/unit/puppet/provider/iptables_spec.rb

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -243,11 +243,20 @@
243243
describe 'when working out general_args' do
244244
HASH_TO_ARGS.each do |test_name, data|
245245
describe "for test data '#{test_name}'" do
246+
before :each do
247+
# Allow examples to stub kernel and iptables versions
248+
allow(Facter.fact(:iptables_version)).to receive(:value).and_return(data[:iptables_version]) if data[:iptables_version]
249+
allow(Facter.fact(:kernelversion)).to receive(:value).and_return(data[:kernel_version]) if data[:kernel_version]
250+
# Unload existing provider so provider features get re-assessed after we stub the determining facts
251+
Puppet::Type.type(:firewall).unprovide(:iptables)
252+
end
253+
246254
let(:resource) { Puppet::Type.type(:firewall).new(data[:params]) }
247255
let(:provider) { Puppet::Type.type(:firewall).provider(:iptables) }
248256
let(:instance) { provider.new(resource) }
249257

250258
it 'general_args should be valid' do
259+
data[:args].unshift('--wait') if instance.general_args.flatten.include? '--wait'
251260
expect(instance.general_args.flatten).to eq(data[:args])
252261
end
253262
end

0 commit comments

Comments
 (0)