summaryrefslogtreecommitdiff
path: root/spec/functions
diff options
context:
space:
mode:
authorDavid Schmitt <david@black.co.at>2016-06-30 17:52:45 +0100
committerDavid Schmitt <david@black.co.at>2016-07-01 12:03:59 +0100
commit5c51463c1f9e89bfd012c737c19581ac0f771926 (patch)
tree6f14d6a86c9188e33c998369433864b799288908 /spec/functions
parent6bab96ec26c7ae7350717a0b5884d26a03e3b9ac (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')
-rwxr-xr-xspec/functions/load_module_metadata_spec.rb43
-rw-r--r--spec/functions/loadjson_spec.rb67
2 files changed, 65 insertions, 45 deletions
diff --git a/spec/functions/load_module_metadata_spec.rb b/spec/functions/load_module_metadata_spec.rb
index fe665fb..1a61e2c 100755
--- a/spec/functions/load_module_metadata_spec.rb
+++ b/spec/functions/load_module_metadata_spec.rb
@@ -5,25 +5,34 @@ describe 'load_module_metadata' do
it { is_expected.to run.with_params().and_raise_error(Puppet::ParseError, /wrong number of arguments/i) }
it { is_expected.to run.with_params("one", "two", "three").and_raise_error(Puppet::ParseError, /wrong number of arguments/i) }
- it "should json parse the file" do
- allow(scope).to receive(:function_get_module_path).with(['science']).and_return('/path/to/module/')
- allow(File).to receive(:exists?).with(/metadata.json/).and_return(true)
- allow(File).to receive(:read).with(/metadata.json/).and_return('{"name": "spencer-science"}')
+ 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
+ it "should json parse the file" do
+ allow(scope).to receive(:function_get_module_path).with(['science']).and_return('/path/to/module/')
+ allow(File).to receive(:exists?).with('/path/to/module/metadata.json').and_return(true)
+ allow(File).to receive(:read).with('/path/to/module/metadata.json').and_return('{"name": "spencer-science"}')
- result = subject.call(['science'])
- expect(result['name']).to eq('spencer-science')
- end
+ result = subject.call(['science'])
+ expect(result['name']).to eq('spencer-science')
+ end
- it "should fail by default if there is no metadata.json" do
- allow(scope).to receive(:function_get_module_path).with(['science']).and_return('/path/to/module/')
- allow(File).to receive(:exists?).with(/metadata.json/).and_return(false)
- expect {subject.call(['science'])}.to raise_error(Puppet::ParseError)
- end
+ it "should fail by default if there is no metadata.json" do
+ allow(scope).to receive(:function_get_module_path).with(['science']).and_return('/path/to/module/')
+ allow(File).to receive(:exists?).with('/path/to/module/metadata.json').and_return(false)
+ expect {subject.call(['science'])}.to raise_error(Puppet::ParseError)
+ end
- it "should return nil if user allows empty metadata.json" do
- allow(scope).to receive(:function_get_module_path).with(['science']).and_return('/path/to/module/')
- allow(File).to receive(:exists?).with(/metadata.json/).and_return(false)
- result = subject.call(['science', true])
- expect(result).to eq({})
+ it "should return nil if user allows empty metadata.json" do
+ allow(scope).to receive(:function_get_module_path).with(['science']).and_return('/path/to/module/')
+ allow(File).to receive(:exists?).with('/path/to/module/metadata.json').and_return(false)
+ result = subject.call(['science', true])
+ expect(result).to eq({})
+ end
end
end
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