diff options
author | David RodrÃguez <deivid.rodriguez@riseup.net> | 2019-09-18 10:07:15 +0200 |
---|---|---|
committer | David RodrÃguez <deivid.rodriguez@riseup.net> | 2019-09-19 16:06:50 +0200 |
commit | eb15cad1fb056d845aa537d6d315c94e17ffa94f (patch) | |
tree | ddf5534fa79d43b66c1dfed97d612c112a91996c | |
parent | 6a7da1cc9a59cd7e1399f28b5398f1223b89c56a (diff) | |
download | bundler-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.rb | 17 |
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 |