Allow symbol keys for tab attributes
This commit is contained in:
		
							parent
							
								
									77bdc5ede1
								
							
						
					
					
						commit
						4cc7463e65
					
				@ -11,7 +11,7 @@ module Cask
 | 
			
		||||
    sig { returns(T.nilable(T::Array[T.untyped])) }
 | 
			
		||||
    attr_accessor :uninstall_artifacts
 | 
			
		||||
 | 
			
		||||
    sig { params(attributes: T::Hash[String, T.untyped]).void }
 | 
			
		||||
    sig { params(attributes: T::Hash[T.any(String, Symbol), T.untyped]).void }
 | 
			
		||||
    def initialize(attributes = {})
 | 
			
		||||
      @uninstall_flight_blocks = T.let(nil, T.nilable(T::Boolean))
 | 
			
		||||
      @uninstall_artifacts = T.let(nil, T.nilable(T::Array[T.untyped]))
 | 
			
		||||
 | 
			
		||||
@ -80,7 +80,8 @@ module Cask
 | 
			
		||||
      specs[:revisions]  = @revisions  = T.let(revisions, T.nilable(T::Hash[T.any(Symbol, String), String]))
 | 
			
		||||
      specs[:revision]   = @revision   = T.let(revision, T.nilable(String))
 | 
			
		||||
      specs[:trust_cert] = @trust_cert = T.let(trust_cert, T.nilable(T::Boolean))
 | 
			
		||||
      specs[:cookies]    = @cookies    = T.let(cookies, T.nilable(T::Hash[T.any(String, Symbol), String]))
 | 
			
		||||
      specs[:cookies]    =
 | 
			
		||||
        @cookies = T.let(cookies&.transform_keys(&:to_s), T.nilable(T::Hash[String, String]))
 | 
			
		||||
      specs[:referer]    = @referer    = T.let(referer, T.nilable(T.any(URI::Generic, String)))
 | 
			
		||||
      specs[:headers]    = @header     = T.let(header, T.nilable(T.any(String, T::Array[String])))
 | 
			
		||||
      specs[:user_agent] = @user_agent = T.let(user_agent || :default, T.nilable(T.any(Symbol, String)))
 | 
			
		||||
 | 
			
		||||
@ -167,7 +167,7 @@ class SystemCommand
 | 
			
		||||
      args:         T::Array[T.any(String, Integer, Float, Pathname, URI::Generic)],
 | 
			
		||||
      sudo:         T::Boolean,
 | 
			
		||||
      sudo_as_root: T::Boolean,
 | 
			
		||||
      env:          T::Hash[String, String],
 | 
			
		||||
      env:          T::Hash[String, T.nilable(String)],
 | 
			
		||||
      input:        T.any(String, T::Array[String]),
 | 
			
		||||
      must_succeed: T::Boolean,
 | 
			
		||||
      print_stdout: T.any(T::Boolean, Symbol),
 | 
			
		||||
 | 
			
		||||
@ -38,7 +38,7 @@ class AbstractTab
 | 
			
		||||
  # @api internal
 | 
			
		||||
  attr_accessor :runtime_dependencies
 | 
			
		||||
 | 
			
		||||
  sig { params(attributes: T::Hash[String, T.untyped]).void }
 | 
			
		||||
  sig { params(attributes: T::Hash[T.any(String, Symbol), T.untyped]).void }
 | 
			
		||||
  def initialize(attributes = {})
 | 
			
		||||
    @installed_as_dependency = T.let(nil, T.nilable(T::Boolean))
 | 
			
		||||
    @installed_on_request = T.let(nil, T.nilable(T::Boolean))
 | 
			
		||||
@ -170,7 +170,7 @@ class Tab < AbstractTab
 | 
			
		||||
  attr_writer :used_options, :unused_options, :compiler, :source_modified_time
 | 
			
		||||
  attr_reader :tapped_from
 | 
			
		||||
 | 
			
		||||
  sig { params(attributes: T::Hash[String, T.untyped]).void }
 | 
			
		||||
  sig { params(attributes: T::Hash[T.any(String, Symbol), T.untyped]).void }
 | 
			
		||||
  def initialize(attributes = {})
 | 
			
		||||
    @poured_from_bottle = T.let(nil, T.nilable(T::Boolean))
 | 
			
		||||
    @built_as_bottle = T.let(nil, T.nilable(T::Boolean))
 | 
			
		||||
 | 
			
		||||
@ -185,7 +185,7 @@ RSpec.describe Formula do
 | 
			
		||||
 | 
			
		||||
    build_values_with_no_installed_alias = [
 | 
			
		||||
      BuildOptions.new(Options.new, f.options),
 | 
			
		||||
      Tab.new("source" => { "path" => f.path.to_s }),
 | 
			
		||||
      Tab.new(source: { "path" => f.path.to_s }),
 | 
			
		||||
    ]
 | 
			
		||||
    build_values_with_no_installed_alias.each do |build|
 | 
			
		||||
      f.build = build
 | 
			
		||||
@ -201,7 +201,7 @@ RSpec.describe Formula do
 | 
			
		||||
    CoreTap.instance.alias_dir.mkpath
 | 
			
		||||
    FileUtils.ln_sf f.path, alias_path
 | 
			
		||||
 | 
			
		||||
    f.build = Tab.new("source" => { "path" => alias_path.to_s })
 | 
			
		||||
    f.build = Tab.new(source: { "path" => alias_path.to_s })
 | 
			
		||||
 | 
			
		||||
    expect(f.installed_alias_path).to eq(alias_path)
 | 
			
		||||
    expect(f.installed_alias_name).to eq(alias_name)
 | 
			
		||||
@ -220,7 +220,7 @@ RSpec.describe Formula do
 | 
			
		||||
 | 
			
		||||
    build_values_with_no_installed_alias = [
 | 
			
		||||
      BuildOptions.new(Options.new, f.options),
 | 
			
		||||
      Tab.new("source" => { "path" => f.path.to_s }),
 | 
			
		||||
      Tab.new(source: { "path" => f.path.to_s }),
 | 
			
		||||
    ]
 | 
			
		||||
    build_values_with_no_installed_alias.each do |build|
 | 
			
		||||
      f.build = build
 | 
			
		||||
@ -237,7 +237,7 @@ RSpec.describe Formula do
 | 
			
		||||
    tap.alias_dir.mkpath
 | 
			
		||||
    FileUtils.ln_sf f.path, alias_path
 | 
			
		||||
 | 
			
		||||
    f.build = Tab.new("source" => { "path" => alias_path.to_s })
 | 
			
		||||
    f.build = Tab.new(source: { "path" => alias_path.to_s })
 | 
			
		||||
 | 
			
		||||
    expect(f.installed_alias_path).to eq(alias_path)
 | 
			
		||||
    expect(f.installed_alias_name).to eq(alias_name)
 | 
			
		||||
@ -440,7 +440,7 @@ RSpec.describe Formula do
 | 
			
		||||
      f = formula(alias_path:) do
 | 
			
		||||
        url "foo-1.0"
 | 
			
		||||
      end
 | 
			
		||||
      f.build = Tab.new("source" => { "path" => source_path.to_s })
 | 
			
		||||
      f.build = Tab.new(source: { "path" => source_path.to_s })
 | 
			
		||||
 | 
			
		||||
      expect(f.alias_path).to eq(alias_path)
 | 
			
		||||
      expect(f.installed_alias_path).to be_nil
 | 
			
		||||
@ -453,7 +453,7 @@ RSpec.describe Formula do
 | 
			
		||||
      f = formula(alias_path:) do
 | 
			
		||||
        url "foo-1.0"
 | 
			
		||||
      end
 | 
			
		||||
      f.build = Tab.new("source" => { "path" => source_path.to_s })
 | 
			
		||||
      f.build = Tab.new(source: { "path" => source_path.to_s })
 | 
			
		||||
      CoreTap.instance.alias_dir.mkpath
 | 
			
		||||
      FileUtils.ln_sf f.path, source_path
 | 
			
		||||
 | 
			
		||||
@ -919,7 +919,7 @@ RSpec.describe Formula do
 | 
			
		||||
    f1 = formula "f1" do
 | 
			
		||||
      url "f1-1"
 | 
			
		||||
 | 
			
		||||
      depends_on xcode: ["1.0", "optional"]
 | 
			
		||||
      depends_on xcode: ["1.0", :optional]
 | 
			
		||||
    end
 | 
			
		||||
    stub_formula_loader(f1)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -116,7 +116,7 @@ RSpec.describe Tab do
 | 
			
		||||
    tab = described_class.new
 | 
			
		||||
    expect(tab.parsed_homebrew_version).to be Version::NULL
 | 
			
		||||
 | 
			
		||||
    tab = described_class.new("homebrew_version" => "1.2.3")
 | 
			
		||||
    tab = described_class.new(homebrew_version: "1.2.3")
 | 
			
		||||
    expect(tab.parsed_homebrew_version).to eq("1.2.3")
 | 
			
		||||
    expect(tab.parsed_homebrew_version).to be < "1.2.3-1-g12789abdf"
 | 
			
		||||
    expect(tab.parsed_homebrew_version).to be_a(Version)
 | 
			
		||||
@ -126,7 +126,7 @@ RSpec.describe Tab do
 | 
			
		||||
    expect(tab.parsed_homebrew_version).to be > "1.2.4-566-g21789abdf"
 | 
			
		||||
    expect(tab.parsed_homebrew_version).to be < "1.2.4-568-g01789abdf"
 | 
			
		||||
 | 
			
		||||
    tab = described_class.new("homebrew_version" => "2.0.0-134-gabcdefabc-dirty")
 | 
			
		||||
    tab = described_class.new(homebrew_version: "2.0.0-134-gabcdefabc-dirty")
 | 
			
		||||
    expect(tab.parsed_homebrew_version).to be > "2.0.0"
 | 
			
		||||
    expect(tab.parsed_homebrew_version).to be > "2.0.0-133-g21789abdf"
 | 
			
		||||
    expect(tab.parsed_homebrew_version).to be < "2.0.0-135-g01789abdf"
 | 
			
		||||
@ -486,10 +486,10 @@ RSpec.describe Tab do
 | 
			
		||||
 | 
			
		||||
    it "returns install information for the Tab" do
 | 
			
		||||
      tab = described_class.new(
 | 
			
		||||
        "poured_from_bottle" => true,
 | 
			
		||||
        "loaded_from_api"    => true,
 | 
			
		||||
        "time"               => 1_720_189_863,
 | 
			
		||||
        "used_options"       => %w[--with-foo --without-bar],
 | 
			
		||||
        poured_from_bottle: true,
 | 
			
		||||
        loaded_from_api:    true,
 | 
			
		||||
        time:               1_720_189_863,
 | 
			
		||||
        used_options:       %w[--with-foo --without-bar],
 | 
			
		||||
      )
 | 
			
		||||
      output = "Poured from bottle using the formulae.brew.sh API on #{time_string} " \
 | 
			
		||||
               "with: --with-foo --without-bar"
 | 
			
		||||
@ -497,42 +497,42 @@ RSpec.describe Tab do
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    it "includes 'Poured from bottle' if the formula was installed from a bottle" do
 | 
			
		||||
      tab = described_class.new("poured_from_bottle" =>  true)
 | 
			
		||||
      tab = described_class.new(poured_from_bottle: true)
 | 
			
		||||
      expect(tab.to_s).to include("Poured from bottle")
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    it "includes 'Built from source' if the formula was not installed from a bottle" do
 | 
			
		||||
      tab = described_class.new("poured_from_bottle" => false)
 | 
			
		||||
      tab = described_class.new(poured_from_bottle: false)
 | 
			
		||||
      expect(tab.to_s).to include("Built from source")
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    it "includes 'using the formulae.brew.sh API' if the formula was installed from the API" do
 | 
			
		||||
      tab = described_class.new("loaded_from_api" => true)
 | 
			
		||||
      tab = described_class.new(loaded_from_api: true)
 | 
			
		||||
      expect(tab.to_s).to include("using the formulae.brew.sh API")
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    it "does not include 'using the formulae.brew.sh API' if the formula was not installed from the API" do
 | 
			
		||||
      tab = described_class.new("loaded_from_api" => false)
 | 
			
		||||
      tab = described_class.new(loaded_from_api: false)
 | 
			
		||||
      expect(tab.to_s).not_to include("using the formulae.brew.sh API")
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    it "includes the time value if specified" do
 | 
			
		||||
      tab = described_class.new("time" => 1_720_189_863)
 | 
			
		||||
      tab = described_class.new(time: 1_720_189_863)
 | 
			
		||||
      expect(tab.to_s).to include("on #{time_string}")
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    it "does not include the time value if not specified" do
 | 
			
		||||
      tab = described_class.new("time" =>  nil)
 | 
			
		||||
      tab = described_class.new(time: nil)
 | 
			
		||||
      expect(tab.to_s).not_to match(/on %d+-%d+-%d+ at %d+:%d+:%d+/)
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    it "includes options if specified" do
 | 
			
		||||
      tab = described_class.new("used_options" => %w[--with-foo --without-bar])
 | 
			
		||||
      tab = described_class.new(used_options: %w[--with-foo --without-bar])
 | 
			
		||||
      expect(tab.to_s).to include("with: --with-foo --without-bar")
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    it "not to include options if not specified" do
 | 
			
		||||
      tab = described_class.new("used_options" => [])
 | 
			
		||||
      tab = described_class.new(used_options: [])
 | 
			
		||||
      expect(tab.to_s).not_to include("with: ")
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user