aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarkus Reiter2017-05-20 03:46:52 +0200
committerMarkus Reiter2017-05-22 02:51:16 +0200
commit98f91fb88331ee1bc5f190fec827048a38bf8498 (patch)
tree60848483072e1800c835991e55f81a7af1b0a45d
parent957c5fb4f0f690ed82b8a6a38ec106f4784a9ed9 (diff)
downloadbrew-98f91fb88331ee1bc5f190fec827048a38bf8498.tar.bz2
Refactor `CLI::Style`.
-rw-r--r--Library/Homebrew/cask/lib/hbc/cli/style.rb31
-rw-r--r--Library/Homebrew/test/cask/cli/style_spec.rb68
2 files changed, 20 insertions, 79 deletions
diff --git a/Library/Homebrew/cask/lib/hbc/cli/style.rb b/Library/Homebrew/cask/lib/hbc/cli/style.rb
index 191aefd3c..a76c893fc 100644
--- a/Library/Homebrew/cask/lib/hbc/cli/style.rb
+++ b/Library/Homebrew/cask/lib/hbc/cli/style.rb
@@ -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
diff --git a/Library/Homebrew/test/cask/cli/style_spec.rb b/Library/Homebrew/test/cask/cli/style_spec.rb
index d41636beb..1302c8352 100644
--- a/Library/Homebrew/test/cask/cli/style_spec.rb
+++ b/Library/Homebrew/test/cask/cli/style_spec.rb
@@ -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 }