Previously, .simplecov called `SimpleCov.result` to store the coverage result, and ignored the return value. `SimpleCov.result`'s return can be slow to calculate, which wastes a lot of time when it's ignored. This commit extracts the code needed to store the SimpleCov result from `SimpleCov.result`, and calls it directly, without doing the busywork to compute the return value every time. In my testing, this more than halves the time taken to run all the integration tests.
53 lines
1.7 KiB
Ruby
Executable File
53 lines
1.7 KiB
Ruby
Executable File
#!/usr/bin/env ruby
|
|
|
|
SimpleCov.start do
|
|
coverage_dir File.expand_path("../test/coverage", File.realpath(__FILE__))
|
|
root File.expand_path("..", File.realpath(__FILE__))
|
|
|
|
# We manage the result cache ourselves and the default of 10 minutes can be
|
|
# too low (particularly on Travis CI), causing results from some integration
|
|
# tests to be dropped. This causes random fluctuations in test coverage.
|
|
merge_timeout 86400
|
|
|
|
add_filter "/Homebrew/cask/spec/"
|
|
add_filter "/Homebrew/cask/test/"
|
|
add_filter "/Homebrew/compat/"
|
|
add_filter "/Homebrew/test/"
|
|
add_filter "/Homebrew/vendor/"
|
|
|
|
if ENV["HOMEBREW_INTEGRATION_TEST"]
|
|
command_name "#{ENV["HOMEBREW_INTEGRATION_TEST"]} (#{$$})"
|
|
at_exit do
|
|
exit_code = $!.nil? ? 0 : $!.status
|
|
$stdout.reopen("/dev/null")
|
|
|
|
# Just save result, but don't write formatted output.
|
|
coverage_result = Coverage.result
|
|
SimpleCov.add_not_loaded_files(coverage_result)
|
|
simplecov_result = SimpleCov::Result.new(coverage_result)
|
|
SimpleCov::ResultMerger.store_result(simplecov_result)
|
|
|
|
exit! exit_code
|
|
end
|
|
else
|
|
command_name "#{command_name} (#{$$})"
|
|
# Not using this during integration tests makes the tests 4x times faster
|
|
# without changing the coverage.
|
|
track_files "#{SimpleCov.root}/**/*.rb"
|
|
end
|
|
|
|
# Add groups and the proper project name to the output.
|
|
project_name "Homebrew"
|
|
add_group "Cask", "/Homebrew/cask/"
|
|
add_group "Commands", %w[/Homebrew/cmd/ /Homebrew/dev-cmd/]
|
|
add_group "Extensions", "/Homebrew/extend/"
|
|
add_group "OS", %w[/Homebrew/extend/os/ /Homebrew/os/]
|
|
add_group "Requirements", "/Homebrew/requirements/"
|
|
add_group "Scripts", %w[
|
|
/Homebrew/brew.rb
|
|
/Homebrew/build.rb
|
|
/Homebrew/postinstall.rb
|
|
/Homebrew/test.rb
|
|
]
|
|
end
|