diff --git a/.gitignore b/.gitignore index 59abbf727a..c56971b7a2 100644 --- a/.gitignore +++ b/.gitignore @@ -17,6 +17,7 @@ /Library/Homebrew/test/.bundle /Library/Homebrew/test/bin /Library/Homebrew/test/vendor +/Library/Homebrew/test/coverage /Library/LinkedKegs /Library/PinnedKegs /Library/Taps diff --git a/Library/Homebrew/cmd/tests.rb b/Library/Homebrew/cmd/tests.rb index a74980fbd5..a686a7f8c5 100644 --- a/Library/Homebrew/cmd/tests.rb +++ b/Library/Homebrew/cmd/tests.rb @@ -2,6 +2,7 @@ module Homebrew def tests (HOMEBREW_LIBRARY/"Homebrew/test").cd do ENV["TESTOPTS"] = "-v" if ARGV.verbose? + ENV["HOMEBREW_TESTS_COVERAGE"] = "1" if ARGV.flag? "--coverage" Homebrew.install_gem_setup_path! "bundler" quiet_system("bundle", "check") || \ system("bundle", "install", "--path", "vendor/bundle") diff --git a/Library/Homebrew/test/Gemfile b/Library/Homebrew/test/Gemfile index 7c224bd619..b156aab8b0 100644 --- a/Library/Homebrew/test/Gemfile +++ b/Library/Homebrew/test/Gemfile @@ -3,3 +3,4 @@ source "https://rubygems.org" gem "mocha", "~> 1.1" gem "minitest", "~> 5.3" gem "rake", "~> 10.3" +gem "simplecov", "~> 0.10.0", :require => false diff --git a/Library/Homebrew/test/Gemfile.lock b/Library/Homebrew/test/Gemfile.lock index 5b66cd04eb..9663a26c47 100644 --- a/Library/Homebrew/test/Gemfile.lock +++ b/Library/Homebrew/test/Gemfile.lock @@ -1,11 +1,18 @@ GEM remote: https://rubygems.org/ specs: + docile (1.1.5) + json (1.8.3) metaclass (0.0.4) minitest (5.7.0) mocha (1.1.0) metaclass (~> 0.0.1) rake (10.4.2) + simplecov (0.10.0) + docile (~> 1.1.0) + json (~> 1.8) + simplecov-html (~> 0.10.0) + simplecov-html (0.10.0) PLATFORMS ruby @@ -14,3 +21,4 @@ DEPENDENCIES minitest (~> 5.3) mocha (~> 1.1) rake (~> 10.3) + simplecov (~> 0.10.0) diff --git a/Library/Homebrew/test/testing_env.rb b/Library/Homebrew/test/testing_env.rb index d960d35d5a..60434aded6 100644 --- a/Library/Homebrew/test/testing_env.rb +++ b/Library/Homebrew/test/testing_env.rb @@ -1,6 +1,22 @@ $:.unshift File.expand_path("../..", __FILE__) $:.unshift File.expand_path("../lib", __FILE__) +# This must be at the top +if ENV["HOMEBREW_TESTS_COVERAGE"] + require "simplecov" + SimpleCov.start do + tests_path = File.dirname(__FILE__) + + minimum_coverage 50 + coverage_dir File.expand_path("#{tests_path}/coverage") + root File.expand_path("#{tests_path}/..") + + add_filter "Homebrew/test" + add_filter "vendor/bundle" + add_filter "Homebrew/vendor" + end +end + require "global" # Test environment setup