Skip to content

Commit b8b1412

Browse files
authored
Merge pull request #716 from rodjek/100_coverage
Improve self test coverage
2 parents f2e05f4 + 249d24d commit b8b1412

14 files changed

+456
-89
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,3 +7,4 @@
77
/tmp/
88
/spec/fixtures/modules/augeas_core/
99
/spec/fixtures/modules/stdlib/
10+
/coverage/

Gemfile

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,8 +43,9 @@ else
4343
gem 'sync' if (RUBY_VERSION >= '2.7.0')
4444
end
4545

46-
if ENV['COVERAGE'] == 'yes'
46+
if ENV['COVERAGE']
4747
gem 'coveralls', :require => false
48+
gem 'simplecov', :require => false
4849
end
4950

5051
gem 'win32-taskscheduler', :platforms => [:mingw, :x64_mingw, :mswin]

Rakefile

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,10 @@ namespace :test do
3535
end
3636
end
3737

38+
RSpec::Core::RakeTask.new(:spec_unit) do |t|
39+
t.pattern = 'spec/unit/**/*_spec.rb'
40+
end
41+
3842
task :setup do
3943
puppet_version = Gem::Version.new(Puppet.version)
4044

@@ -64,6 +68,17 @@ namespace :test do
6468
end
6569
end
6670
end
71+
72+
task :unit do
73+
begin
74+
Rake::Task['test:setup'].invoke
75+
ENV['COVERAGE'] = 'local'
76+
Rake::Task['test:spec_unit'].invoke
77+
ensure
78+
ENV.delete('COVERAGE')
79+
Rake::Task['test:teardown'].invoke
80+
end
81+
end
6782
end
6883

6984
task :test do

lib/rspec-puppet/matchers/count_generic.rb

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,15 @@ class CountGeneric
77
'Stage[main]',
88
].freeze
99

10+
attr_reader :resource_type
11+
1012
def initialize(type, count, *method)
1113
if type.nil?
1214
@type = method[0].to_s.gsub(/^have_(.+)_resource_count$/, '\1')
1315
else
1416
@type = type
1517
end
16-
@referenced_type = referenced_type(@type)
18+
@resource_type = referenced_type(@type)
1719
@expected_number = count.to_i
1820
end
1921

@@ -30,7 +32,7 @@ def matches?(catalogue)
3032
end
3133
else
3234
resources.count do |res|
33-
res.type == @referenced_type
35+
res.type == @resource_type
3436
end
3537
end
3638

@@ -45,7 +47,7 @@ def description
4547
desc << "#{@expected_number == 1 ? "class" : "classes" }"
4648
else
4749
unless @type == "resource"
48-
desc << "#{@referenced_type}"
50+
desc << "#{@resource_type}"
4951
end
5052
desc << "#{@expected_number == 1 ? "resource" : "resources" }"
5153
end

lib/rspec-puppet/matchers/include_class.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ module ManifestMatchers
44

55
matcher :include_class do |expected_class|
66
match do |catalogue|
7-
RSpec.deprecate(:include_class, :replacement => :contain_class)
7+
RSpec.deprecate('include_class()', :replacement => 'contain_class()')
88
catalogue.call.classes.include?(expected_class)
99
end
1010

spec/classes/test_classes_used_spec.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,11 @@
22

33
describe 'test::classes_used' do
44
it {
5-
expect(RSpec).to receive(:deprecate).with(:include_class, {:replacement => :contain_class})
5+
expect(RSpec).to receive(:deprecate).with('include_class()', {:replacement => 'contain_class()'})
66
should include_class('test::bare_class')
77
}
88
it {
9-
expect(RSpec).to receive(:deprecate).with(:include_class, {:replacement => :contain_class})
9+
expect(RSpec).to receive(:deprecate).with('include_class()', {:replacement => 'contain_class()'})
1010
should include_class('test::parameterised_class')
1111
}
1212

spec/spec_helper.rb

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,14 @@
1-
if ENV['COVERAGE'] == 'yes'
1+
if ENV['COVERAGE']
22
require 'simplecov'
33
require 'coveralls'
44

5-
SimpleCov.formatter = Coveralls::SimpleCov::Formatter
5+
if ENV['COVERAGE'] == 'yes'
6+
SimpleCov.formatter = Coveralls::SimpleCov::Formatter
7+
end
8+
69
SimpleCov.start do
7-
add_filter(/^\/spec\//)
10+
add_filter %r{^/spec/}
11+
add_filter %r{^/vendor/}
812
end
913
end
1014

@@ -21,6 +25,13 @@ def sensitive?
2125
defined?(::Puppet::Pops::Types::PSensitiveType)
2226
end
2327

28+
module Helpers
29+
def rspec2?
30+
RSpec::Version::STRING < '3'
31+
end
32+
module_function :rspec2?
33+
end
34+
2435
RSpec.configure do |c|
2536
c.module_path = File.join(File.dirname(File.expand_path(__FILE__)), 'fixtures', 'modules')
2637
c.manifest_dir = File.join(File.dirname(File.expand_path(__FILE__)), 'fixtures', 'manifests')
@@ -31,4 +42,7 @@ def sensitive?
3142
c.after(:suite) do
3243
RSpec::Puppet::Coverage.report!(0)
3344
end
45+
46+
c.include Helpers
47+
c.extend Helpers
3448
end

spec/spec_helper_unit.rb

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
if ENV['COVERAGE']
2+
require 'coveralls'
3+
require 'simplecov'
4+
5+
if ENV['COVERAGE'] == 'yes'
6+
SimpleCov.formatter = Coveralls::SimpleCov::Formatter
7+
end
8+
9+
SimpleCov.start do
10+
add_filter %r{^/spec/}
11+
add_filter %r{^/vendor/}
12+
end
13+
end
14+
15+
require 'rspec-puppet'
16+
17+
module Helpers
18+
def rspec2?
19+
RSpec::Version::STRING < '3'
20+
end
21+
module_function :rspec2?
22+
23+
def test_double(type, *args)
24+
if rspec2?
25+
double(type.to_s, *args)
26+
else
27+
instance_double(type, *args)
28+
end
29+
end
30+
end
31+
32+
RSpec.configure do |c|
33+
c.include Helpers
34+
c.extend Helpers
35+
36+
if Helpers.rspec2?
37+
RSpec::Matchers.define :be_truthy do
38+
match do |actual|
39+
!!actual == true
40+
end
41+
end
42+
43+
RSpec::Matchers.define :be_falsey do
44+
match do |actual|
45+
!!actual == false
46+
end
47+
end
48+
end
49+
end

0 commit comments

Comments
 (0)