From f634d1ee00e8327f1e91a5af3792c0e30c38c330 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20Rodr=C3=ADguez?= Date: Fri, 29 Oct 2021 15:51:07 +0200 Subject: [PATCH] [rubygems/rubygems] Better error when installing a git lockfile and git not present https://github.com/rubygems/rubygems/commit/28f4842196 --- lib/bundler/source/git/git_proxy.rb | 7 +++-- spec/bundler/install/gemfile/git_spec.rb | 39 +++++++++++++++++++++++- 2 files changed, 43 insertions(+), 3 deletions(-) diff --git a/lib/bundler/source/git/git_proxy.rb b/lib/bundler/source/git/git_proxy.rb index 7555561edd5738..e37ff8724a36b1 100644 --- a/lib/bundler/source/git/git_proxy.rb +++ b/lib/bundler/source/git/git_proxy.rb @@ -56,7 +56,6 @@ def initialize(path, uri, ref, revision = nil, git = nil) @ref = ref @revision = revision @git = git - raise GitNotInstalledError.new if allow? && !Bundler.git_present? end def revision @@ -208,7 +207,11 @@ def configured_uri_for(uri) end def allow? - @git ? @git.allow_git_ops? : true + allowed = @git ? @git.allow_git_ops? : true + + raise GitNotInstalledError.new if allowed && !Bundler.git_present? + + allowed end def with_path(&blk) diff --git a/spec/bundler/install/gemfile/git_spec.rb b/spec/bundler/install/gemfile/git_spec.rb index df2650989fadfd..150fcf2c4204b8 100644 --- a/spec/bundler/install/gemfile/git_spec.rb +++ b/spec/bundler/install/gemfile/git_spec.rb @@ -1436,7 +1436,44 @@ end describe "without git installed" do - it "prints a better error message" do + it "prints a better error message when installing" do + build_git "foo" + + gemfile <<-G + source "#{file_uri_for(gem_repo1)}" + + gem "rake", git: "https://github.com/ruby/rake" + G + + lockfile <<-L + GIT + remote: https://github.com/ruby/rake + revision: 5c60da8644a9e4f655e819252e3b6ca77f42b7af + specs: + rake (13.0.6) + + GEM + remote: https://rubygems.org/ + specs: + + PLATFORMS + #{lockfile_platforms} + + DEPENDENCIES + rake! + + BUNDLED WITH + #{Bundler::VERSION} + L + + with_path_as("") do + bundle "install", :raise_on_error => false + end + expect(err). + to include("You need to install git to be able to use gems from git repositories. For help installing git, please refer to GitHub's tutorial at https://help.github.com/articles/set-up-git") + end + + it "prints a better error message when updating" do build_git "foo" install_gemfile <<-G