mutant-rspec 0.11.18 → 0.11.20

Sign up to get free protection for your applications and to get access to all the features.
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