named_args_spec: add tests for unreadable formulae/casks
This commit is contained in:
parent
e5fca67e0a
commit
6e0bf05fb5
@ -3,6 +3,20 @@
|
|||||||
|
|
||||||
require "cli/named_args"
|
require "cli/named_args"
|
||||||
|
|
||||||
|
def setup_unredable_formula(name)
|
||||||
|
error = FormulaUnreadableError.new(name, "testing")
|
||||||
|
allow(Formulary).to receive(:factory).with(name, force_bottle: false, flags: []).and_raise(error)
|
||||||
|
end
|
||||||
|
|
||||||
|
def setup_unredable_cask(name)
|
||||||
|
error = Cask::CaskUnreadableError.new(name, "testing")
|
||||||
|
allow(Cask::CaskLoader).to receive(:load).with(name).and_raise(error)
|
||||||
|
|
||||||
|
config = instance_double(Cask::Config)
|
||||||
|
allow(Cask::Config).to receive(:from_args).and_return(config)
|
||||||
|
allow(Cask::CaskLoader).to receive(:load).with(name, config: config).and_raise(error)
|
||||||
|
end
|
||||||
|
|
||||||
describe Homebrew::CLI::NamedArgs do
|
describe Homebrew::CLI::NamedArgs do
|
||||||
let(:foo) do
|
let(:foo) do
|
||||||
formula "foo" do
|
formula "foo" do
|
||||||
@ -26,6 +40,14 @@ describe Homebrew::CLI::NamedArgs do
|
|||||||
RUBY
|
RUBY
|
||||||
end
|
end
|
||||||
|
|
||||||
|
let(:foo_cask) do
|
||||||
|
Cask::CaskLoader.load(+<<~RUBY)
|
||||||
|
cask "foo" do
|
||||||
|
version "1.0"
|
||||||
|
end
|
||||||
|
RUBY
|
||||||
|
end
|
||||||
|
|
||||||
describe "#to_formulae" do
|
describe "#to_formulae" do
|
||||||
it "returns formulae" do
|
it "returns formulae" do
|
||||||
stub_formula_loader foo, call_original: true
|
stub_formula_loader foo, call_original: true
|
||||||
@ -50,6 +72,76 @@ describe Homebrew::CLI::NamedArgs do
|
|||||||
|
|
||||||
expect(described_class.new("foo", "baz").to_formulae_and_casks).to eq [foo, baz]
|
expect(described_class.new("foo", "baz").to_formulae_and_casks).to eq [foo, baz]
|
||||||
end
|
end
|
||||||
|
|
||||||
|
context "when both formula and cask are present" do
|
||||||
|
before do
|
||||||
|
stub_formula_loader foo
|
||||||
|
stub_cask_loader foo_cask
|
||||||
|
end
|
||||||
|
|
||||||
|
it "returns formula by default" do
|
||||||
|
expect(described_class.new("foo").to_formulae_and_casks).to eq [foo]
|
||||||
|
end
|
||||||
|
|
||||||
|
it "returns formula if loading formula only" do
|
||||||
|
expect(described_class.new("foo").to_formulae_and_casks(only: :formula)).to eq [foo]
|
||||||
|
end
|
||||||
|
|
||||||
|
it "returns cask if loading cask only" do
|
||||||
|
expect(described_class.new("foo").to_formulae_and_casks(only: :cask)).to eq [foo_cask]
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
context "when both formula and cask are unreadable" do
|
||||||
|
before do
|
||||||
|
setup_unredable_formula "foo"
|
||||||
|
setup_unredable_cask "foo"
|
||||||
|
end
|
||||||
|
|
||||||
|
it "raises an error" do
|
||||||
|
expect { described_class.new("foo").to_formulae_and_casks }.to raise_error(FormulaOrCaskUnavailableError)
|
||||||
|
end
|
||||||
|
|
||||||
|
it "raises an error if loading formula only" do
|
||||||
|
expect { described_class.new("foo").to_formulae_and_casks(only: :formula) }
|
||||||
|
.to raise_error(FormulaUnreadableError)
|
||||||
|
end
|
||||||
|
|
||||||
|
it "raises an error if loading cask only" do
|
||||||
|
expect { described_class.new("foo").to_formulae_and_casks(only: :cask) }
|
||||||
|
.to raise_error(Cask::CaskUnreadableError)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
it "raises an error when neither formula nor cask is present" do
|
||||||
|
expect { described_class.new("foo").to_formulae_and_casks }.to raise_error(FormulaOrCaskUnavailableError)
|
||||||
|
end
|
||||||
|
|
||||||
|
it "returns formula when formula is present and cask is unreadable" do
|
||||||
|
stub_formula_loader foo
|
||||||
|
setup_unredable_cask "foo"
|
||||||
|
|
||||||
|
expect(described_class.new("foo").to_formulae_and_casks).to eq [foo]
|
||||||
|
end
|
||||||
|
|
||||||
|
it "returns cask when formula is unreadable and cask is present" do
|
||||||
|
setup_unredable_formula "foo"
|
||||||
|
stub_cask_loader foo_cask
|
||||||
|
|
||||||
|
expect(described_class.new("foo").to_formulae_and_casks).to eq [foo_cask]
|
||||||
|
end
|
||||||
|
|
||||||
|
it "raises an error when formula is absent and cask is unreadable" do
|
||||||
|
setup_unredable_cask "foo"
|
||||||
|
|
||||||
|
expect { described_class.new("foo").to_formulae_and_casks }.to raise_error(Cask::CaskUnreadableError)
|
||||||
|
end
|
||||||
|
|
||||||
|
it "raises an error when formula is unreadable and cask is absent" do
|
||||||
|
setup_unredable_formula "foo"
|
||||||
|
|
||||||
|
expect { described_class.new("foo").to_formulae_and_casks }.to raise_error(FormulaUnreadableError)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
describe "#to_resolved_formulae" do
|
describe "#to_resolved_formulae" do
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user