diff options
author | David Schmitt <david@black.co.at> | 2016-06-30 17:52:45 +0100 |
---|---|---|
committer | David Schmitt <david@black.co.at> | 2016-07-01 12:03:59 +0100 |
commit | 5c51463c1f9e89bfd012c737c19581ac0f771926 (patch) | |
tree | 6f14d6a86c9188e33c998369433864b799288908 /spec/functions/loadjson_spec.rb | |
parent | 6bab96ec26c7ae7350717a0b5884d26a03e3b9ac (diff) |
Fix load_module_metadata and loadjson tests to pass with fully deployed module
When replacing the lib/ and manifests/ symlinks in the fixtures with
a proper top-level symlink, puppet 4 starts loading the metadata.json
before loading functions, which confuses these tests. Added more specific
expectations, and provide data for that call.
Diffstat (limited to 'spec/functions/loadjson_spec.rb')
-rw-r--r-- | spec/functions/loadjson_spec.rb | 67 |
1 files changed, 39 insertions, 28 deletions
diff --git a/spec/functions/loadjson_spec.rb b/spec/functions/loadjson_spec.rb index 12a9b82..a00dff9 100644 --- a/spec/functions/loadjson_spec.rb +++ b/spec/functions/loadjson_spec.rb @@ -4,35 +4,46 @@ describe 'loadjson' do it { is_expected.not_to eq(nil) } it { is_expected.to run.with_params().and_raise_error(ArgumentError, /wrong number of arguments/i) } - context 'when a non-existing file is specified' do - let(:filename) { '/tmp/doesnotexist' } - before { - File.expects(:exists?).with(filename).returns(false).once - PSON.expects(:load).never - } - it { is_expected.to run.with_params(filename, {'default' => 'value'}).and_return({'default' => 'value'}) } - end + describe "when calling with valid arguments" do + before :each do + if RSpec.configuration.puppet_future + allow(File).to receive(:read).with(/\/stdlib\/metadata.json/, {:encoding=>"utf-8"}).and_return('{"name": "puppetlabs-stdlib"}') + else + allow(File).to receive(:read).with(/\/stdlib\/metadata.json/).and_return('{"name": "puppetlabs-stdlib"}') + end + end - context 'when an existing file is specified' do - let(:filename) { '/tmp/doesexist' } - let(:data) { { 'key' => 'value' } } - let(:json) { '{"key":"value"}' } - before { - File.expects(:exists?).with(filename).returns(true).once - File.expects(:read).with(filename).returns(json).once - PSON.expects(:load).with(json).returns(data).once - } - it { is_expected.to run.with_params(filename).and_return(data) } - end + context 'when a non-existing file is specified' do + let(:filename) { '/tmp/doesnotexist' } + before { + allow(File).to receive(:exists?).with(filename).and_return(false).once + allow(PSON).to receive(:load).never + } + it { is_expected.to run.with_params(filename, {'default' => 'value'}).and_return({'default' => 'value'}) } + end + + context 'when an existing file is specified' do + let(:filename) { '/tmp/doesexist' } + let(:data) { { 'key' => 'value' } } + let(:json) { '{"key":"value"}' } + before { + allow(File).to receive(:exists?).with(filename).and_return(true).once + allow(File).to receive(:read).with(filename).and_return(json).once + allow(File).to receive(:read).with(filename).and_return(json).once + allow(PSON).to receive(:load).with(json).and_return(data).once + } + it { is_expected.to run.with_params(filename).and_return(data) } + end - context 'when the file could not be parsed' do - let(:filename) { '/tmp/doesexist' } - let(:json) { '{"key":"value"}' } - before { - File.expects(:exists?).with(filename).returns(true).once - File.expects(:read).with(filename).returns(json).once - PSON.stubs(:load).with(json).once.raises StandardError, 'Something terrible have happened!' - } - it { is_expected.to run.with_params(filename, {'default' => 'value'}).and_return({'default' => 'value'}) } + context 'when the file could not be parsed' do + let(:filename) { '/tmp/doesexist' } + let(:json) { '{"key":"value"}' } + before { + allow(File).to receive(:exists?).with(filename).and_return(true).once + allow(File).to receive(:read).with(filename).and_return(json).once + allow(PSON).to receive(:load).with(json).once.and_raise StandardError, 'Something terrible have happened!' + } + it { is_expected.to run.with_params(filename, {'default' => 'value'}).and_return({'default' => 'value'}) } + end end end |