DEV: Add --profile=[COUNT] option for turbo_rspec

Why is this change required?

By default, `RSpec` comes with a `--profile=[COUNT]` option as well but
enabling that option means that the entire test suite needs to be
executed. This does not work so well for `turbo_rspec` which splits our
test files into various "buckets" for the tests to be executed in
multiple processes. Therefore, this commit adds a similar
`--profile=[COUNT]` option to `turbo_rspec` but will only profile the
tests being executed. Examples:

`LOAD_PLUGINS=1 bin/turbo_rspec --profile plugins/*/spec/system`

or

`LOAD_PLUGINS=1 bin/turbo_rspec --profile=20 plugins/*/spec/system`
This commit is contained in:
Alan Guo Xiang Tan
2023-05-30 09:52:46 +08:00
parent b580f04d34
commit b00edf3ea0
8 changed files with 96 additions and 15 deletions

View File

@ -11,6 +11,8 @@ formatters = []
verbose = false
fail_fast = nil
seed = rand(2**16)
profile = false
profile_print_slowest_examples_count = 10
OptionParser
.new do |opts|
@ -27,6 +29,15 @@ OptionParser
opts.on("-v", "--verbose", "More output") { verbose = true }
opts.on(
"-p",
"--profile=[COUNT]",
"Benchmark the runtime of each example and list the slowest examples (default: 10)",
) do |count|
profile = true
profile_print_slowest_examples_count = count.to_i if count
end
opts.on("--fail-fast=[N]") do |n|
n =
begin
@ -67,6 +78,8 @@ success =
fail_fast: fail_fast,
use_runtime_info: use_runtime_info,
seed: seed.to_s,
profile:,
profile_print_slowest_examples_count:,
)
if success