Formula, BuildError: Update type signatures
We're seeing type errors when building formulae that use something like `xcodebuild ..., "-arch", Hardware::CPU.arch`, since `CPU.arch` is a symbol. We've been addressing these issues by calling `#to_s` on the value but there was some talk about simply expanding the type signatures to accommodate anything that will be cast to a `String`. There's maybe still an argument to be made for doing string conversion in formulae but expanding the type signatures will resolve a number of existing type errors if we simply want to rely on implicit type casting. Past that, this also updates the type signature for `BuildError` to align with the `#system` signature changes, as we receive a type error otherwise.
This commit is contained in:
		
							parent
							
								
									c953076609
								
							
						
					
					
						commit
						578c935bcf
					
				@ -479,7 +479,7 @@ class BuildError < RuntimeError
 | 
			
		||||
    params(
 | 
			
		||||
      formula: T.nilable(Formula),
 | 
			
		||||
      cmd:     T.any(String, Pathname),
 | 
			
		||||
      args:    T::Array[T.any(String, Pathname, Integer)],
 | 
			
		||||
      args:    T::Array[T.any(String, Integer, Pathname, Symbol)],
 | 
			
		||||
      env:     T::Hash[String, T.untyped],
 | 
			
		||||
    ).void
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
@ -2629,7 +2629,7 @@ class Formula
 | 
			
		||||
  #
 | 
			
		||||
  # # If there is a "make install" available, please use it!
 | 
			
		||||
  # system "make", "install"</pre>
 | 
			
		||||
  sig { params(cmd: T.any(String, Pathname), args: T.any(String, Pathname, Integer)).void }
 | 
			
		||||
  sig { params(cmd: T.any(String, Pathname), args: T.any(String, Integer, Pathname, Symbol)).void }
 | 
			
		||||
  def system(cmd, *args)
 | 
			
		||||
    verbose_using_dots = Homebrew::EnvConfig.verbose_using_dots?
 | 
			
		||||
 | 
			
		||||
@ -2794,7 +2794,7 @@ class Formula
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  # Runs `xcodebuild` without Homebrew's compiler environment variables set.
 | 
			
		||||
  sig { params(args: T.any(String, Pathname)).void }
 | 
			
		||||
  sig { params(args: T.any(String, Integer, Pathname, Symbol)).void }
 | 
			
		||||
  def xcodebuild(*args)
 | 
			
		||||
    removed = ENV.remove_cc_etc
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -141,11 +141,11 @@ describe "Exception" do
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  describe BuildError do
 | 
			
		||||
    subject { described_class.new(formula, "badprg", %w[arg1 arg2], {}) }
 | 
			
		||||
    subject { described_class.new(formula, "badprg", ["arg1", 2, Pathname.new("arg3"), :arg4], {}) }
 | 
			
		||||
 | 
			
		||||
    let(:formula) { instance_double(Formula, name: "foo") }
 | 
			
		||||
 | 
			
		||||
    its(:to_s) { is_expected.to eq("Failed executing: badprg arg1 arg2") }
 | 
			
		||||
    its(:to_s) { is_expected.to eq("Failed executing: badprg arg1 2 arg3 arg4") }
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  describe OperationInProgressError do
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user