Fix NoSuchKegFromTapError handling
This commit is contained in:
		
							parent
							
								
									1f306b4d15
								
							
						
					
					
						commit
						eb93d844d8
					
				@ -423,7 +423,7 @@ module Homebrew
 | 
			
		||||
            keg.tab.tap == requested_tap
 | 
			
		||||
          end
 | 
			
		||||
 | 
			
		||||
          raise NoSuchKegFromTapError.new(requested_formula, requested_tap) if kegs.none?
 | 
			
		||||
          raise NoSuchKegError.new(requested_formula, tap: requested_tap) if kegs.none?
 | 
			
		||||
        end
 | 
			
		||||
 | 
			
		||||
        raise NoSuchKegError, name if kegs.none?
 | 
			
		||||
 | 
			
		||||
@ -53,23 +53,14 @@ class NotAKegError < RuntimeError; end
 | 
			
		||||
 | 
			
		||||
# Raised when a keg doesn't exist.
 | 
			
		||||
class NoSuchKegError < RuntimeError
 | 
			
		||||
  attr_reader :name
 | 
			
		||||
 | 
			
		||||
  def initialize(name)
 | 
			
		||||
    @name = name
 | 
			
		||||
    super "No such keg: #{HOMEBREW_CELLAR}/#{name}"
 | 
			
		||||
  end
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
# Raised when a keg from a specific tap doesn't exist.
 | 
			
		||||
class NoSuchKegFromTapError < RuntimeError
 | 
			
		||||
  attr_reader :name, :tap
 | 
			
		||||
 | 
			
		||||
  sig { params(name: String, tap: Tap).void }
 | 
			
		||||
  def initialize(name, tap)
 | 
			
		||||
  def initialize(name, tap: nil)
 | 
			
		||||
    @name = name
 | 
			
		||||
    @tap = tap
 | 
			
		||||
    super "No such keg: #{HOMEBREW_CELLAR}/#{name} from tap #{tap}"
 | 
			
		||||
    message = "No such keg: #{HOMEBREW_CELLAR}/#{name}"
 | 
			
		||||
    message += " from tap #{tap}" if tap
 | 
			
		||||
    super message
 | 
			
		||||
  end
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -244,7 +244,7 @@ RSpec.describe Homebrew::CLI::NamedArgs do
 | 
			
		||||
      it "raises an error if there is no tap match" do
 | 
			
		||||
        stub_formula_loader bar, "other/tap/bar"
 | 
			
		||||
 | 
			
		||||
        expect { described_class.new("other/tap/bar").to_kegs }.to raise_error(NoSuchKegFromTapError)
 | 
			
		||||
        expect { described_class.new("other/tap/bar").to_kegs }.to raise_error(NoSuchKegError, %r{from tap other/tap})
 | 
			
		||||
      end
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
@ -19,18 +19,20 @@ RSpec.describe "Exception" do
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  describe NoSuchKegFromTapError do
 | 
			
		||||
    subject(:error) { described_class.new("foo", tap) }
 | 
			
		||||
 | 
			
		||||
    let(:tap) { instance_double(Tap, to_s: "u/r") }
 | 
			
		||||
 | 
			
		||||
    it(:to_s) { expect(error.to_s).to eq("No such keg: #{HOMEBREW_CELLAR}/foo from tap u/r") }
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  describe NoSuchKegError do
 | 
			
		||||
    subject(:error) { described_class.new("foo") }
 | 
			
		||||
    context "without a tap" do
 | 
			
		||||
      subject(:error) { described_class.new("foo") }
 | 
			
		||||
 | 
			
		||||
    it(:to_s) { expect(error.to_s).to eq("No such keg: #{HOMEBREW_CELLAR}/foo") }
 | 
			
		||||
      it(:to_s) { expect(error.to_s).to eq("No such keg: #{HOMEBREW_CELLAR}/foo") }
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    context "with a tap" do
 | 
			
		||||
      subject(:error) { described_class.new("foo", tap:) }
 | 
			
		||||
 | 
			
		||||
      let(:tap) { instance_double(Tap, to_s: "u/r") }
 | 
			
		||||
 | 
			
		||||
      it(:to_s) { expect(error.to_s).to eq("No such keg: #{HOMEBREW_CELLAR}/foo from tap u/r") }
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  describe FormulaValidationError do
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user