summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBundlerbot <bot@bundler.io>2020-02-11 17:10:55 +0000
committerBundlerbot <bot@bundler.io>2020-02-11 17:10:55 +0000
commit0a55b739946330ddc6312f58cfb23680db0b7328 (patch)
tree4d34011f2af4fcd5b6bb662b2203c8d06d691071
parent203d02c3670083a95733afc1a9d7a870d1ae1c34 (diff)
parent1e9e4cbab0715d77059fa0b3aac9a940f1d60873 (diff)
downloadbundler-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.rb38
-rw-r--r--spec/support/path.rb10
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