diff options
| author | Mike McQuaid | 2016-09-23 07:57:35 +0100 |
|---|---|---|
| committer | GitHub | 2016-09-23 07:57:35 +0100 |
| commit | 5cf3838f4292f3c47bc6a66e6d532fa290bcc5e0 (patch) | |
| tree | d70a95c2da4ce92c716b37bbe4765d42017e29e1 /Library/Homebrew/test | |
| parent | b7e7434bdbe59412505662df4ae919884990264b (diff) | |
| parent | 5c5c416d1cb2df75f430c30a8044c82e041f530c (diff) | |
| download | brew-5cf3838f4292f3c47bc6a66e6d532fa290bcc5e0.tar.bz2 | |
Merge pull request #1041 from penman/parallel_tests
Parallelise test suite
Diffstat (limited to 'Library/Homebrew/test')
| -rwxr-xr-x | Library/Homebrew/test/.simplecov | 45 | ||||
| -rw-r--r-- | Library/Homebrew/test/Gemfile | 1 | ||||
| -rw-r--r-- | Library/Homebrew/test/Gemfile.lock | 6 | ||||
| -rw-r--r-- | Library/Homebrew/test/Rakefile | 29 | ||||
| -rw-r--r-- | Library/Homebrew/test/test_inreplace.rb | 13 | ||||
| -rw-r--r-- | Library/Homebrew/test/testing_env.rb | 3 |
6 files changed, 16 insertions, 81 deletions
diff --git a/Library/Homebrew/test/.simplecov b/Library/Homebrew/test/.simplecov deleted file mode 100755 index 7b057e878..000000000 --- a/Library/Homebrew/test/.simplecov +++ /dev/null @@ -1,45 +0,0 @@ -#!/usr/bin/env ruby - -SimpleCov.start do - coverage_dir File.expand_path("../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") - SimpleCov.result # Just save result, but don't write formatted output. - exit! exit_code - end - else - # 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 diff --git a/Library/Homebrew/test/Gemfile b/Library/Homebrew/test/Gemfile index b7666e551..193604dd7 100644 --- a/Library/Homebrew/test/Gemfile +++ b/Library/Homebrew/test/Gemfile @@ -3,6 +3,7 @@ source "https://rubygems.org" gem "mocha", "~> 1.1" gem "minitest", "~> 5.3" gem "rake", "~> 10.3" +gem "parallel_tests", "~> 2.9" group :coverage do # This is SimpleCov v0.12.0 with one PR merged on top, that finally resolves diff --git a/Library/Homebrew/test/Gemfile.lock b/Library/Homebrew/test/Gemfile.lock index ceb11128d..841ff0b5c 100644 --- a/Library/Homebrew/test/Gemfile.lock +++ b/Library/Homebrew/test/Gemfile.lock @@ -21,6 +21,9 @@ GEM minitest (5.9.0) mocha (1.1.0) metaclass (~> 0.0.1) + parallel (1.9.0) + parallel_tests (2.9.0) + parallel rake (10.5.0) simplecov-html (0.10.0) url (0.3.2) @@ -32,8 +35,9 @@ DEPENDENCIES codecov minitest (~> 5.3) mocha (~> 1.1) + parallel_tests (~> 2.9) rake (~> 10.3) simplecov (= 0.12.0)! BUNDLED WITH - 1.12.5 + 1.13.1 diff --git a/Library/Homebrew/test/Rakefile b/Library/Homebrew/test/Rakefile deleted file mode 100644 index a2db861f2..000000000 --- a/Library/Homebrew/test/Rakefile +++ /dev/null @@ -1,29 +0,0 @@ -require "rake" -require "rake/testtask" - -def mac? - return false if ENV["HOMEBREW_TEST_GENERIC_OS"] - RUBY_PLATFORM.to_s.downcase.include? "darwin" -end - -TEST_DIRECTORY = File.dirname(File.expand_path(__FILE__)) -TEST_FILES = Dir["#{TEST_DIRECTORY}/test_*.rb"].reject do |f| - f.include?("/test_os_mac_") && !mac? -end - -task default: :test - -Rake::TestTask.new(:test) do |t| - t.libs << TEST_DIRECTORY - t.test_files = TEST_FILES -end - -namespace :test do - TEST_FILES.each do |file| - name = file[/test_(.+)\.rb/, 1] - Rake::TestTask.new(name) do |t| - t.libs << TEST_DIRECTORY - t.test_files = [file] - end - end -end diff --git a/Library/Homebrew/test/test_inreplace.rb b/Library/Homebrew/test/test_inreplace.rb index 91d57f942..0e62f9d3f 100644 --- a/Library/Homebrew/test/test_inreplace.rb +++ b/Library/Homebrew/test/test_inreplace.rb @@ -91,26 +91,29 @@ class InreplaceTest < Homebrew::TestCase end def test_inreplace_errors + require "tempfile" extend(Utils::Inreplace) - open("test", "w") { |f| f.write "a\nb\nc\n" } + file = Tempfile.new("test") + + file.write "a\nb\nc\n" assert_raises(Utils::InreplaceError) do - inreplace "test", "d", "f" + inreplace file.path, "d", "f" end assert_raises(Utils::InreplaceError) do # Under current context, we are testing `String#gsub!`, so let's disable rubocop temporarily. - inreplace("test") { |s| s.gsub!("d", "f") } # rubocop:disable Performance/StringReplacement + inreplace(file.path) { |s| s.gsub!("d", "f") } # rubocop:disable Performance/StringReplacement end assert_raises(Utils::InreplaceError) do - inreplace("test") do |s| + inreplace(file.path) do |s| s.change_make_var! "VAR", "value" s.remove_make_var! "VAR2" end end ensure - File.unlink("test") + file.unlink end end diff --git a/Library/Homebrew/test/testing_env.rb b/Library/Homebrew/test/testing_env.rb index 164c812ea..2b4f9422b 100644 --- a/Library/Homebrew/test/testing_env.rb +++ b/Library/Homebrew/test/testing_env.rb @@ -15,6 +15,7 @@ TEST_DIRECTORY = File.dirname(File.expand_path(__FILE__)) begin require "rubygems" require "minitest/autorun" + require "parallel_tests/test/runtime_logger" require "mocha/setup" rescue LoadError abort "Run `bundle install` or install the mocha and minitest gems before running the tests" @@ -42,7 +43,7 @@ module Homebrew module FSLeakLogger def self.included(klass) require "find" - @@log = File.open("fs_leak_log", "w") + @@log = File.open("#{__dir__}/fs_leak_log", "w") klass.make_my_diffs_pretty! end |
