mutant-rspec 0.11.18 → 0.11.20

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.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/mutant/integration/rspec.rb +32 -13
  3. metadata +5 -5
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ee7e283800c6ec5ee0dd6eed156e5f76a8be072bb4d0a98c9f04572a3ba5fb36
4
- data.tar.gz: fe7e9d9f7d38be67672d030421f7233d5317ce594bf4fb8d1842352fe47d6ff4
3
+ metadata.gz: af6c6f50c8549edc2da0b10a77fd2b06e8ffffe43b8714a5bfc8616bfbb1d72a
4
+ data.tar.gz: 1853428bef36290c81da8a9ab4965f99dec93fe361edd76b743b8aa360eb85d8
5
5
  SHA512:
6
- metadata.gz: 65ad928e0d0ab1dc168637548e598f291c577c4aa5fdcb5ac4ab7fdf7835f8c4e3359e7d04e96f07cff4aa848afe3d916996f65c4b5cfb37f43f591067a5e0c0
7
- data.tar.gz: 2a248342c48adb07bb1836f75ab4186c8ba159fd15e1ee92ad5a2220c1ba430d5b01ff1ae42428115819e411f9c98aa3334a42090de10926fd752ac2b91f1283
6
+ metadata.gz: b9d02be8205446e2929bd0745ba325014481df57fac8250629b6bcaa2cac848d32b34adb59adadb013b49fd4ee0fc4f297b21f311db8a00020a294e65355853f
7
+ data.tar.gz: 4a6fc890d38e2e8d4cc246d0148e972b6ee332c89fae884678788fc767bcfb16f9c366f8cbce3208eaac5dc76d62fea90eb25263d8e106cfc6008e4b02b6a122
@@ -43,6 +43,8 @@ module Mutant
43
43
  # @return [self]
44
44
  def setup
45
45
  @runner.setup($stderr, $stdout)
46
+ example_group_map
47
+ reset_examples
46
48
  self
47
49
  end
48
50
  memoize :setup
@@ -53,8 +55,7 @@ module Mutant
53
55
  #
54
56
  # @return [Result::Test]
55
57
  def call(tests)
56
- examples = tests.map(&all_tests_index)
57
- filter_examples(&examples.public_method(:include?))
58
+ setup_examples(tests.map(&all_tests_index))
58
59
  start = timer.now
59
60
  passed = @runner.run_specs(@rspec_world.ordered_example_groups).equal?(EXIT_SUCCESS)
60
61
  Result::Test.new(
@@ -63,7 +64,7 @@ module Mutant
63
64
  )
64
65
  end
65
66
 
66
- # Available tests
67
+ # All tests
67
68
  #
68
69
  # @return [Enumerable<Test>]
69
70
  def all_tests
@@ -71,8 +72,26 @@ module Mutant
71
72
  end
72
73
  memoize :all_tests
73
74
 
75
+ # Available tests
76
+ #
77
+ # @return [Enumerable<Test>]
78
+ def available_tests
79
+ all_tests_index.select { |_test, example| example.metadata.fetch(:mutant, true) }.keys
80
+ end
81
+ memoize :available_tests
82
+
74
83
  private
75
84
 
85
+ def reset_examples
86
+ @rspec_world.filtered_examples.each_value(&:clear)
87
+ end
88
+
89
+ def setup_examples(examples)
90
+ examples.each do |example|
91
+ @rspec_world.filtered_examples.fetch(example_group_map.fetch(example)) << example
92
+ end
93
+ end
94
+
76
95
  def all_tests_index
77
96
  all_examples.each_with_index.with_object({}) do |(example, example_index), index|
78
97
  index[parse_example(example, example_index)] = example
@@ -95,6 +114,15 @@ module Mutant
95
114
  )
96
115
  end
97
116
 
117
+ def example_group_map
118
+ @rspec_world.example_groups.flat_map(&:descendants).each_with_object({}) do |example_group, map|
119
+ example_group.examples.each do |example|
120
+ map[example] = example_group
121
+ end
122
+ end
123
+ end
124
+ memoize :example_group_map
125
+
98
126
  def parse_metadata(metadata)
99
127
  if metadata.key?(:mutant_expression)
100
128
  expression = metadata.fetch(:mutant_expression)
@@ -114,17 +142,8 @@ module Mutant
114
142
  end
115
143
 
116
144
  def all_examples
117
- @rspec_world.example_groups.flat_map(&:descendants).flat_map(&:examples).select do |example|
118
- example.metadata.fetch(:mutant, true)
119
- end
145
+ @rspec_world.example_groups.flat_map(&:descendants).flat_map(&:examples)
120
146
  end
121
-
122
- def filter_examples(&predicate)
123
- @rspec_world.filtered_examples.each_value do |examples|
124
- examples.keep_if(&predicate)
125
- end
126
- end
127
-
128
147
  end # Rspec
129
148
  end # Integration
130
149
  end # Mutant
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mutant-rspec
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.11.18
4
+ version: 0.11.20
5
5
  platform: ruby
6
6
  authors:
7
7
  - Markus Schirp
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-01-08 00:00:00.000000000 Z
11
+ date: 2023-05-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: mutant
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - '='
18
18
  - !ruby/object:Gem::Version
19
- version: 0.11.18
19
+ version: 0.11.20
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - '='
25
25
  - !ruby/object:Gem::Version
26
- version: 0.11.18
26
+ version: 0.11.20
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rspec-core
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -74,7 +74,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
74
74
  - !ruby/object:Gem::Version
75
75
  version: '0'
76
76
  requirements: []
77
- rubygems_version: 3.3.26
77
+ rubygems_version: 3.4.10
78
78
  signing_key:
79
79
  specification_version: 4
80
80
  summary: Rspec integration for mutant