dev-cmd/tests: Add profile option

This will allow us to more easily measure test performance. The only
downside here is that we can't use it with parallel rspec because
it will show the n slowest tests for each parallel rspec run which
is not what we want.
This commit is contained in:
apainintheneck 2024-01-06 12:51:15 -08:00
parent 3821fab241
commit 894b94bfd7
6 changed files with 14 additions and 0 deletions

View File

@ -29,6 +29,8 @@ module Homebrew
flag "--only=", flag "--only=",
description: "Run only <test_script>`_spec.rb`. Appending `:`<line_number> will start at a " \ description: "Run only <test_script>`_spec.rb`. Appending `:`<line_number> will start at a " \
"specific line." "specific line."
flag "--profile=",
description: "Run the test suite serially to find the <n> slowest tests."
flag "--seed=", flag "--seed=",
description: "Randomise tests with the specified <value> instead of a random seed." description: "Randomise tests with the specified <value> instead of a random seed."
@ -122,6 +124,8 @@ module Homebrew
end end
end end
parallel = false if args.profile
parallel_rspec_log_name = "parallel_runtime_rspec" parallel_rspec_log_name = "parallel_runtime_rspec"
parallel_rspec_log_name = "#{parallel_rspec_log_name}.generic" if args.generic? parallel_rspec_log_name = "#{parallel_rspec_log_name}.generic" if args.generic?
parallel_rspec_log_name = "#{parallel_rspec_log_name}.online" if args.online? parallel_rspec_log_name = "#{parallel_rspec_log_name}.online" if args.online?
@ -157,6 +161,7 @@ module Homebrew
--require spec_helper --require spec_helper
] ]
bundle_args << "--fail-fast" if args.fail_fast? bundle_args << "--fail-fast" if args.fail_fast?
bundle_args << "--profile" << args.profile if args.profile
# TODO: Refactor and move to extend/os # TODO: Refactor and move to extend/os
# rubocop:disable Homebrew/MoveToExtendOS # rubocop:disable Homebrew/MoveToExtendOS

View File

@ -2214,6 +2214,7 @@ _brew_tests() {
--help --help
--online --online
--only --only
--profile
--quiet --quiet
--seed --seed
--verbose --verbose

View File

@ -1474,6 +1474,7 @@ __fish_brew_complete_arg 'tests' -l generic -d 'Run only OS-agnostic tests'
__fish_brew_complete_arg 'tests' -l help -d 'Show this message' __fish_brew_complete_arg 'tests' -l help -d 'Show this message'
__fish_brew_complete_arg 'tests' -l online -d 'Include tests that use the GitHub API and tests that use any of the taps for official external commands' __fish_brew_complete_arg 'tests' -l online -d 'Include tests that use the GitHub API and tests that use any of the taps for official external commands'
__fish_brew_complete_arg 'tests' -l only -d 'Run only test_script`_spec.rb`. Appending `:`line_number will start at a specific line' __fish_brew_complete_arg 'tests' -l only -d 'Run only test_script`_spec.rb`. Appending `:`line_number will start at a specific line'
__fish_brew_complete_arg 'tests' -l profile -d 'Run the test suite serially to find the n slowest tests'
__fish_brew_complete_arg 'tests' -l quiet -d 'Make some output more quiet' __fish_brew_complete_arg 'tests' -l quiet -d 'Make some output more quiet'
__fish_brew_complete_arg 'tests' -l seed -d 'Randomise tests with the specified value instead of a random seed' __fish_brew_complete_arg 'tests' -l seed -d 'Randomise tests with the specified value instead of a random seed'
__fish_brew_complete_arg 'tests' -l verbose -d 'Make some output more verbose' __fish_brew_complete_arg 'tests' -l verbose -d 'Make some output more verbose'

View File

@ -1820,6 +1820,7 @@ _brew_tests() {
'--help[Show this message]' \ '--help[Show this message]' \
'--online[Include tests that use the GitHub API and tests that use any of the taps for official external commands]' \ '--online[Include tests that use the GitHub API and tests that use any of the taps for official external commands]' \
'(--changed)--only[Run only test_script`_spec.rb`. Appending `:`line_number will start at a specific line]' \ '(--changed)--only[Run only test_script`_spec.rb`. Appending `:`line_number will start at a specific line]' \
'--profile[Run the test suite serially to find the n slowest tests]' \
'--quiet[Make some output more quiet]' \ '--quiet[Make some output more quiet]' \
'--seed[Randomise tests with the specified value instead of a random seed]' \ '--seed[Randomise tests with the specified value instead of a random seed]' \
'--verbose[Make some output more verbose]' '--verbose[Make some output more verbose]'

View File

@ -1591,6 +1591,8 @@ Run Homebrew's unit and integration tests.
Exit early on the first failing test. Exit early on the first failing test.
* `--only`: * `--only`:
Run only *`test_script`*`_spec.rb`. Appending `:`*`line_number`* will start at a specific line. Run only *`test_script`*`_spec.rb`. Appending `:`*`line_number`* will start at a specific line.
* `--profile`:
Run the test suite serially to find the *`n`* slowest tests.
* `--seed`: * `--seed`:
Randomise tests with the specified *`value`* instead of a random seed. Randomise tests with the specified *`value`* instead of a random seed.

View File

@ -2275,6 +2275,10 @@ Exit early on the first failing test\.
Run only \fItest_script\fR\fB_spec\.rb\fR\. Appending \fB:\fR\fIline_number\fR will start at a specific line\. Run only \fItest_script\fR\fB_spec\.rb\fR\. Appending \fB:\fR\fIline_number\fR will start at a specific line\.
. .
.TP .TP
\fB\-\-profile\fR
Run the test suite serially to find the \fIn\fR slowest tests\.
.
.TP
\fB\-\-seed\fR \fB\-\-seed\fR
Randomise tests with the specified \fIvalue\fR instead of a random seed\. Randomise tests with the specified \fIvalue\fR instead of a random seed\.
. .