Merge pull request #4564 from reitermarkus/not-a-cask-file-error
Raise error when file does not contain a cask.
This commit is contained in:
commit
3c3b05d457
@ -17,7 +17,11 @@ module Hbc
|
||||
return to_enum unless block_given?
|
||||
|
||||
Tap.flat_map(&:cask_files).each do |f|
|
||||
yield CaskLoader::FromTapPathLoader.new(f).load
|
||||
begin
|
||||
yield CaskLoader::FromTapPathLoader.new(f).load
|
||||
rescue CaskUnreadableError => e
|
||||
opoo e.message
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
@ -54,7 +54,15 @@ module Hbc
|
||||
|
||||
@content = IO.read(path)
|
||||
|
||||
instance_eval(content, path)
|
||||
begin
|
||||
instance_eval(content, path).tap do |cask|
|
||||
unless cask.is_a?(Cask)
|
||||
raise CaskUnreadableError.new(token, "'#{path}' does not contain a cask.")
|
||||
end
|
||||
end
|
||||
rescue NameError, ArgumentError, ScriptError => e
|
||||
raise CaskUnreadableError.new(token, e.message)
|
||||
end
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
@ -36,6 +36,12 @@ module Hbc
|
||||
end
|
||||
end
|
||||
|
||||
class CaskUnreadableError < CaskUnavailableError
|
||||
def to_s
|
||||
"Cask '#{token}' is unreadable" << (reason.empty? ? "." : ": #{reason}")
|
||||
end
|
||||
end
|
||||
|
||||
class CaskAlreadyCreatedError < AbstractCaskErrorWithToken
|
||||
def to_s
|
||||
%Q(Cask '#{token}' already exists. Run #{Formatter.identifier("brew cask edit #{token}")} to edit it.)
|
||||
|
||||
@ -0,0 +1,35 @@
|
||||
describe Hbc::CaskLoader::FromPathLoader do
|
||||
describe "#load" do
|
||||
context "when the file does not contain a cask" do
|
||||
let(:path) {
|
||||
(mktmpdir/"cask.rb").tap do |path|
|
||||
path.write <<~RUBY
|
||||
true
|
||||
RUBY
|
||||
end
|
||||
}
|
||||
|
||||
it "raises an error" do
|
||||
expect {
|
||||
described_class.new(path).load
|
||||
}.to raise_error(Hbc::CaskUnreadableError, /does not contain a cask/)
|
||||
end
|
||||
end
|
||||
|
||||
context "when the file calls a non-existent method" do
|
||||
let(:path) {
|
||||
(mktmpdir/"cask.rb").tap do |path|
|
||||
path.write <<~RUBY
|
||||
this_method_does_not_exist
|
||||
RUBY
|
||||
end
|
||||
}
|
||||
|
||||
it "raises an error" do
|
||||
expect {
|
||||
described_class.new(path).load
|
||||
}.to raise_error(Hbc::CaskUnreadableError, /undefined local variable or method/)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
@ -46,7 +46,7 @@ describe Hbc::DSL, :cask do
|
||||
let(:token) { "invalid/invalid-header-format" }
|
||||
|
||||
it "raises an error" do
|
||||
expect { cask }.to raise_error(SyntaxError)
|
||||
expect { cask }.to raise_error(Hbc::CaskUnreadableError)
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user