From b4ed7b992449dd773f7f81551ea16c29ab1e0f4a Mon Sep 17 00:00:00 2001 From: Douglas Eichelberger Date: Tue, 10 Jan 2023 21:53:03 -0800 Subject: [PATCH 1/2] Add tests --- .../Homebrew/test/cask/dsl/container_spec.rb | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 Library/Homebrew/test/cask/dsl/container_spec.rb diff --git a/Library/Homebrew/test/cask/dsl/container_spec.rb b/Library/Homebrew/test/cask/dsl/container_spec.rb new file mode 100644 index 0000000000..e291bf0b24 --- /dev/null +++ b/Library/Homebrew/test/cask/dsl/container_spec.rb @@ -0,0 +1,36 @@ +# typed: false +# frozen_string_literal: true + +require "test/cask/dsl/shared_examples/base" + +describe Cask::DSL::Container do + subject(:container) { described_class.new(**params) } + + describe "#pairs" do + let(:params) { { nested: "NestedApp.dmg" } } + + it "returns the attributes as a hash" do + expect(container.pairs).to eq(nested: "NestedApp.dmg") + end + end + + describe "#to_s" do + let(:params) { { nested: "NestedApp.dmg", type: :naked } } + + it "returns the stringified attributes" do + expect(container.to_s).to eq('{:nested=>"NestedApp.dmg", :type=>:naked}') + end + end + + describe "#to_yaml" do + let(:params) { { nested: "NestedApp.dmg", type: :naked } } + + it "returns the attributes in YAML format" do + expect(container.to_yaml).to eq(<<~YAML) + --- + :nested: NestedApp.dmg + :type: :naked + YAML + end + end +end From 9958ab3ecf8dbc85740b0eae4df28c081d158063 Mon Sep 17 00:00:00 2001 From: Douglas Eichelberger Date: Tue, 10 Jan 2023 22:16:45 -0800 Subject: [PATCH 2/2] Make Cask::DSL::Container#pairs a derived property --- Library/Homebrew/cask/dsl/container.rb | 25 ++++++++++--------------- 1 file changed, 10 insertions(+), 15 deletions(-) diff --git a/Library/Homebrew/cask/dsl/container.rb b/Library/Homebrew/cask/dsl/container.rb index 4d0d63213a..7f3d970892 100644 --- a/Library/Homebrew/cask/dsl/container.rb +++ b/Library/Homebrew/cask/dsl/container.rb @@ -9,20 +9,11 @@ module Cask # # @api private class Container - VALID_KEYS = Set.new([ - :type, - :nested, - ]).freeze + attr_accessor :nested, :type - attr_accessor(*VALID_KEYS, :pairs) - - def initialize(**pairs) - @pairs = pairs - pairs.each do |key, value| - raise "invalid container key: #{key.inspect}" unless VALID_KEYS.include?(key) - - send(:"#{key}=", value) - end + def initialize(nested: nil, type: nil) + @nested = nested + @type = type return if type.nil? return unless UnpackStrategy.from_type(type).nil? @@ -30,12 +21,16 @@ module Cask raise "invalid container type: #{type.inspect}" end + def pairs + instance_variables.to_h { |ivar| [ivar[1..].to_sym, instance_variable_get(ivar)] }.compact + end + def to_yaml - @pairs.to_yaml + pairs.to_yaml end def to_s - @pairs.inspect + pairs.inspect end end end