summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Rodríguez <deivid.rodriguez@riseup.net>2019-09-18 10:07:15 +0200
committerDavid Rodríguez <deivid.rodriguez@riseup.net>2019-09-19 16:06:50 +0200
commiteb15cad1fb056d845aa537d6d315c94e17ffa94f (patch)
treeddf5534fa79d43b66c1dfed97d612c112a91996c
parent6a7da1cc9a59cd7e1399f28b5398f1223b89c56a (diff)
downloadbundler-eb15cad1fb056d845aa537d6d315c94e17ffa94f.tar.gz
Only change cloned copy version if necessary
This should make binstubs more responsive when using `ENV["RGV"]`.
-rw-r--r--spec/support/rubygems_version_manager.rb17
1 files changed, 15 insertions, 2 deletions
diff --git a/spec/support/rubygems_version_manager.rb b/spec/support/rubygems_version_manager.rb
index 83d33da7c3..4be90f7679 100644
--- a/spec/support/rubygems_version_manager.rb
+++ b/spec/support/rubygems_version_manager.rb
@@ -15,7 +15,7 @@ class RubygemsVersionManager
unrequire_rubygems_if_needed
- switch_local_copy
+ switch_local_copy_if_needed
prepare_environment
end
@@ -40,7 +40,9 @@ private
exec(ENV, *cmd)
end
- def switch_local_copy
+ def switch_local_copy_if_needed
+ return unless local_copy_switch_needed?
+
Dir.chdir(local_copy_path) do
sys_exec!("git remote update")
sys_exec!("git checkout #{target_tag_version} --quiet")
@@ -55,6 +57,10 @@ private
defined?(Gem) && Gem::VERSION != target_gem_version
end
+ def local_copy_switch_needed?
+ !env_version_is_path? && target_gem_version != local_copy_version
+ end
+
def target_gem_version
@target_gem_version ||= resolve_target_gem_version
end
@@ -63,6 +69,13 @@ private
@target_tag_version ||= resolve_target_tag_version
end
+ def local_copy_version
+ gemspec_contents = File.read(local_copy_path.join("lib/rubygems.rb"))
+ version_regexp = /VERSION = ["'](.*)["']/
+
+ version_regexp.match(gemspec_contents)[1]
+ end
+
def local_copy_path
@local_copy_path ||= resolve_local_copy_path
end