mirror of
https://github.com/Homebrew/brew.git
synced 2025-07-14 16:09:03 +08:00
57 lines
1.3 KiB
Ruby
57 lines
1.3 KiB
Ruby
![]() |
# frozen_string_literal: true
|
||
|
|
||
|
require "abstract_command"
|
||
|
|
||
|
RSpec.describe Homebrew::AbstractCommand do
|
||
|
describe "subclasses" do
|
||
|
before do
|
||
|
cat = Class.new(described_class) do
|
||
|
cmd_args do
|
||
|
switch "--foo"
|
||
|
flag "--bar="
|
||
|
end
|
||
|
def run; end
|
||
|
end
|
||
|
stub_const("Cat", cat)
|
||
|
end
|
||
|
|
||
|
describe "parsing args" do
|
||
|
it "parses valid args" do
|
||
|
expect { Cat.new(["--foo"]).run }.not_to raise_error
|
||
|
end
|
||
|
|
||
|
it "allows access to args" do
|
||
|
expect(Cat.new(["--bar", "baz"]).args[:bar]).to eq("baz")
|
||
|
end
|
||
|
|
||
|
it "raises on invalid args" do
|
||
|
expect { Cat.new(["--bat"]) }.to raise_error(OptionParser::InvalidOption)
|
||
|
end
|
||
|
end
|
||
|
|
||
|
describe "command names" do
|
||
|
it "has a default command name" do
|
||
|
expect(Cat.command_name).to eq("cat")
|
||
|
end
|
||
|
|
||
|
it "can lookup command" do
|
||
|
expect(described_class.command("cat")).to be(Cat)
|
||
|
end
|
||
|
|
||
|
describe "when command name is overridden" do
|
||
|
before do
|
||
|
tac = Class.new(described_class) do
|
||
|
def self.command_name = "t-a-c"
|
||
|
def run; end
|
||
|
end
|
||
|
stub_const("Tac", tac)
|
||
|
end
|
||
|
|
||
|
it "can be looked up by command name" do
|
||
|
expect(described_class.command("t-a-c")).to be(Tac)
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
end
|