aboutsummaryrefslogtreecommitdiffstats
path: root/Library
diff options
context:
space:
mode:
Diffstat (limited to 'Library')
-rw-r--r--Library/Homebrew/cmd/style.rb2
-rw-r--r--Library/Homebrew/test/cmd/style_spec.rb34
2 files changed, 35 insertions, 1 deletions
diff --git a/Library/Homebrew/cmd/style.rb b/Library/Homebrew/cmd/style.rb
index e469c47bb..7da71749c 100644
--- a/Library/Homebrew/cmd/style.rb
+++ b/Library/Homebrew/cmd/style.rb
@@ -120,7 +120,7 @@ module Homebrew
# exitstatus can also be nil if RuboCop process crashes, e.g. due to
# native extension problems.
# JSON needs to be at least 2 characters.
- if !status.success? || json.to_s.length < 2
+ if !(0..1).cover?(status.exitstatus) || json.to_s.length < 2
raise "Error running `rubocop --format json #{args.join " "}`"
end
RubocopResults.new(JSON.parse(json))
diff --git a/Library/Homebrew/test/cmd/style_spec.rb b/Library/Homebrew/test/cmd/style_spec.rb
new file mode 100644
index 000000000..3c4c3f809
--- /dev/null
+++ b/Library/Homebrew/test/cmd/style_spec.rb
@@ -0,0 +1,34 @@
+require "cmd/style"
+
+describe "brew style" do
+ around(:each) do |example|
+ begin
+ FileUtils.ln_s HOMEBREW_LIBRARY_PATH, HOMEBREW_LIBRARY/"Homebrew"
+ FileUtils.ln_s HOMEBREW_LIBRARY_PATH.parent/".rubocop.yml", HOMEBREW_LIBRARY/".rubocop.yml"
+
+ example.run
+ ensure
+ FileUtils.rm_f HOMEBREW_LIBRARY/"Homebrew"
+ FileUtils.rm_f HOMEBREW_LIBRARY/".rubocop.yml"
+ end
+ end
+
+ describe "Homebrew::check_style_json" do
+ let(:dir) { mktmpdir }
+
+ it "returns RubocopResults when RuboCop reports offenses" do
+ formula = dir/"my-formula.rb"
+
+ formula.write <<-'EOS'.undent
+ class MyFormula < Formula
+
+ end
+ EOS
+
+ rubocop_result = Homebrew.check_style_json([formula])
+
+ expect(rubocop_result.file_offenses(formula.realpath.to_s).map(&:message))
+ .to include("Extra empty line detected at class body beginning.")
+ end
+ end
+end