DEV: Optionally allow autospec without auto-running the whole suite (#8321)

I want to use autospec while working on a single spec file. At the moment, it will start running all specs once it completes the file I'm working on. With parallel mode enabled, this causes CPU usage to spike dramatically, affecting IDE performance, battery life, and fan noise. I would prefer that it only runs all specs when I explicitly press [ENTER]

This commit adds a new ENV variable `AUTO_RUN_ALL`. To prevent auto-running all specs, set it to 0. The default behavior remains unchanged.
This commit is contained in:
David Taylor 2019-11-08 14:22:57 +00:00 committed by GitHub
parent 5a016b7eb0
commit da50cd554a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 5 additions and 3 deletions

View File

@ -18,6 +18,7 @@ class Autospec::Manager
def initialize(opts = {})
@opts = opts
@debug = opts[:debug]
@auto_run_all = ENV["AUTO_RUN_ALL"] != "0"
@queue = []
@mutex = Mutex.new
@signal = ConditionVariable.new
@ -42,12 +43,13 @@ class Autospec::Manager
exit
end
ensure_all_specs_will_run
ensure_all_specs_will_run if @auto_run_all
start_runners
start_service_queue
listen_for_changes
puts "Press [ENTER] to stop the current run"
puts "Press [ENTER] while stopped to run all specs" unless @auto_run_all
while @runners.any?(&:running?)
STDIN.gets
process_queue
@ -138,7 +140,7 @@ class Autospec::Manager
has_failed = true
if result > 0
focus_on_failed_tests(current)
ensure_all_specs_will_run(runner)
ensure_all_specs_will_run(runner) if @auto_run_all
end
end
@ -343,7 +345,7 @@ class Autospec::Manager
end
# push run all specs to end of queue in correct order
ensure_all_specs_will_run(runner)
ensure_all_specs_will_run(runner) if @auto_run_all
end
puts "@@@@@@@@@@@@ specs queued" if @debug
puts "@@@@@@@@@@@@ #{@queue}" if @debug