brew/Library/Homebrew/test/cask/cmd/style_spec.rb
Alec Clarke 45806f6a97 Include test casks in the cask style check.
Currently the tests casks found in "/Homebrew/test/support/fixtures/cask/Casks" and "/Homebrew/test/support/fixtures/third-party/Casks" aren't included in the paths checked when running "brew cask style".

This change includes these test cask paths in the checked paths, and also includes the auto style fixes made by running `brew cask style --fix`.
2019-09-23 08:50:24 -04:00

158 lines
3.8 KiB
Ruby

# frozen_string_literal: true
require "open3"
require "rubygems"
require_relative "shared_examples/invalid_option"
describe Cask::Cmd::Style, :cask do
let(:args) { [] }
let(:cli) { described_class.new(*args) }
it_behaves_like "a command that handles invalid options"
describe "#run" do
subject { cli.run }
before do
allow(cli).to receive_messages(install_rubocop: nil,
system: nil,
rubocop_args: nil,
cask_paths: nil)
allow($CHILD_STATUS).to receive(:success?).and_return(success)
end
context "when rubocop succeeds" do
let(:success) { true }
it "does not raise an error" do
expect { subject }.not_to raise_error
end
end
context "when rubocop fails" do
let(:success) { false }
it "raises an error" do
expect { subject }.to raise_error(Cask::CaskError)
end
end
end
describe "#install_rubocop" do
subject { cli.install_rubocop }
context "when installation succeeds" do
before do
allow(Homebrew).to receive(:install_bundler_gems!)
end
it "exits successfully" do
expect { subject }.not_to raise_error
end
end
context "when installation fails" do
before do
allow(Homebrew).to receive(:install_bundler_gems!).and_raise(SystemExit)
end
it "raises an error" do
expect { subject }.to raise_error(Cask::CaskError)
end
end
end
describe "#cask_paths" do
subject { cli.cask_paths }
before do
allow(cli).to receive(:args).and_return(tokens)
end
context "when no cask tokens are given" do
let(:tokens) { [] }
matcher :a_path_ending_with do |end_string|
match do |actual|
expect(actual.to_s).to end_with(end_string)
end
end
it {
expect(subject).to contain_exactly(
a_path_ending_with("/homebrew/homebrew-cask/Casks"),
a_path_ending_with("/third-party/homebrew-tap/Casks"),
a_path_ending_with("/Homebrew/test/support/fixtures/cask/Casks"),
a_path_ending_with("/Homebrew/test/support/fixtures/third-party/Casks"),
)
}
end
context "when at least one cask token is a path that exists" do
let(:tokens) { ["adium", "Casks/dropbox.rb"] }
before do
allow(File).to receive(:exist?).and_return(false, true)
end
it "treats all tokens as paths" do
expect(subject).to eq [
Pathname("adium").expand_path,
Pathname("Casks/dropbox.rb").expand_path,
]
end
end
context "when no cask tokens are paths that exist" do
let(:tokens) { %w[adium dropbox] }
before do
allow(File).to receive(:exist?).and_return(false)
end
it "tries to find paths for all tokens" do
expect(Cask::CaskLoader).to receive(:load).twice.and_return(double("cask", sourcefile_path: nil))
subject
end
end
end
describe "#rubocop_args" do
subject { cli.rubocop_args }
before do
allow(cli).to receive(:fix?).and_return(fix)
end
context "when fix? is true" do
let(:fix) { true }
it { is_expected.to include("--auto-correct") }
end
context "when fix? is false" do
let(:fix) { false }
it { is_expected.not_to include("--auto-correct") }
end
end
describe "#default_args" do
subject { cli.default_args }
it { is_expected.to include("--format", "simple") }
end
describe "#autocorrect_args" do
subject { cli.autocorrect_args }
let(:default_args) { ["--format", "simple"] }
it "adds --auto-correct to default args" do
allow(cli).to receive(:default_args).and_return(default_args)
expect(subject).to include("--auto-correct", *default_args)
end
end
end