From d3740ec34f1ad98311a3ac606643db972d5130e9 Mon Sep 17 00:00:00 2001 From: Alyssa Ross Date: Mon, 19 Sep 2016 23:00:58 +0100 Subject: tests: run in parallel --- Library/Homebrew/test/Gemfile | 1 + Library/Homebrew/test/Gemfile.lock | 6 +++++- Library/Homebrew/test/Rakefile | 29 ----------------------------- Library/Homebrew/test/test_inreplace.rb | 13 ++++++++----- Library/Homebrew/test/testing_env.rb | 2 +- 5 files changed, 15 insertions(+), 36 deletions(-) delete mode 100644 Library/Homebrew/test/Rakefile (limited to 'Library/Homebrew/test') 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 aa89ba2bd..396d92e13 100644 --- a/Library/Homebrew/test/testing_env.rb +++ b/Library/Homebrew/test/testing_env.rb @@ -42,7 +42,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 -- cgit v1.2.3 From 1c4ae988232050ac22785fe062f3c912ed70cdfc Mon Sep 17 00:00:00 2001 From: Alyssa Ross Date: Tue, 20 Sep 2016 13:16:11 +0100 Subject: tests, cask-tests: log test runtimes --- Library/Homebrew/test/testing_env.rb | 1 + 1 file changed, 1 insertion(+) (limited to 'Library/Homebrew/test') diff --git a/Library/Homebrew/test/testing_env.rb b/Library/Homebrew/test/testing_env.rb index 396d92e13..676badf82 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" -- cgit v1.2.3 From 9033af6bda721c88bdb14f6e18b844ab41bbcb84 Mon Sep 17 00:00:00 2001 From: Alyssa Ross Date: Tue, 20 Sep 2016 17:02:35 +0000 Subject: tests, cask-tests: (maybe) fix coverage --- Library/Homebrew/test/.simplecov | 45 ---------------------------------------- 1 file changed, 45 deletions(-) delete mode 100755 Library/Homebrew/test/.simplecov (limited to 'Library/Homebrew/test') 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 -- cgit v1.2.3