@@ -413,7 +413,6 @@ def shared_context_metadata_behavior=(value)
413
413
# return [Integer]
414
414
add_setting :max_displayed_failure_line_count
415
415
416
- # @macro add_setting
417
416
# Determines which bisect runner implementation gets used to run subsets
418
417
# of the suite during a bisection. Your choices are:
419
418
#
@@ -433,7 +432,18 @@ def shared_context_metadata_behavior=(value)
433
432
# loaded via `--require`.
434
433
#
435
434
# @return [Symbol]
436
- add_setting :bisect_runner
435
+ attr_reader :bisect_runner
436
+ def bisect_runner = ( value )
437
+ if @bisect_runner_class && value != @bisect_runner
438
+ raise "`config.bisect_runner = #{ value . inspect } ` can no longer take " \
439
+ "effect as the #{ @bisect_runner . inspect } bisect runnner is already " \
440
+ "in use. This config setting must be set in a file loaded by a " \
441
+ "`--require` option (passed at the CLI or in a `.rspec` file) for " \
442
+ "it to have any effect."
443
+ end
444
+
445
+ @bisect_runner = value
446
+ end
437
447
438
448
# @private
439
449
# @deprecated Use {#color_mode} = :on, instead of {#color} with {#tty}
@@ -460,6 +470,7 @@ def initialize
460
470
@prepend_modules = FilterableItemRepository ::QueryOptimized . new ( :any? )
461
471
462
472
@bisect_runner = RSpec ::Support ::RubyFeatures . fork_supported? ? :fork : :shell
473
+ @bisect_runner_class = nil
463
474
464
475
@before_suite_hooks = [ ]
465
476
@after_suite_hooks = [ ]
@@ -1988,16 +1999,18 @@ def on_example_group_definition_callbacks
1988
1999
1989
2000
# @private
1990
2001
def bisect_runner_class
1991
- case bisect_runner
1992
- when :fork
1993
- RSpec ::Support . require_rspec_core 'bisect/fork_runner'
1994
- Bisect ::ForkRunner
1995
- when :shell
1996
- RSpec ::Support . require_rspec_core 'bisect/shell_runner'
1997
- Bisect ::ShellRunner
1998
- else
1999
- raise "Unsupported value for `bisect_runner` (#{ bisect_runner . inspect } ). " \
2000
- "Only `:fork` and `:shell` are supported."
2002
+ @bisect_runner_class ||= begin
2003
+ case bisect_runner
2004
+ when :fork
2005
+ RSpec ::Support . require_rspec_core 'bisect/fork_runner'
2006
+ Bisect ::ForkRunner
2007
+ when :shell
2008
+ RSpec ::Support . require_rspec_core 'bisect/shell_runner'
2009
+ Bisect ::ShellRunner
2010
+ else
2011
+ raise "Unsupported value for `bisect_runner` (#{ bisect_runner . inspect } ). " \
2012
+ "Only `:fork` and `:shell` are supported."
2013
+ end
2001
2014
end
2002
2015
end
2003
2016
0 commit comments