diff options
Diffstat (limited to 'Library/Homebrew')
| -rw-r--r-- | Library/Homebrew/cask/lib/hbc/cli/internal_stanza.rb | 37 | ||||
| -rw-r--r-- | Library/Homebrew/test/cask/cli/internal_stanza_spec.rb | 42 | 
2 files changed, 55 insertions, 24 deletions
| diff --git a/Library/Homebrew/cask/lib/hbc/cli/internal_stanza.rb b/Library/Homebrew/cask/lib/hbc/cli/internal_stanza.rb index c04619798..bafaadc24 100644 --- a/Library/Homebrew/cask/lib/hbc/cli/internal_stanza.rb +++ b/Library/Homebrew/cask/lib/hbc/cli/internal_stanza.rb @@ -43,6 +43,13 @@ module Hbc          @stanza = args.shift.to_sym          @format = :to_yaml if yaml? + +        return if DSL::DSL_METHODS.include?(stanza) +        raise ArgumentError, +          <<~EOS +            Unknown/unsupported stanza: '#{stanza}' +            Check Cask reference for supported stanzas. +          EOS        end        def run @@ -54,12 +61,6 @@ module Hbc          casks(alternative: -> { Hbc.all }).each do |cask|            print "#{cask}\t" if table? -          unless cask.respond_to?(stanza) -            opoo "no such stanza '#{stanza}' on Cask '#{cask}'" unless quiet? -            puts "" -            next -          end -            begin              value = cask.send(stanza)            rescue StandardError @@ -68,26 +69,14 @@ module Hbc              next            end -          if artifact_name && !value.key?(artifact_name) -            opoo "no such stanza '#{artifact_name}' on Cask '#{cask}'" unless quiet? -            puts "" -            next -          end -            if stanza == :artifacts -            value = Hash[ -              value.map do |k, v| -                v = v.map do |a| -                  next a.to_a if a.respond_to?(:to_a) -                  next a.to_h if a.respond_to?(:to_h) -                  a -                end - -                [k, v] -              end -            ] +            value = Hash[value.map { |v| [v.class.dsl_key, v.to_s] }] +            value = value[artifact_name] if artifact_name +          end -            value = value.fetch(artifact_name) if artifact_name +          if value.nil? || (value.respond_to?(:to_a) && value.to_a.empty?) +            stanza_name = artifact_name ? artifact_name : stanza +            raise CaskError, "no such stanza '#{stanza_name}' on Cask '#{cask}'"            end            if format diff --git a/Library/Homebrew/test/cask/cli/internal_stanza_spec.rb b/Library/Homebrew/test/cask/cli/internal_stanza_spec.rb new file mode 100644 index 000000000..47b0fd8b3 --- /dev/null +++ b/Library/Homebrew/test/cask/cli/internal_stanza_spec.rb @@ -0,0 +1,42 @@ +describe Hbc::CLI::InternalStanza, :cask do +  it "shows stanza of the Specified Cask" do +    command = described_class.new("gpg", "with-gpg") +    expect { +      command.run +    }.to output("http://example.com/gpg-signature.asc\n").to_stdout +  end + +  it "raises an exception when stanza is unknown/unsupported" do +    expect { +      described_class.new("this_stanza_does_not_exist", "with-gpg") +    }.to raise_error(%r{Unknown/unsupported stanza}) +  end + +  it "raises an exception when normal stanza is not present on cask" do +    command = described_class.new("caveats", "with-gpg") +    expect { +      command.run +    }.to raise_error(/no such stanza/) +  end + +  it "raises an exception when artifact stanza is not present on cask" do +    command = described_class.new("zap", "with-gpg") +    expect { +      command.run +    }.to raise_error(/no such stanza/) +  end + +  it "raises an exception when 'depends_on' stanza is not present on cask" do +    command = described_class.new("depends_on", "with-gpg") +    expect { +      command.run +    }.to raise_error(/no such stanza/) +  end + +  it "shows all artifact stanzas when using 'artifacts' keyword" do +    command = described_class.new("artifacts", "with-gpg") +    expect { +      command.run +    }.to output(/Caffeine\.app/).to_stdout +  end +end | 
