diff options
author | David RodrÃguez <deivid.rodriguez@riseup.net> | 2019-01-24 13:28:02 -0300 |
---|---|---|
committer | Hiroshi SHIBATA <hsbt@ruby-lang.org> | 2019-08-18 20:54:06 +0900 |
commit | 23007cb107169ab2d330522736c7df0a97f64388 (patch) | |
tree | 78d110ce574422653dfc2e23c237d708ab3a1e4c | |
parent | 84b9238affcc6196aa0164fd48a8c77d537702d6 (diff) | |
download | bundler-23007cb107169ab2d330522736c7df0a97f64388.tar.gz |
Parallelize test suite
-rw-r--r-- | Rakefile | 10 | ||||
-rwxr-xr-x | bin/parallel_rspec | 12 | ||||
-rw-r--r-- | spec/bundler/source_spec.rb | 15 | ||||
-rw-r--r-- | spec/runtime/load_spec.rb | 2 | ||||
-rw-r--r-- | spec/support/path.rb | 9 | ||||
-rw-r--r-- | spec/support/rubygems_ext.rb | 1 |
6 files changed, 40 insertions, 9 deletions
@@ -92,6 +92,10 @@ namespace :spec do releases = %w[v2.5.2 v2.6.14 v2.7.10 v3.0.6] (branches + releases).each do |rg| desc "Run specs with RubyGems #{rg}" + task "parallel_#{rg}" do + sh("bin/parallel_rspec spec/") + end + task rg do sh("bin/rspec --format progress") end @@ -112,7 +116,7 @@ namespace :spec do desc "Run specs under a RubyGems checkout (set RGV=path)" task "co" do - sh("bin/rspec --format progress") + sh("bin/parallel_rspec spec/") end namespace "co" do @@ -142,9 +146,7 @@ namespace :spec do ENV["BUNDLER_SPEC_PRE_RECORDED"] = "TRUE" puts "\n\e[1;33m[Travis CI] Running bundler specs against RubyGems #{rg}\e[m\n\n" - specs = safe_task { Rake::Task["spec:rubygems:#{rg}"].invoke } - - Rake::Task["spec:rubygems:#{rg}"].reenable + specs = safe_task { Rake::Task["spec:rubygems:parallel_#{rg}"].invoke } puts "\n\e[1;33m[Travis CI] Running bundler sudo specs against RubyGems #{rg}\e[m\n\n" sudos = system("sudo -E rake spec:rubygems:#{rg}:sudo") diff --git a/bin/parallel_rspec b/bin/parallel_rspec new file mode 100755 index 0000000000..26402aee7c --- /dev/null +++ b/bin/parallel_rspec @@ -0,0 +1,12 @@ +#!/usr/bin/env ruby +# frozen_string_literal: true + +load File.expand_path("../with_rubygems", __FILE__) if ENV["RGV"] + +require_relative "../spec/support/rubygems_ext" + +begin + Spec::Rubygems.gem_load("parallel_tests", "parallel_rspec") +rescue Gem::LoadError => e + warn "We couln't activate parallel_tests (#{e.requirement}). Run `gem install parallel_tests:'#{e.requirement}'`" +end diff --git a/spec/bundler/source_spec.rb b/spec/bundler/source_spec.rb index 46d86937da..5b11503d23 100644 --- a/spec/bundler/source_spec.rb +++ b/spec/bundler/source_spec.rb @@ -57,7 +57,10 @@ RSpec.describe Bundler::Source do let(:locked_gem) { double(:locked_gem, :name => "nokogiri", :version => "< 1.5") } context "with color", :no_color_tty do - before { Bundler.ui = Bundler::UI::Shell.new } + before do + allow($stdout).to receive(:tty?).and_return(true) + Bundler.ui = Bundler::UI::Shell.new + end it "should return a string with the spec name and version and locked spec version" do expect(subject.version_message(spec)).to eq("nokogiri >= 1.6\e[32m (was < 1.5)\e[0m") @@ -78,7 +81,10 @@ RSpec.describe Bundler::Source do let(:locked_gem) { double(:locked_gem, :name => "nokogiri", :version => "1.7.0") } context "with color", :no_color_tty do - before { Bundler.ui = Bundler::UI::Shell.new } + before do + allow($stdout).to receive(:tty?).and_return(true) + Bundler.ui = Bundler::UI::Shell.new + end it "should return a string with the locked spec version in yellow" do expect(subject.version_message(spec)).to eq("nokogiri 1.6.1\e[33m (was 1.7.0)\e[0m") @@ -99,7 +105,10 @@ RSpec.describe Bundler::Source do let(:locked_gem) { double(:locked_gem, :name => "nokogiri", :version => "1.7.0") } context "with color", :no_color_tty do - before { Bundler.ui = Bundler::UI::Shell.new } + before do + allow($stdout).to receive(:tty?).and_return(true) + Bundler.ui = Bundler::UI::Shell.new + end it "should return a string with the locked spec version in green" do expect(subject.version_message(spec)).to eq("nokogiri 1.7.1\e[32m (was 1.7.0)\e[0m") diff --git a/spec/runtime/load_spec.rb b/spec/runtime/load_spec.rb index b7dc509f6f..acefc1a583 100644 --- a/spec/runtime/load_spec.rb +++ b/spec/runtime/load_spec.rb @@ -58,7 +58,7 @@ RSpec.describe "Bundler.load" do end it "does not find a Gemfile above the testing directory" do - bundler_gemfile = tmp.join("../Gemfile") + bundler_gemfile = Pathname.new(__dir__).join("../../Gemfile") unless File.exist?(bundler_gemfile) FileUtils.touch(bundler_gemfile) @remove_bundler_gemfile = true diff --git a/spec/support/path.rb b/spec/support/path.rb index 14c1514291..7cbaf9f055 100644 --- a/spec/support/path.rb +++ b/spec/support/path.rb @@ -38,7 +38,14 @@ module Spec end def tmp(*path) - root.join("tmp", *path) + root.join("tmp", scope, *path) + end + + def scope + test_number = ENV["TEST_ENV_NUMBER"] + return "" if test_number.nil? + + test_number.empty? ? "1" : test_number end def home(*path) diff --git a/spec/support/rubygems_ext.rb b/spec/support/rubygems_ext.rb index aa04c3d00e..faa474a917 100644 --- a/spec/support/rubygems_ext.rb +++ b/spec/support/rubygems_ext.rb @@ -8,6 +8,7 @@ module Spec module Rubygems DEV_DEPS = { "automatiek" => "~> 0.2.0", + "parallel_tests" => "~> 2.29", "rake" => "~> 12.0", "ronn" => "~> 0.7.3", "rspec" => "~> 3.8", |