Skip to content
Snippets Groups Projects
Commit 98f91fb8 authored by Markus Reiter's avatar Markus Reiter
Browse files

Refactor `CLI::Style`.

parent 957c5fb4
No related branches found
No related tags found
No related merge requests found
......@@ -8,19 +8,24 @@ module Hbc
end
def self.run(*args)
retval = new(args).run
raise CaskError, "style check failed" unless retval
new(*args).run
end
attr_reader :args
def initialize(args)
@args = args
def initialize(*args)
@cask_tokens = self.class.cask_tokens_from(args)
@fix = args.any? { |arg| arg =~ /^--(fix|(auto-?)?correct)$/ }
end
def fix?
@fix
end
def run
install_rubocop
system "rubocop", *rubocop_args, "--", *cask_paths
$CHILD_STATUS.success?
raise CaskError, "style check failed" unless $CHILD_STATUS.success?
true
end
def install_rubocop
......@@ -34,19 +39,15 @@ module Hbc
end
def cask_paths
@cask_paths ||= if cask_tokens.empty?
@cask_paths ||= if @cask_tokens.empty?
Hbc.all_tapped_cask_dirs
elsif cask_tokens.any? { |file| File.exist?(file) }
cask_tokens
elsif @cask_tokens.any? { |file| File.exist?(file) }
@cask_tokens
else
cask_tokens.map { |token| CaskLoader.path(token) }
@cask_tokens.map { |token| CaskLoader.path(token) }
end
end
def cask_tokens
@cask_tokens ||= self.class.cask_tokens_from(args)
end
def rubocop_args
fix? ? autocorrect_args : default_args
end
......@@ -63,10 +64,6 @@ module Hbc
def autocorrect_args
default_args + ["--auto-correct"]
end
def fix?
args.any? { |arg| arg =~ /--(fix|(auto-?)?correct)/ }
end
end
end
end
......@@ -4,37 +4,12 @@ require "rubygems"
describe Hbc::CLI::Style, :cask do
let(:args) { [] }
let(:cli) { described_class.new(args) }
let(:cli) { described_class.new(*args) }
around do |example|
shutup { example.run }
end
describe ".run" do
subject { described_class.run(args) }
before do
allow(described_class).to receive(:new).and_return(cli)
allow(cli).to receive(:run).and_return(retval)
end
context "when rubocop succeeds" do
let(:retval) { true }
it "exits successfully" do
subject
end
end
context "when rubocop fails" do
let(:retval) { false }
it "raises an exception" do
expect { subject }.to raise_error(Hbc::CaskError)
end
end
end
describe "#run" do
subject { cli.run }
......@@ -53,7 +28,10 @@ describe Hbc::CLI::Style, :cask do
context "when rubocop fails" do
let(:success) { false }
it { is_expected.to be_falsey }
it "raises an error" do
expect { subject }.to raise_error(Hbc::CaskError)
end
end
end
......@@ -99,7 +77,7 @@ describe Hbc::CLI::Style, :cask do
subject { cli.cask_paths }
before do
allow(cli).to receive(:cask_tokens).and_return(tokens)
allow(described_class).to receive(:cask_tokens_from).and_return(tokens)
end
context "when no cask tokens are given" do
......@@ -136,40 +114,6 @@ describe Hbc::CLI::Style, :cask do
end
end
describe "#cask_tokens" do
subject { cli.cask_tokens }
context "when no args are given" do
let(:args) { [] }
it { is_expected.to be_empty }
end
context "when only flags are given" do
let(:args) { ["--fix"] }
it { is_expected.to be_empty }
end
context "when only empty args are given" do
let(:args) { ["", ""] }
it { is_expected.to be_empty }
end
context "when a cask token is given" do
let(:args) { ["adium"] }
it { is_expected.to eq(["adium"]) }
end
context "when multiple cask tokens are given" do
let(:args) { %w[adium dropbox] }
it { is_expected.to eq(%w[adium dropbox]) }
end
context "when cask tokens are given with flags" do
let(:args) { ["adium", "dropbox", "--fix"] }
it { is_expected.to eq(%w[adium dropbox]) }
end
end
describe "#rubocop_args" do
subject { cli.rubocop_args }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment