brew/Library/Homebrew/.simplecov
Alyssa Ross 5f6a8d407a tests: speed up integration tests coverage
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.
2016-09-23 10:40:08 +01:00

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