rspec-core 3.7.1 → 3.9.3
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 +4 -4
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +0 -0
- data/Changelog.md +116 -0
- data/README.md +18 -18
- data/lib/rspec/core.rb +1 -0
- data/lib/rspec/core/bisect/coordinator.rb +26 -30
- data/lib/rspec/core/bisect/example_minimizer.rb +12 -8
- data/lib/rspec/core/bisect/fork_runner.rb +138 -0
- data/lib/rspec/core/bisect/server.rb +5 -14
- data/lib/rspec/core/bisect/{runner.rb → shell_command.rb} +27 -70
- data/lib/rspec/core/bisect/shell_runner.rb +73 -0
- data/lib/rspec/core/bisect/utilities.rb +58 -0
- data/lib/rspec/core/configuration.rb +236 -79
- data/lib/rspec/core/configuration_options.rb +41 -4
- data/lib/rspec/core/did_you_mean.rb +46 -0
- data/lib/rspec/core/example.rb +18 -8
- data/lib/rspec/core/example_group.rb +33 -16
- data/lib/rspec/core/filter_manager.rb +1 -1
- data/lib/rspec/core/formatters.rb +14 -6
- data/lib/rspec/core/formatters/base_bisect_formatter.rb +45 -0
- data/lib/rspec/core/formatters/bisect_drb_formatter.rb +29 -0
- data/lib/rspec/core/formatters/bisect_progress_formatter.rb +29 -16
- data/lib/rspec/core/formatters/deprecation_formatter.rb +3 -1
- data/lib/rspec/core/formatters/documentation_formatter.rb +35 -3
- data/lib/rspec/core/formatters/exception_presenter.rb +29 -6
- data/lib/rspec/core/formatters/failure_list_formatter.rb +23 -0
- data/lib/rspec/core/formatters/html_printer.rb +0 -2
- data/lib/rspec/core/formatters/protocol.rb +17 -17
- data/lib/rspec/core/formatters/syntax_highlighter.rb +19 -19
- data/lib/rspec/core/hooks.rb +44 -24
- data/lib/rspec/core/invocations.rb +9 -7
- data/lib/rspec/core/memoized_helpers.rb +33 -14
- data/lib/rspec/core/metadata.rb +2 -3
- data/lib/rspec/core/option_parser.rb +10 -3
- data/lib/rspec/core/profiler.rb +3 -1
- data/lib/rspec/core/rake_task.rb +22 -2
- data/lib/rspec/core/reporter.rb +11 -6
- data/lib/rspec/core/runner.rb +25 -14
- data/lib/rspec/core/shared_example_group.rb +5 -5
- data/lib/rspec/core/shell_escape.rb +2 -2
- data/lib/rspec/core/version.rb +1 -1
- data/lib/rspec/core/world.rb +14 -1
- metadata +25 -15
- metadata.gz.sig +0 -0
- data/lib/rspec/core/formatters/bisect_formatter.rb +0 -69
data/lib/rspec/core/profiler.rb
CHANGED
@@ -20,7 +20,9 @@ module RSpec
|
|
20
20
|
def example_group_finished(notification)
|
21
21
|
return unless notification.group.top_level?
|
22
22
|
|
23
|
-
|
23
|
+
group = @example_groups[notification.group]
|
24
|
+
return unless group.key?(:start)
|
25
|
+
group[:total_time] = Time.now - group[:start]
|
24
26
|
end
|
25
27
|
|
26
28
|
def example_started(notification)
|
data/lib/rspec/core/rake_task.rb
CHANGED
@@ -45,6 +45,21 @@ module RSpec
|
|
45
45
|
# A message to print to stderr when there are failures.
|
46
46
|
attr_accessor :failure_message
|
47
47
|
|
48
|
+
if RUBY_VERSION < "1.9.0" || Support::Ruby.jruby?
|
49
|
+
# Run RSpec with a clean (empty) environment is not supported
|
50
|
+
def with_clean_environment=(_value)
|
51
|
+
raise ArgumentError, "Running in a clean environment is not supported on Ruby versions before 1.9.0"
|
52
|
+
end
|
53
|
+
|
54
|
+
# Run RSpec with a clean (empty) environment is not supported
|
55
|
+
def with_clean_environment
|
56
|
+
false
|
57
|
+
end
|
58
|
+
else
|
59
|
+
# Run RSpec with a clean (empty) environment.
|
60
|
+
attr_accessor :with_clean_environment
|
61
|
+
end
|
62
|
+
|
48
63
|
# Use verbose output. If this is set to true, the task will print the
|
49
64
|
# executed spec command to stdout. Defaults to `true`.
|
50
65
|
attr_accessor :verbose
|
@@ -76,7 +91,12 @@ module RSpec
|
|
76
91
|
command = spec_command
|
77
92
|
puts command if verbose
|
78
93
|
|
79
|
-
|
94
|
+
if with_clean_environment
|
95
|
+
return if system({}, command, :unsetenv_others => true)
|
96
|
+
else
|
97
|
+
return if system(command)
|
98
|
+
end
|
99
|
+
|
80
100
|
puts failure_message if failure_message
|
81
101
|
|
82
102
|
return unless fail_on_error
|
@@ -102,7 +122,7 @@ module RSpec
|
|
102
122
|
if ENV['SPEC']
|
103
123
|
FileList[ENV['SPEC']].sort
|
104
124
|
elsif String === pattern && !File.exist?(pattern)
|
105
|
-
return if rspec_opts =~ /--pattern/
|
125
|
+
return if [*rspec_opts].any? { |opt| opt =~ /--pattern/ }
|
106
126
|
"--pattern #{escape pattern}"
|
107
127
|
else
|
108
128
|
# Before RSpec 3.1, we used `FileList` to get the list of matched
|
data/lib/rspec/core/reporter.rb
CHANGED
@@ -21,17 +21,12 @@ module RSpec::Core
|
|
21
21
|
@non_example_exception_count = 0
|
22
22
|
@setup_default = lambda {}
|
23
23
|
@setup = false
|
24
|
+
@profiler = nil
|
24
25
|
end
|
25
26
|
|
26
27
|
# @private
|
27
28
|
attr_reader :examples, :failed_examples, :pending_examples
|
28
29
|
|
29
|
-
# @private
|
30
|
-
def setup_profiler
|
31
|
-
@profiler = Profiler.new
|
32
|
-
register_listener @profiler, *Profiler::NOTIFICATIONS
|
33
|
-
end
|
34
|
-
|
35
30
|
# Registers a listener to a list of notifications. The reporter will send
|
36
31
|
# notification of events to all registered listeners.
|
37
32
|
#
|
@@ -82,6 +77,14 @@ module RSpec::Core
|
|
82
77
|
end
|
83
78
|
end
|
84
79
|
|
80
|
+
# @param exit_code [Integer] the exit_code to be return by the reporter
|
81
|
+
#
|
82
|
+
# Reports a run that exited early without having run any examples.
|
83
|
+
#
|
84
|
+
def exit_early(exit_code)
|
85
|
+
report(0) { exit_code }
|
86
|
+
end
|
87
|
+
|
85
88
|
# @private
|
86
89
|
def start(expected_example_count, time=RSpec::Core::Time.now)
|
87
90
|
@start = time
|
@@ -231,6 +234,8 @@ module RSpec::Core
|
|
231
234
|
return if @setup
|
232
235
|
|
233
236
|
@setup_default.call
|
237
|
+
@profiler = Profiler.new
|
238
|
+
register_listener @profiler, *Profiler::NOTIFICATIONS
|
234
239
|
@setup = true
|
235
240
|
end
|
236
241
|
|
data/lib/rspec/core/runner.rb
CHANGED
@@ -84,6 +84,8 @@ module RSpec
|
|
84
84
|
# @param out [IO] output stream
|
85
85
|
def run(err, out)
|
86
86
|
setup(err, out)
|
87
|
+
return @configuration.reporter.exit_early(@configuration.failure_exit_code) if RSpec.world.wants_to_quit
|
88
|
+
|
87
89
|
run_specs(@world.ordered_example_groups).tap do
|
88
90
|
persist_example_statuses
|
89
91
|
end
|
@@ -94,10 +96,11 @@ module RSpec
|
|
94
96
|
# @param err [IO] error stream
|
95
97
|
# @param out [IO] output stream
|
96
98
|
def setup(err, out)
|
97
|
-
|
98
|
-
|
99
|
-
|
99
|
+
configure(err, out)
|
100
|
+
return if RSpec.world.wants_to_quit
|
101
|
+
|
100
102
|
@configuration.load_spec_files
|
103
|
+
ensure
|
101
104
|
@world.announce_filters
|
102
105
|
end
|
103
106
|
|
@@ -122,17 +125,11 @@ module RSpec
|
|
122
125
|
success ? 0 : @configuration.failure_exit_code
|
123
126
|
end
|
124
127
|
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
ExampleStatusPersister.persist(@world.all_examples, path)
|
131
|
-
rescue SystemCallError => e
|
132
|
-
RSpec.warning "Could not write example statuses to #{path} (configured as " \
|
133
|
-
"`config.example_status_persistence_file_path`) due to a " \
|
134
|
-
"system error: #{e.inspect}. Please check that the config " \
|
135
|
-
"option is set to an accessible, valid file path", :call_site => nil
|
128
|
+
# @private
|
129
|
+
def configure(err, out)
|
130
|
+
@configuration.error_stream = err
|
131
|
+
@configuration.output_stream = out if @configuration.output_stream == $stdout
|
132
|
+
@options.configure(@configuration)
|
136
133
|
end
|
137
134
|
|
138
135
|
# @private
|
@@ -188,6 +185,20 @@ module RSpec
|
|
188
185
|
$stderr.puts "\nRSpec is shutting down and will print the summary report... Interrupt again to force quit."
|
189
186
|
end
|
190
187
|
end
|
188
|
+
|
189
|
+
private
|
190
|
+
|
191
|
+
def persist_example_statuses
|
192
|
+
return if @configuration.dry_run
|
193
|
+
return unless (path = @configuration.example_status_persistence_file_path)
|
194
|
+
|
195
|
+
ExampleStatusPersister.persist(@world.all_examples, path)
|
196
|
+
rescue SystemCallError => e
|
197
|
+
RSpec.warning "Could not write example statuses to #{path} (configured as " \
|
198
|
+
"`config.example_status_persistence_file_path`) due to a " \
|
199
|
+
"system error: #{e.inspect}. Please check that the config " \
|
200
|
+
"option is set to an accessible, valid file path", :call_site => nil
|
201
|
+
end
|
191
202
|
end
|
192
203
|
end
|
193
204
|
end
|
@@ -1,3 +1,5 @@
|
|
1
|
+
RSpec::Support.require_rspec_support "with_keywords_when_needed"
|
2
|
+
|
1
3
|
module RSpec
|
2
4
|
module Core
|
3
5
|
# Represents some functionality that is shared with multiple example groups.
|
@@ -33,7 +35,7 @@ module RSpec
|
|
33
35
|
klass.update_inherited_metadata(@metadata) unless @metadata.empty?
|
34
36
|
|
35
37
|
SharedExampleGroupInclusionStackFrame.with_frame(@description, inclusion_line) do
|
36
|
-
|
38
|
+
RSpec::Support::WithKeywordsWhenNeeded.class_exec(klass, *args, &@definition)
|
37
39
|
klass.class_exec(&customization_block) if customization_block
|
38
40
|
end
|
39
41
|
end
|
@@ -76,7 +78,7 @@ module RSpec
|
|
76
78
|
# end
|
77
79
|
# end
|
78
80
|
#
|
79
|
-
# describe Account do
|
81
|
+
# RSpec.describe Account do
|
80
82
|
# it_behaves_like "auditable" do
|
81
83
|
# let(:auditable) { Account.new }
|
82
84
|
# end
|
@@ -103,7 +105,6 @@ module RSpec
|
|
103
105
|
# Shared examples top level DSL.
|
104
106
|
module TopLevelDSL
|
105
107
|
# @private
|
106
|
-
# rubocop:disable Lint/NestedMethodDefinition
|
107
108
|
def self.definitions
|
108
109
|
proc do
|
109
110
|
def shared_examples(name, *args, &block)
|
@@ -113,7 +114,6 @@ module RSpec
|
|
113
114
|
alias shared_examples_for shared_examples
|
114
115
|
end
|
115
116
|
end
|
116
|
-
# rubocop:enable Lint/NestedMethodDefinition
|
117
117
|
|
118
118
|
# @private
|
119
119
|
def self.exposed_globally?
|
@@ -259,7 +259,7 @@ module RSpec
|
|
259
259
|
# :nocov:
|
260
260
|
def ensure_block_has_source_location(block)
|
261
261
|
source_location = yield.split(':')
|
262
|
-
block.extend
|
262
|
+
block.extend(Module.new { define_method(:source_location) { source_location } })
|
263
263
|
end
|
264
264
|
# :nocov:
|
265
265
|
end
|
@@ -6,7 +6,7 @@ module RSpec
|
|
6
6
|
module_function
|
7
7
|
|
8
8
|
def quote(argument)
|
9
|
-
"'#{argument.gsub("'", "\\\\'")}'"
|
9
|
+
"'#{argument.to_s.gsub("'", "\\\\'")}'"
|
10
10
|
end
|
11
11
|
|
12
12
|
if RSpec::Support::OS.windows?
|
@@ -17,7 +17,7 @@ module RSpec
|
|
17
17
|
require 'shellwords'
|
18
18
|
|
19
19
|
def escape(shell_command)
|
20
|
-
shell_command.
|
20
|
+
Shellwords.escape(shell_command.to_s)
|
21
21
|
end
|
22
22
|
end
|
23
23
|
|
data/lib/rspec/core/version.rb
CHANGED
data/lib/rspec/core/world.rb
CHANGED
@@ -5,7 +5,7 @@ module RSpec
|
|
5
5
|
# Internal container for global non-configuration data.
|
6
6
|
class World
|
7
7
|
# @private
|
8
|
-
attr_reader :example_groups, :filtered_examples
|
8
|
+
attr_reader :example_groups, :filtered_examples, :example_group_counts_by_spec_file
|
9
9
|
|
10
10
|
# Used internally to determine what to do when a SIGINT is received.
|
11
11
|
attr_accessor :wants_to_quit
|
@@ -17,10 +17,22 @@ module RSpec
|
|
17
17
|
attr_accessor :non_example_failure
|
18
18
|
|
19
19
|
def initialize(configuration=RSpec.configuration)
|
20
|
+
@wants_to_quit = false
|
20
21
|
@configuration = configuration
|
21
22
|
configuration.world = self
|
22
23
|
@example_groups = []
|
23
24
|
@example_group_counts_by_spec_file = Hash.new(0)
|
25
|
+
prepare_example_filtering
|
26
|
+
end
|
27
|
+
|
28
|
+
# @api public
|
29
|
+
#
|
30
|
+
# Prepares filters so that they apply to example groups when they run.
|
31
|
+
#
|
32
|
+
# This is a separate method so that filters can be modified/replaced and
|
33
|
+
# examples refiltered during a process's lifetime, which can be useful for
|
34
|
+
# a custom runner.
|
35
|
+
def prepare_example_filtering
|
24
36
|
@filtered_examples = Hash.new do |hash, group|
|
25
37
|
hash[group] = filter_manager.prune(group.examples)
|
26
38
|
end
|
@@ -42,6 +54,7 @@ module RSpec
|
|
42
54
|
example_groups.clear
|
43
55
|
@sources_by_path.clear if defined?(@sources_by_path)
|
44
56
|
@syntax_highlighter = nil
|
57
|
+
@example_group_counts_by_spec_file = Hash.new(0)
|
45
58
|
end
|
46
59
|
|
47
60
|
# @private
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rspec-core
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.
|
4
|
+
version: 3.9.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Steven Baker
|
8
8
|
- David Chelimsky
|
9
9
|
- Chad Humphries
|
10
10
|
- Myron Marston
|
11
|
-
autorequire:
|
11
|
+
autorequire:
|
12
12
|
bindir: exe
|
13
13
|
cert_chain:
|
14
14
|
- |
|
@@ -46,7 +46,7 @@ cert_chain:
|
|
46
46
|
ZsVDj6a7lH3cNqtWXZxrb2wO38qV5AkYj8SQK7Hj3/Yui9myUX3crr+PdetazSqQ
|
47
47
|
F3MdtaDehhjC
|
48
48
|
-----END CERTIFICATE-----
|
49
|
-
date:
|
49
|
+
date: 2020-09-30 00:00:00.000000000 Z
|
50
50
|
dependencies:
|
51
51
|
- !ruby/object:Gem::Dependency
|
52
52
|
name: rspec-support
|
@@ -54,14 +54,14 @@ dependencies:
|
|
54
54
|
requirements:
|
55
55
|
- - "~>"
|
56
56
|
- !ruby/object:Gem::Version
|
57
|
-
version: 3.
|
57
|
+
version: 3.9.3
|
58
58
|
type: :runtime
|
59
59
|
prerelease: false
|
60
60
|
version_requirements: !ruby/object:Gem::Requirement
|
61
61
|
requirements:
|
62
62
|
- - "~>"
|
63
63
|
- !ruby/object:Gem::Version
|
64
|
-
version: 3.
|
64
|
+
version: 3.9.3
|
65
65
|
- !ruby/object:Gem::Dependency
|
66
66
|
name: cucumber
|
67
67
|
requirement: !ruby/object:Gem::Requirement
|
@@ -96,14 +96,14 @@ dependencies:
|
|
96
96
|
requirements:
|
97
97
|
- - "~>"
|
98
98
|
- !ruby/object:Gem::Version
|
99
|
-
version: 0.
|
99
|
+
version: 0.14.9
|
100
100
|
type: :development
|
101
101
|
prerelease: false
|
102
102
|
version_requirements: !ruby/object:Gem::Requirement
|
103
103
|
requirements:
|
104
104
|
- - "~>"
|
105
105
|
- !ruby/object:Gem::Version
|
106
|
-
version: 0.
|
106
|
+
version: 0.14.9
|
107
107
|
- !ruby/object:Gem::Dependency
|
108
108
|
name: coderay
|
109
109
|
requirement: !ruby/object:Gem::Requirement
|
@@ -192,10 +192,14 @@ files:
|
|
192
192
|
- lib/rspec/core/backtrace_formatter.rb
|
193
193
|
- lib/rspec/core/bisect/coordinator.rb
|
194
194
|
- lib/rspec/core/bisect/example_minimizer.rb
|
195
|
-
- lib/rspec/core/bisect/
|
195
|
+
- lib/rspec/core/bisect/fork_runner.rb
|
196
196
|
- lib/rspec/core/bisect/server.rb
|
197
|
+
- lib/rspec/core/bisect/shell_command.rb
|
198
|
+
- lib/rspec/core/bisect/shell_runner.rb
|
199
|
+
- lib/rspec/core/bisect/utilities.rb
|
197
200
|
- lib/rspec/core/configuration.rb
|
198
201
|
- lib/rspec/core/configuration_options.rb
|
202
|
+
- lib/rspec/core/did_you_mean.rb
|
199
203
|
- lib/rspec/core/drb.rb
|
200
204
|
- lib/rspec/core/dsl.rb
|
201
205
|
- lib/rspec/core/example.rb
|
@@ -204,14 +208,16 @@ files:
|
|
204
208
|
- lib/rspec/core/filter_manager.rb
|
205
209
|
- lib/rspec/core/flat_map.rb
|
206
210
|
- lib/rspec/core/formatters.rb
|
211
|
+
- lib/rspec/core/formatters/base_bisect_formatter.rb
|
207
212
|
- lib/rspec/core/formatters/base_formatter.rb
|
208
213
|
- lib/rspec/core/formatters/base_text_formatter.rb
|
209
|
-
- lib/rspec/core/formatters/
|
214
|
+
- lib/rspec/core/formatters/bisect_drb_formatter.rb
|
210
215
|
- lib/rspec/core/formatters/bisect_progress_formatter.rb
|
211
216
|
- lib/rspec/core/formatters/console_codes.rb
|
212
217
|
- lib/rspec/core/formatters/deprecation_formatter.rb
|
213
218
|
- lib/rspec/core/formatters/documentation_formatter.rb
|
214
219
|
- lib/rspec/core/formatters/exception_presenter.rb
|
220
|
+
- lib/rspec/core/formatters/failure_list_formatter.rb
|
215
221
|
- lib/rspec/core/formatters/fallback_message_formatter.rb
|
216
222
|
- lib/rspec/core/formatters/helpers.rb
|
217
223
|
- lib/rspec/core/formatters/html_formatter.rb
|
@@ -259,8 +265,13 @@ files:
|
|
259
265
|
homepage: https://github.com/rspec/rspec-core
|
260
266
|
licenses:
|
261
267
|
- MIT
|
262
|
-
metadata:
|
263
|
-
|
268
|
+
metadata:
|
269
|
+
bug_tracker_uri: https://github.com/rspec/rspec-core/issues
|
270
|
+
changelog_uri: https://github.com/rspec/rspec-core/blob/v3.9.3/Changelog.md
|
271
|
+
documentation_uri: https://rspec.info/documentation/
|
272
|
+
mailing_list_uri: https://groups.google.com/forum/#!forum/rspec
|
273
|
+
source_code_uri: https://github.com/rspec/rspec-core
|
274
|
+
post_install_message:
|
264
275
|
rdoc_options:
|
265
276
|
- "--charset=UTF-8"
|
266
277
|
require_paths:
|
@@ -276,9 +287,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
276
287
|
- !ruby/object:Gem::Version
|
277
288
|
version: '0'
|
278
289
|
requirements: []
|
279
|
-
|
280
|
-
|
281
|
-
signing_key:
|
290
|
+
rubygems_version: 3.1.3
|
291
|
+
signing_key:
|
282
292
|
specification_version: 4
|
283
|
-
summary: rspec-core-3.
|
293
|
+
summary: rspec-core-3.9.3
|
284
294
|
test_files: []
|
metadata.gz.sig
CHANGED
Binary file
|
@@ -1,69 +0,0 @@
|
|
1
|
-
require 'drb/drb'
|
2
|
-
|
3
|
-
module RSpec
|
4
|
-
module Core
|
5
|
-
module Formatters
|
6
|
-
# Used by `--bisect`. When it shells out and runs a portion of the suite, it uses
|
7
|
-
# this formatter as a means to have the status reported back to it, via DRb.
|
8
|
-
#
|
9
|
-
# Note that since DRb calls carry considerable overhead compared to normal
|
10
|
-
# method calls, we try to minimize the number of DRb calls for perf reasons,
|
11
|
-
# opting to communicate only at the start and the end of the run, rather than
|
12
|
-
# after each example.
|
13
|
-
# @private
|
14
|
-
class BisectFormatter
|
15
|
-
Formatters.register self, :start, :start_dump, :example_started,
|
16
|
-
:example_failed, :example_passed, :example_pending
|
17
|
-
|
18
|
-
def initialize(_output)
|
19
|
-
port = RSpec.configuration.drb_port
|
20
|
-
drb_uri = "druby://localhost:#{port}"
|
21
|
-
@all_example_ids = []
|
22
|
-
@failed_example_ids = []
|
23
|
-
@bisect_server = DRbObject.new_with_uri(drb_uri)
|
24
|
-
@remaining_failures = []
|
25
|
-
RSpec.configuration.files_or_directories_to_run = @bisect_server.files_or_directories_to_run
|
26
|
-
end
|
27
|
-
|
28
|
-
def start(_notification)
|
29
|
-
@remaining_failures = Set.new(@bisect_server.expected_failures)
|
30
|
-
end
|
31
|
-
|
32
|
-
def example_started(notification)
|
33
|
-
@all_example_ids << notification.example.id
|
34
|
-
end
|
35
|
-
|
36
|
-
def example_failed(notification)
|
37
|
-
@failed_example_ids << notification.example.id
|
38
|
-
example_finished(notification, :failed)
|
39
|
-
end
|
40
|
-
|
41
|
-
def example_passed(notification)
|
42
|
-
example_finished(notification, :passed)
|
43
|
-
end
|
44
|
-
|
45
|
-
def example_pending(notification)
|
46
|
-
example_finished(notification, :pending)
|
47
|
-
end
|
48
|
-
|
49
|
-
def start_dump(_notification)
|
50
|
-
@bisect_server.latest_run_results = RunResults.new(
|
51
|
-
@all_example_ids, @failed_example_ids
|
52
|
-
)
|
53
|
-
end
|
54
|
-
|
55
|
-
RunResults = Struct.new(:all_example_ids, :failed_example_ids)
|
56
|
-
|
57
|
-
private
|
58
|
-
|
59
|
-
def example_finished(notification, status)
|
60
|
-
return unless @remaining_failures.include?(notification.example.id)
|
61
|
-
@remaining_failures.delete(notification.example.id)
|
62
|
-
|
63
|
-
return if status == :failed && !@remaining_failures.empty?
|
64
|
-
RSpec.world.wants_to_quit = true
|
65
|
-
end
|
66
|
-
end
|
67
|
-
end
|
68
|
-
end
|
69
|
-
end
|