rspec-simplecov 0.2.0 → 0.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 18e5d74f0728f2a39b955142f1486128bfeaca4d
4
- data.tar.gz: 2d9d3b182431ab20c2d94588ada24bf5968a9f74
3
+ metadata.gz: c2a352c8f5e4e438ff423a2d92a353154d16b29f
4
+ data.tar.gz: cd15528861cfa879636264b77369851817176210
5
5
  SHA512:
6
- metadata.gz: 8ef2bc32099167f309cfcc16d0ed344b3faa728824f7be880543752bed772b9cd35ee6afffa1343c4779538a1ace9560b879ddb3d5b43ee0419e3bc3e477a8da
7
- data.tar.gz: 716c54473321da07c60de528664044b8a71c441dedce01602d8a7194438ff8c54437b8baf5c1c86a42f676f75c4f9e7bfb98dc54dc15a298aacd13c39f69872d
6
+ metadata.gz: c2768133262ac5edd6cba44927daad346280ec8f32069eab8c7be098203c99ef7e450c296fd3ec513f80d6449cc849a1afb19d4018de78b4b5f316511de76c54
7
+ data.tar.gz: 3c6535d2d507401b363169f2bcbba37229fc4a869294497b294fa77242d1f88afa9720c5edf8d68a02a97f46f56ec785f103817367a13868b08322bad85acf1c
@@ -1,61 +1,96 @@
1
1
  module RSpec
2
2
  module SimpleCov
3
+ class Container
4
+ attr_accessor :example_group, :example_context, :example
5
+
6
+ def initialize
7
+ @example_group = nil
8
+ @example_context = nil
9
+ @example = nil
10
+ end
11
+ end
12
+
3
13
  module Setup
4
14
 
5
15
  class << self
6
16
 
7
- # Ugly hack ...
8
- def with_metadata_key_location_unreserved
17
+ def remove_location_from_reserver_keys
9
18
  RSpec::Core::Metadata::RESERVED_KEYS.delete(:location)
10
- yield
19
+ end
20
+
21
+ def reinstate_location_in_reserved_keys
11
22
  RSpec::Core::Metadata::RESERVED_KEYS.push(:location)
12
23
  end
13
24
 
25
+ def build_example( context, configuration )
26
+ context.it configuration.test_case_text do
27
+ result = configuration.described_thing.result
28
+ minimum_coverage = configuration.described_thing.minimum_coverage
29
+ configuration.described_thing.running = true
30
+
31
+ expect( result.covered_percent ).to be >= minimum_coverage
32
+ end
33
+ end
34
+
35
+ def build_contexts_and_example( coverage, configuration )
36
+ remove_location_from_reserver_keys
37
+
38
+ coverage.example_group = RSpec.describe( configuration.described_thing, location: 'spec_helper_spec.rb')
39
+ coverage.example_context = coverage.example_group.context configuration.context_text
40
+ coverage.example = build_example( coverage.example_context, configuration )
41
+
42
+ reinstate_location_in_reserved_keys
43
+ end
44
+
45
+ def run_example( coverage )
46
+ RSpec.configuration.reporter.example_group_started coverage.example_group
47
+ RSpec.configuration.reporter.example_group_started coverage.example_context
48
+ RSpec.configuration.reporter.example_started coverage.example
49
+ coverage.example_group.run
50
+ end
51
+
52
+ def reset_example_group_paths( example_group, path )
53
+ example_group.metadata[ :absolute_file_path ] = path
54
+ example_group.metadata[ :rerun_file_path ] = path
55
+ example_group.metadata[ :file_path ] = path
56
+ end
57
+
58
+ def fix_example_backtrace( example, backtrace )
59
+ return unless example.execution_result.exception
60
+
61
+ example.execution_result.exception.backtrace.push( *backtrace )
62
+ end
63
+
64
+ def evaluate_and_report_result( example )
65
+ passed = example.execution_result.status == :passed
66
+ failed = !passed
67
+
68
+ RSpec.configuration.reporter.example_failed example if failed
69
+ RSpec.configuration.reporter.example_passed example if passed
70
+ end
71
+
72
+ def mark_contexts_as_finished( coverage )
73
+ RSpec.configuration.reporter.example_group_finished coverage.example_context
74
+ RSpec.configuration.reporter.example_group_finished coverage.example_group
75
+ end
76
+
77
+ def setup_execute_and_analyse_coverage_example( configuration )
78
+ include RSpec::SimpleCov
79
+
80
+ coverage = Container.new
81
+
82
+ Setup.build_contexts_and_example( coverage, configuration )
83
+ Setup.run_example( coverage )
84
+ Setup.reset_example_group_paths( coverage.example_group, configuration.caller_path )
85
+ Setup.fix_example_backtrace( coverage.example, configuration.backtrace )
86
+ Setup.evaluate_and_report_result( coverage.example )
87
+ Setup.mark_contexts_as_finished( coverage )
88
+ end
89
+
14
90
  def do( configuration )
15
91
  RSpec.configure do |config|
16
-
17
92
  config.after(:suite) do
18
- # Setup empty vars to hold the group and example refs.
19
- coverage_example_group = nil
20
- coverage_example_context = nil
21
- coverage_example = nil
22
-
23
- # Build the fake test for coverage
24
- RSpec::SimpleCov::Setup.with_metadata_key_location_unreserved do
25
- coverage_example_group = RSpec.describe( configuration.described_thing, location: 'spec_helper_spec.rb') do
26
- coverage_example_context = context configuration.context_text do
27
- coverage_example = it configuration.test_case_text do
28
- expect( configuration.described_thing.result.covered_percent ).to be >= configuration.described_thing.minimum_coverage
29
- end
30
- end
31
- end
32
- end
33
-
34
- # Run the test
35
- RSpec.configuration.reporter.example_group_started coverage_example_group
36
- RSpec.configuration.reporter.example_group_started coverage_example_context
37
- RSpec.configuration.reporter.example_started coverage_example
38
- coverage_example_group.run
39
-
40
- coverage_example_group.metadata[ :absolute_file_path ] = configuration.caller_path
41
- coverage_example_group.metadata[ :rerun_file_path ] = configuration.caller_path
42
- coverage_example_group.metadata[ :file_path ] = configuration.caller_path
43
-
44
- if coverage_example.execution_result.exception
45
- coverage_example.execution_result.exception.backtrace.push( *configuration.backtrace )
46
- end
47
-
48
- # Evaluate the result
49
- passed = coverage_example.execution_result.status == :passed
50
- failed = !passed
51
-
52
- # Message the reporter to have it show up in the results
53
- RSpec.configuration.reporter.example_failed coverage_example if failed
54
- RSpec.configuration.reporter.example_passed coverage_example if passed
55
-
56
- # Close out the reporter groups
57
- RSpec.configuration.reporter.example_group_finished coverage_example_context
58
- RSpec.configuration.reporter.example_group_finished coverage_example_group
93
+ Setup.setup_execute_and_analyse_coverage_example( configuration )
59
94
  end
60
95
  end
61
96
  end
@@ -1,5 +1,5 @@
1
1
  module RSpec
2
2
  module SimpleCov
3
- VERSION = "0.2.0"
3
+ VERSION = "0.2.2"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rspec-simplecov
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.2.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jonas Schubert Erlandsson