mutant-rspec 0.8.0 → 0.8.1

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 +14 -20
  3. metadata +4 -4
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 1ee74df6d05e1dcf7e3bd5e794eda4f7540b340b
4
- data.tar.gz: 9f58c74f510e932174ba89b3c5300a659c231501
3
+ metadata.gz: 1ce61b03bc84a18f1aeefa23525c4528f46bfba0
4
+ data.tar.gz: e56f72c8e904b9dfc8bd78fa80ba87bbe04d48db
5
5
  SHA512:
6
- metadata.gz: 7c7eca021043f5f4bdf4976692c347574da759eb6df269fd84d8f29239849a0b8d643cb24cab9d3f8eedccff2e51d5cda110a31c6ca1fcf36a0560ac60cf2210
7
- data.tar.gz: 9715a092698081709f4a7445ccad9317b402a7acbcf2fff5e28e95d40f8dbe6bf0817959cb6dc10041480f7e1f9d0111cdfd5fc668093ebc31f146f0c4fec322
6
+ metadata.gz: e1892d1ae766c77ab5ce6382cfb31260c79e8c1e7aeeb3a9d364bcabb6f4adb04e77c7de7e6e92528f5dd49dbb3a59ff97139e8ab7ea33b6cb4583fc0c67b1e7
7
+ data.tar.gz: 1290c76e15452c0e6e81c137c74c71aea8e28d5cf500169058caf61acf45770cb5ac9c7b8a555fc8aba666cabf8bc7314be183d024d0eaced5bab20382d78990
@@ -12,19 +12,21 @@ module Mutant
12
12
  # datastructure
13
13
  # * Does not maintain a unique identification for an example,
14
14
  # aside the instances of `RSpec::Core::Example` objects itself.
15
- # For that reason identifing examples by:
15
+ # For that reason identifying examples by:
16
16
  # * full description
17
17
  # * location
18
- # Is NOT enough. It would not be uniqe. So we add an "example index"
18
+ # Is NOT enough. It would not be unique. So we add an "example index"
19
19
  # for unique reference.
20
20
  class Rspec < self
21
21
 
22
- ALL = Mutant::Expression.parse('*')
22
+ ALL_EXPRESSION = Expression::Namespace::Recursive.new(scope_name: nil)
23
23
  EXPRESSION_CANDIDATE = /\A([^ ]+)(?: )?/.freeze
24
24
  LOCATION_DELIMITER = ':'.freeze
25
25
  EXIT_SUCCESS = 0
26
26
  CLI_OPTIONS = IceNine.deep_freeze(%w[spec --fail-fast])
27
27
 
28
+ private_constant(*constants(false))
29
+
28
30
  register 'rspec'
29
31
 
30
32
  # Initialize rspec integration
@@ -32,8 +34,8 @@ module Mutant
32
34
  # @return [undefined]
33
35
  #
34
36
  # @api private
35
- #
36
- def initialize
37
+ def initialize(*)
38
+ super
37
39
  @output = StringIO.new
38
40
  @runner = RSpec::Core::Runner.new(RSpec::Core::ConfigurationOptions.new(CLI_OPTIONS))
39
41
  @world = RSpec.world
@@ -44,23 +46,21 @@ module Mutant
44
46
  # @return [self]
45
47
  #
46
48
  # @api private
47
- #
48
49
  def setup
49
50
  @runner.setup($stderr, @output)
50
51
  self
51
52
  end
52
53
  memoize :setup
53
54
 
54
- # Return report for test
55
+ # Run a collection of tests
55
56
  #
56
57
  # @param [Enumerable<Mutant::Test>] tests
57
58
  #
58
59
  # @return [Result::Test]
59
60
  #
60
- # @api private
61
- #
62
61
  # rubocop:disable MethodLength
63
62
  #
63
+ # @api private
64
64
  def call(tests)
65
65
  examples = tests.map(&all_tests_index.method(:fetch))
66
66
  filter_examples(&examples.method(:include?))
@@ -75,12 +75,11 @@ module Mutant
75
75
  )
76
76
  end
77
77
 
78
- # Return all available tests
78
+ # Available tests
79
79
  #
80
80
  # @return [Enumerable<Test>]
81
81
  #
82
82
  # @api private
83
- #
84
83
  def all_tests
85
84
  all_tests_index.keys
86
85
  end
@@ -88,12 +87,11 @@ module Mutant
88
87
 
89
88
  private
90
89
 
91
- # Return all tests index
90
+ # Index of available tests
92
91
  #
93
92
  # @return [Hash<Test, RSpec::Core::Example]
94
93
  #
95
94
  # @api private
96
- #
97
95
  def all_tests_index
98
96
  all_examples.each_with_index.each_with_object({}) do |(example, example_index), index|
99
97
  index[parse_example(example, example_index)] = example
@@ -109,7 +107,6 @@ module Mutant
109
107
  # @return [Test]
110
108
  #
111
109
  # @api private
112
- #
113
110
  def parse_example(example, index)
114
111
  metadata = example.metadata
115
112
  location = metadata.fetch(:location)
@@ -128,22 +125,20 @@ module Mutant
128
125
  # @return [Expression]
129
126
  #
130
127
  # @api private
131
- #
132
128
  def parse_expression(metadata)
133
129
  if metadata.key?(:mutant_expression)
134
- Expression.parse(metadata.fetch(:mutant_expression))
130
+ expression_parser.(metadata.fetch(:mutant_expression))
135
131
  else
136
132
  match = EXPRESSION_CANDIDATE.match(metadata.fetch(:full_description))
137
- Expression.try_parse(match.captures.first) || ALL
133
+ expression_parser.try_parse(match.captures.first) || ALL_EXPRESSION
138
134
  end
139
135
  end
140
136
 
141
- # Return all examples
137
+ # Available rspec examples
142
138
  #
143
139
  # @return [Array<String, RSpec::Core::Example]
144
140
  #
145
141
  # @api private
146
- #
147
142
  def all_examples
148
143
  @world.example_groups.flat_map(&:descendants).flat_map(&:examples).select do |example|
149
144
  example.metadata.fetch(:mutant, true)
@@ -157,7 +152,6 @@ module Mutant
157
152
  # @return [undefined]
158
153
  #
159
154
  # @api private
160
- #
161
155
  def filter_examples(&predicate)
162
156
  @world.filtered_examples.each_value do |examples|
163
157
  examples.keep_if(&predicate)
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.8.0
4
+ version: 0.8.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Markus Schirp
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-06-14 00:00:00.000000000 Z
11
+ date: 2015-07-24 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.8.0
19
+ version: 0.8.1
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.8.0
26
+ version: 0.8.1
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rspec-core
29
29
  requirement: !ruby/object:Gem::Requirement