Merge pull request #346 from tphoney/MODULES-3958

(MODULES-3958) use rspec-mock and add coverage
This commit is contained in:
Eimhin Laverty
2019-02-14 14:25:22 +00:00
committed by GitHub
10 changed files with 72 additions and 35 deletions

View File

@@ -1 +1 @@
--relative

View File

@@ -1,4 +1,7 @@
--- ---
.gitlab-ci.yml:
unmanaged: true
.travis.yml: .travis.yml:
docker_sets: docker_sets:
- set: docker/centos-7 - set: docker/centos-7
@@ -9,6 +12,9 @@
branches: branches:
- release - release
appveyor.yml:
delete: true
Gemfile: Gemfile:
optional: optional:
':development': ':development':
@@ -26,8 +32,6 @@ Gemfile:
- mingw - mingw
- x64_mingw - x64_mingw
appveyor.yml: spec/spec_helper.rb:
delete: true mock_with: ':rspec'
coverage_report: true
.gitlab-ci.yml:
unmanaged: true

View File

@@ -79,5 +79,5 @@
], ],
"template-url": "https://github.com/puppetlabs/pdk-templates/", "template-url": "https://github.com/puppetlabs/pdk-templates/",
"template-ref": "1.9.0-0-g7281db5", "template-ref": "1.9.0-0-g7281db5",
"pdk-version": "1.9.0" "pdk-version": "1.7.1"
} }

View File

@@ -1,3 +1,7 @@
RSpec.configure do |c|
c.mock_with :rspec
end
require 'puppetlabs_spec_helper/module_spec_helper' require 'puppetlabs_spec_helper/module_spec_helper'
require 'rspec-puppet-facts' require 'rspec-puppet-facts'
@@ -34,6 +38,7 @@ RSpec.configure do |c|
end end
c.filter_run_excluding(bolt: true) unless ENV['GEM_BOLT'] c.filter_run_excluding(bolt: true) unless ENV['GEM_BOLT']
c.after(:suite) do c.after(:suite) do
RSpec::Puppet::Coverage.report!(0)
end end
end end

28
spec/spec_helper_local.rb Normal file
View File

@@ -0,0 +1,28 @@
if ENV['COVERAGE'] == 'yes'
require 'simplecov'
require 'simplecov-console'
require 'codecov'
SimpleCov.formatters = [
SimpleCov::Formatter::HTMLFormatter,
SimpleCov::Formatter::Console,
SimpleCov::Formatter::Codecov,
]
SimpleCov.start do
track_files 'lib/**/*.rb'
add_filter '/spec'
# do not track vendored files
add_filter '/vendor'
add_filter '/.vendor'
# do not track gitignored files
# this adds about 4 seconds to the coverage check
# this could definitely be optimized
add_filter do |f|
# system returns true if exit status is 0, which with git-check-ignore means file is ignored
system("git check-ignore --quiet #{f.filename}")
end
end
end

View File

@@ -15,15 +15,15 @@ end
def symlink_and_test(symlink_path, java_home) def symlink_and_test(symlink_path, java_home)
File.symlink(symlink_path, './java_test') File.symlink(symlink_path, './java_test')
Facter::Util::Resolution.expects(:which).with('java').returns('./java_test') expect(Facter::Util::Resolution).to receive(:which).with('java').and_return('./java_test')
File.expects(:realpath).with('./java_test').returns(symlink_path) expect(File).to receive(:realpath).with('./java_test').and_return(symlink_path)
expect(Facter.value(:java_default_home)).to eql java_home expect(Facter.value(:java_default_home)).to eql java_home
end end
describe 'java_default_home' do describe 'java_default_home' do
before(:each) do before(:each) do
Facter.clear Facter.clear
Facter.fact(:kernel).stubs(:value).returns('Linux') allow(Facter.fact(:kernel)).to receive(:value).once.and_return('Linux')
end end
context 'when java found in PATH' do context 'when java found in PATH' do
@@ -46,8 +46,8 @@ describe 'java_default_home' do
context 'when java not present, return nil' do context 'when java not present, return nil' do
it do it do
Facter::Util::Resolution.stubs(:exec) allow(Facter::Util::Resolution).to receive(:exec) # Catch all other calls
Facter::Util::Resolution.expects(:which).with('java').at_least(1).returns(false) expect(Facter::Util::Resolution).to receive(:which).with('java').at_least(1).and_return(false)
expect(Facter.value(:java_default_home)).to be_nil expect(Facter.value(:java_default_home)).to be_nil
end end
end end

View File

@@ -3,10 +3,10 @@ require 'spec_helper'
describe 'java_libjvm_path' do describe 'java_libjvm_path' do
before(:each) do before(:each) do
Facter.clear Facter.clear
Facter.fact(:kernel).stubs(:value).returns('Linux') allow(Facter.fact(:kernel)).to receive(:value).once.and_return('Linux')
java_default_home = '/usr/lib/jvm/java-8-openjdk-amd64' java_default_home = '/usr/lib/jvm/java-8-openjdk-amd64'
Facter.fact(:java_default_home).stubs(:value).returns(java_default_home) allow(Facter.fact(:java_default_home)).to receive(:value).once.and_return(java_default_home)
Dir.stubs(:glob).with("#{java_default_home}/jre/lib/**/libjvm.so").returns(['/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/server/libjvm.so']) allow(Dir).to receive(:glob).with("#{java_default_home}/jre/lib/**/libjvm.so").and_return(['/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/server/libjvm.so'])
end end
context 'when on Linux, return libjvm path' do context 'when on Linux, return libjvm path' do

View File

@@ -7,7 +7,7 @@ describe 'java_major_version' do
context 'when java_version fact present, returns major version' do context 'when java_version fact present, returns major version' do
before :each do before :each do
Facter.fact(:java_version).stubs(:value).returns('1.7.0_71') allow(Facter.fact(:java_version)).to receive(:value).and_return('1.7.0_71')
end end
it do it do
expect(Facter.fact(:java_major_version).value).to eq('7') expect(Facter.fact(:java_major_version).value).to eq('7')
@@ -16,7 +16,7 @@ describe 'java_major_version' do
context 'when java not present, returns nil' do context 'when java not present, returns nil' do
before :each do before :each do
Facter.fact(:java_version).stubs(:value).returns(nil) allow(Facter.fact(:java_version)).to receive(:value).and_return('nil')
end end
it do it do
expect(Facter.fact(:java_major_version).value).to be_nil expect(Facter.fact(:java_major_version).value).to be_nil

View File

@@ -7,7 +7,7 @@ describe 'java_patch_level' do
context 'when java is installed returns java patch version extracted from java_version fact' do context 'when java is installed returns java patch version extracted from java_version fact' do
before :each do before :each do
Facter.fact(:java_version).stubs(:value).returns('1.7.0_71') allow(Facter.fact(:java_version)).to receive(:value).and_return('1.7.0_71')
end end
it do it do
expect(Facter.fact(:java_patch_level).value).to eq('71') expect(Facter.fact(:java_patch_level).value).to eq('71')
@@ -16,7 +16,7 @@ describe 'java_patch_level' do
context 'when java is not installed returns nil' do context 'when java is not installed returns nil' do
before :each do before :each do
Facter.fact(:java_version).stubs(:value).returns(nil) allow(Facter.fact(:java_version)).to receive(:value).and_return('nil')
end end
it do it do
expect(Facter.fact(:java_patch_level).value).to be_nil expect(Facter.fact(:java_patch_level).value).to be_nil

View File

@@ -18,37 +18,37 @@ describe 'java_version' do
context 'when java present, returns java version' do context 'when java present, returns java version' do
context 'on OpenBSD', with_env: true do context 'on OpenBSD', with_env: true do
before(:each) do before(:each) do
Facter.fact(:operatingsystem).stubs(:value).returns('OpenBSD') allow(Facter.fact(:operatingsystem)).to receive(:value).and_return('OpenBSD')
end end
let(:facts) { { operatingsystem: 'OpenBSD' } } let(:facts) { { operatingsystem: 'OpenBSD' } }
it do it do
Facter::Util::Resolution.expects(:which).with('java').returns('/usr/local/jdk-1.7.0/jre/bin/java') expect(Facter::Util::Resolution).to receive(:which).with('java').and_return('/usr/local/jdk-1.7.0/jre/bin/java')
Facter::Util::Resolution.expects(:exec).with('java -Xmx12m -version 2>&1').returns(openjdk_7_output) expect(Facter::Util::Resolution).to receive(:exec).with('java -Xmx12m -version 2>&1').and_return(openjdk_7_output)
expect(Facter.value(:java_version)).to eq('1.7.0_71') expect(Facter.value(:java_version)).to eq('1.7.0_71')
end end
end end
context 'when on Darwin' do context 'when on Darwin' do
before(:each) do before(:each) do
Facter.fact(:operatingsystem).stubs(:value).returns('Darwin') allow(Facter.fact(:operatingsystem)).to receive(:value).and_return('Darwin')
end end
let(:facts) { { operatingsystem: 'Darwin' } } let(:facts) { { operatingsystem: 'Darwin' } }
it do it do
Facter::Util::Resolution.expects(:exec).with('/usr/libexec/java_home --failfast 2>&1').returns('/Library/Java/JavaVirtualMachines/jdk1.7.0_71.jdk/Contents/Home') expect(Facter::Util::Resolution).to receive(:exec).with('/usr/libexec/java_home --failfast 2>&1').and_return('/Library/Java/JavaVirtualMachines/jdk1.7.0_71.jdk/Contents/Home')
Facter::Util::Resolution.expects(:exec).with('java -Xmx12m -version 2>&1').returns(jdk_7_hotspot_output) expect(Facter::Util::Resolution).to receive(:exec).with('java -Xmx12m -version 2>&1').and_return(jdk_7_hotspot_output)
expect(Facter.value(:java_version)).to eql '1.7.0_71' expect(Facter.value(:java_version)).to eql '1.7.0_71'
end end
end end
context 'when on other systems' do context 'when on other systems' do
before(:each) do before(:each) do
Facter.fact(:operatingsystem).stubs(:value).returns('MyOS') allow(Facter.fact(:operatingsystem)).to receive(:value).and_return('MyOS')
end end
let(:facts) { { operatingsystem: 'MyOS' } } let(:facts) { { operatingsystem: 'MyOS' } }
it do it do
Facter::Util::Resolution.expects(:which).with('java').returns('/path/to/java') expect(Facter::Util::Resolution).to receive(:which).with('java').and_return('/path/to/java')
Facter::Util::Resolution.expects(:exec).with('java -Xmx12m -version 2>&1').returns(jdk_7_hotspot_output) expect(Facter::Util::Resolution).to receive(:exec).with('java -Xmx12m -version 2>&1').and_return(jdk_7_hotspot_output)
expect(Facter.value(:java_version)).to eq('1.7.0_71') expect(Facter.value(:java_version)).to eq('1.7.0_71')
end end
end end
@@ -57,34 +57,34 @@ describe 'java_version' do
context 'when java not present, returns nil' do context 'when java not present, returns nil' do
context 'on OpenBSD', with_env: true do context 'on OpenBSD', with_env: true do
before(:each) do before(:each) do
Facter.fact(:operatingsystem).stubs(:value).returns('OpenBSD') allow(Facter.fact(:operatingsystem)).to receive(:value).and_return('OpenBSD')
end end
let(:facts) { { operatingsystem: 'OpenBSD' } } let(:facts) { { operatingsystem: 'OpenBSD' } }
it do it do
Facter::Util::Resolution.stubs(:exec) allow(Facter::Util::Resolution).to receive(:exec) # Catch all other calls
expect(Facter.value(:java_version)).to be_nil expect(Facter.value(:java_version)).to be_nil
end end
end end
context 'when on Darwin' do context 'when on Darwin' do
before(:each) do before(:each) do
Facter.fact(:operatingsystem).stubs(:value).returns('Darwin') allow(Facter.fact(:operatingsystem)).to receive(:value).and_return('Darwin')
end end
let(:facts) { { operatingsystem: 'Darwin' } } let(:facts) { { operatingsystem: 'Darwin' } }
it do it do
Facter::Util::Resolution.expects(:exec).at_least(1).with('/usr/libexec/java_home --failfast 2>&1').returns('Unable to find any JVMs matching version "(null)".') expect(Facter::Util::Resolution).to receive(:exec).with('/usr/libexec/java_home --failfast 2>&1').at_least(1).and_return('Unable to find any JVMs matching version "(null)".')
expect(Facter.value(:java_version)).to be_nil expect(Facter.value(:java_version)).to be_nil
end end
end end
context 'when on other systems' do context 'when on other systems' do
before(:each) do before(:each) do
Facter.fact(:operatingsystem).stubs(:value).returns('MyOS') allow(Facter.fact(:operatingsystem)).to receive(:value).and_return('MyOS')
end end
let(:facts) { { operatingsystem: 'MyOS' } } let(:facts) { { operatingsystem: 'MyOS' } }
it do it do
Facter::Util::Resolution.expects(:which).at_least(1).with('java').returns(false) expect(Facter::Util::Resolution).to receive(:which).at_least(1).with('java').and_return(false)
expect(Facter.value(:java_version)).to be_nil expect(Facter.value(:java_version)).to be_nil
end end
end end