aboutsummaryrefslogtreecommitdiffstats
path: root/Library
diff options
context:
space:
mode:
Diffstat (limited to 'Library')
-rw-r--r--Library/Homebrew/cask/lib/hbc/cli/internal_stanza.rb37
-rw-r--r--Library/Homebrew/test/cask/cli/internal_stanza_spec.rb42
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