diff options
author | Bundlerbot <bot@bundler.io> | 2020-02-11 17:10:55 +0000 |
---|---|---|
committer | Bundlerbot <bot@bundler.io> | 2020-02-11 17:10:55 +0000 |
commit | 0a55b739946330ddc6312f58cfb23680db0b7328 (patch) | |
tree | 4d34011f2af4fcd5b6bb662b2203c8d06d691071 | |
parent | 203d02c3670083a95733afc1a9d7a870d1ae1c34 (diff) | |
parent | 1e9e4cbab0715d77059fa0b3aac9a940f1d60873 (diff) | |
download | bundler-0a55b739946330ddc6312f58cfb23680db0b7328.tar.gz |
Merge #7630
7630: More paralelization improvements r=deivid-rodriguez a=deivid-rodriguez
<!--
Thanks so much for the contribution!
If you're updating documentation, make sure you run `bin/rake man:build` and
squash the result into your changes, so that all documentation formats are
updated.
To make reviewing this PR a bit easier, please fill out answers to the following questions.
-->
### What was the end-user or developer problem that led to this PR?
The developer problem is that CI is still failing sometimes. The reason is most likely due to side effects when parallelizing specs, since specs still change the current folder globally sometimes.
### What is your fix for the problem, implemented in this PR?
My changes stop changing folders globally in more places, to try to alleviate these issues.
<!-- Explain the fix being implemented. Include any diagnosis you run to
determine the cause of the issue and your conclusions. If you considered other
alternatives, explain why you end up choosing the current implementation -->
Co-authored-by: David RodrÃguez <deivid.rodriguez@riseup.net>
-rw-r--r-- | spec/support/builders.rb | 38 | ||||
-rw-r--r-- | spec/support/path.rb | 10 |
2 files changed, 24 insertions, 24 deletions
diff --git a/spec/support/builders.rb b/spec/support/builders.rb index 467a9f2ccd..3f07591307 100644 --- a/spec/support/builders.rb +++ b/spec/support/builders.rb @@ -463,7 +463,6 @@ module Spec Array(versions).each do |version| spec = builder.new(self, name, version) - spec.authors = ["no one"] if !spec.authors || spec.authors.empty? yield spec if block_given? spec._build(options) end @@ -616,15 +615,6 @@ module Spec def @spec.validate(*); end end - case options[:gemspec] - when false - # do nothing - when :yaml - @files["#{name}.gemspec"] = @spec.to_yaml - else - @files["#{name}.gemspec"] = @spec.to_ruby - end - unless options[:no_default] gem_source = options[:source] || "path@#{path}" @files = _default_files. @@ -633,13 +623,24 @@ module Spec end @spec.authors = ["no one"] + @spec.files = @files.keys + + case options[:gemspec] + when false + # do nothing + when :yaml + @spec.files << "#{name}.gemspec" + @files["#{name}.gemspec"] = @spec.to_yaml + else + @spec.files << "#{name}.gemspec" + @files["#{name}.gemspec"] = @spec.to_ruby + end @files.each do |file, source| file = Pathname.new(path).join(file) FileUtils.mkdir_p(file.dirname) File.open(file, "w") {|f| f.puts source } end - @spec.files = @files.keys path end @@ -748,13 +749,18 @@ module Spec def _build(opts) lib_path = super(opts.merge(:path => @context.tmp(".tmp/#{@spec.full_name}"), :no_default => opts[:no_default])) destination = opts[:path] || _default_path - Dir.chdir(lib_path) do - FileUtils.mkdir_p(destination) - - @spec.authors = ["that guy"] if !@spec.authors || @spec.authors.empty? + FileUtils.mkdir_p(lib_path.join(destination)) - Bundler.rubygems.build(@spec, opts[:skip_validation]) + if opts[:gemspec] == :yaml || opts[:gemspec] == false + Dir.chdir(lib_path) do + Bundler.rubygems.build(@spec, opts[:skip_validation]) + end + elsif opts[:skip_validation] + @context.gem_command "build --force #{@spec.name}", :dir => lib_path + else + @context.gem_command! "build #{@spec.name}", :dir => lib_path end + gem_path = File.expand_path("#{@spec.full_name}.gem", lib_path) if opts[:to_system] @context.system_gems gem_path, :keep_path => true diff --git a/spec/support/path.rb b/spec/support/path.rb index 25206c9832..bfa4865abd 100644 --- a/spec/support/path.rb +++ b/spec/support/path.rb @@ -86,8 +86,6 @@ module Spec root.join(*path) end - alias_method :bundled_app1, :bundled_app - def bundled_app2(*path) root = tmp.join("bundled_app2") FileUtils.mkdir_p(root) @@ -172,8 +170,8 @@ module Spec def with_root_gemspec if ruby_core? root_gemspec = root.join("bundler.gemspec") - # `in_repo_root` for Dir.glob in gemspec - spec = in_repo_root { Gem::Specification.load(gemspec.to_s) } + # Dir.chdir for Dir.glob in gemspec + spec = Dir.chdir(root) { Gem::Specification.load(gemspec.to_s) } spec.bindir = "libexec" File.open(root_gemspec.to_s, "w") {|f| f.write spec.to_ruby } yield(root_gemspec) @@ -194,10 +192,6 @@ module Spec end end - def in_repo_root - Dir.chdir(root) { yield } - end - extend self private |