Add RSpec tests for bottle_block and formula_desc cops
This commit is contained in:
parent
d32978b859
commit
4e57f4279a
@ -1,3 +1,3 @@
|
|||||||
---
|
---
|
||||||
BUNDLE_PATH: "../vendor/bundle"
|
BUNDLE_PATH: "../vendor/bundle"
|
||||||
BUNDLE_DISABLE_SHARED_GEMS: '1'
|
BUNDLE_DISABLE_SHARED_GEMS: "true"
|
||||||
|
|||||||
@ -2,6 +2,7 @@ source "https://rubygems.org"
|
|||||||
|
|
||||||
gem "parallel_tests"
|
gem "parallel_tests"
|
||||||
gem "rspec"
|
gem "rspec"
|
||||||
|
gem "rubocop"
|
||||||
gem "rspec-its", require: false
|
gem "rspec-its", require: false
|
||||||
gem "rspec-wait", require: false
|
gem "rspec-wait", require: false
|
||||||
|
|
||||||
|
|||||||
@ -1,6 +1,7 @@
|
|||||||
GEM
|
GEM
|
||||||
remote: https://rubygems.org/
|
remote: https://rubygems.org/
|
||||||
specs:
|
specs:
|
||||||
|
ast (2.3.0)
|
||||||
codecov (0.1.9)
|
codecov (0.1.9)
|
||||||
json
|
json
|
||||||
simplecov
|
simplecov
|
||||||
@ -11,6 +12,10 @@ GEM
|
|||||||
parallel (1.10.0)
|
parallel (1.10.0)
|
||||||
parallel_tests (2.13.0)
|
parallel_tests (2.13.0)
|
||||||
parallel
|
parallel
|
||||||
|
parser (2.4.0.0)
|
||||||
|
ast (~> 2.2)
|
||||||
|
powerpack (0.1.1)
|
||||||
|
rainbow (2.2.1)
|
||||||
rspec (3.5.0)
|
rspec (3.5.0)
|
||||||
rspec-core (~> 3.5.0)
|
rspec-core (~> 3.5.0)
|
||||||
rspec-expectations (~> 3.5.0)
|
rspec-expectations (~> 3.5.0)
|
||||||
@ -29,11 +34,19 @@ GEM
|
|||||||
rspec-support (3.5.0)
|
rspec-support (3.5.0)
|
||||||
rspec-wait (0.0.9)
|
rspec-wait (0.0.9)
|
||||||
rspec (>= 3, < 4)
|
rspec (>= 3, < 4)
|
||||||
|
rubocop (0.47.1)
|
||||||
|
parser (>= 2.3.3.1, < 3.0)
|
||||||
|
powerpack (~> 0.1)
|
||||||
|
rainbow (>= 1.99.1, < 3.0)
|
||||||
|
ruby-progressbar (~> 1.7)
|
||||||
|
unicode-display_width (~> 1.0, >= 1.0.1)
|
||||||
|
ruby-progressbar (1.8.1)
|
||||||
simplecov (0.13.0)
|
simplecov (0.13.0)
|
||||||
docile (~> 1.1.0)
|
docile (~> 1.1.0)
|
||||||
json (>= 1.8, < 3)
|
json (>= 1.8, < 3)
|
||||||
simplecov-html (~> 0.10.0)
|
simplecov-html (~> 0.10.0)
|
||||||
simplecov-html (0.10.0)
|
simplecov-html (0.10.0)
|
||||||
|
unicode-display_width (1.1.3)
|
||||||
url (0.3.2)
|
url (0.3.2)
|
||||||
|
|
||||||
PLATFORMS
|
PLATFORMS
|
||||||
@ -45,6 +58,7 @@ DEPENDENCIES
|
|||||||
rspec
|
rspec
|
||||||
rspec-its
|
rspec-its
|
||||||
rspec-wait
|
rspec-wait
|
||||||
|
rubocop
|
||||||
simplecov
|
simplecov
|
||||||
|
|
||||||
BUNDLED WITH
|
BUNDLED WITH
|
||||||
|
|||||||
67
Library/Homebrew/test/rubocops/bottle_block_cop_spec.rb
Normal file
67
Library/Homebrew/test/rubocops/bottle_block_cop_spec.rb
Normal file
@ -0,0 +1,67 @@
|
|||||||
|
require "rubocop"
|
||||||
|
require "rubocop/rspec/support"
|
||||||
|
require_relative "../../extend/string"
|
||||||
|
require_relative "../../rubocops/bottle_block_cop"
|
||||||
|
|
||||||
|
describe RuboCop::Cop::Homebrew::CorrectBottleBlock do
|
||||||
|
subject(:cop) { described_class.new }
|
||||||
|
|
||||||
|
context "When auditing Bottle Block" do
|
||||||
|
it "When there is revision in bottle block" do
|
||||||
|
source = <<-EOS.undent
|
||||||
|
class Foo < Formula
|
||||||
|
url 'http://example.com/foo-1.0.tgz'
|
||||||
|
bottle do
|
||||||
|
cellar :any
|
||||||
|
revision 2
|
||||||
|
end
|
||||||
|
end
|
||||||
|
EOS
|
||||||
|
|
||||||
|
expected_offenses = [{ message: "Use rebuild instead of revision in bottle block",
|
||||||
|
severity: :convention,
|
||||||
|
line: 5,
|
||||||
|
column: 4,
|
||||||
|
source: source }]
|
||||||
|
|
||||||
|
inspect_source(cop, source)
|
||||||
|
|
||||||
|
expected_offenses.zip(cop.offenses).each do |expected, actual|
|
||||||
|
expect_offense(expected, actual)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def expect_offense(expected, actual)
|
||||||
|
expect(actual.message).to eq(expected[:message])
|
||||||
|
expect(actual.severity).to eq(expected[:severity])
|
||||||
|
expect(actual.line).to eq(expected[:line])
|
||||||
|
expect(actual.column).to eq(expected[:column])
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
context "When auditing Bottle Block with auto correct" do
|
||||||
|
it "When there is revision in bottle block" do
|
||||||
|
source = <<-EOS.undent
|
||||||
|
class Foo < Formula
|
||||||
|
url 'http://example.com/foo-1.0.tgz'
|
||||||
|
bottle do
|
||||||
|
cellar :any
|
||||||
|
revision 2
|
||||||
|
end
|
||||||
|
end
|
||||||
|
EOS
|
||||||
|
corrected_source = <<-EOS.undent
|
||||||
|
class Foo < Formula
|
||||||
|
url 'http://example.com/foo-1.0.tgz'
|
||||||
|
bottle do
|
||||||
|
cellar :any
|
||||||
|
rebuild 2
|
||||||
|
end
|
||||||
|
end
|
||||||
|
EOS
|
||||||
|
|
||||||
|
new_source = autocorrect_source(cop, source)
|
||||||
|
expect(new_source).to eq(corrected_source)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
121
Library/Homebrew/test/rubocops/formula_desc_cop_spec.rb
Normal file
121
Library/Homebrew/test/rubocops/formula_desc_cop_spec.rb
Normal file
@ -0,0 +1,121 @@
|
|||||||
|
require "rubocop"
|
||||||
|
require "rubocop/rspec/support"
|
||||||
|
require_relative "../../extend/string"
|
||||||
|
require_relative "../../rubocops/formula_desc_cop"
|
||||||
|
|
||||||
|
describe RuboCop::Cop::Homebrew::FormulaDesc do
|
||||||
|
subject(:cop) { described_class.new }
|
||||||
|
|
||||||
|
context "When auditing formula desc" do
|
||||||
|
it "When there is no desc" do
|
||||||
|
source = <<-EOS.undent
|
||||||
|
class Foo < Formula
|
||||||
|
url 'http://example.com/foo-1.0.tgz'
|
||||||
|
end
|
||||||
|
EOS
|
||||||
|
|
||||||
|
expected_offenses = [{ message: "Formula should have a desc (Description).",
|
||||||
|
severity: :convention,
|
||||||
|
line: 1,
|
||||||
|
column: 0,
|
||||||
|
source: source }]
|
||||||
|
|
||||||
|
inspect_source(cop, source)
|
||||||
|
|
||||||
|
expected_offenses.zip(cop.offenses).each do |expected, actual|
|
||||||
|
expect_offense(expected, actual)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
it "When desc is too long" do
|
||||||
|
source = <<-EOS.undent
|
||||||
|
class Foo < Formula
|
||||||
|
url 'http://example.com/foo-1.0.tgz'
|
||||||
|
desc '#{"bar"*30}'
|
||||||
|
end
|
||||||
|
EOS
|
||||||
|
|
||||||
|
msg = <<-EOS.undent
|
||||||
|
Description is too long. "name: desc" should be less than 80 characters.
|
||||||
|
Length is calculated as Foo + desc. (currently 95)
|
||||||
|
EOS
|
||||||
|
expected_offenses = [{ message: msg,
|
||||||
|
severity: :convention,
|
||||||
|
line: 3,
|
||||||
|
column: 7,
|
||||||
|
source: source }]
|
||||||
|
|
||||||
|
inspect_source(cop, source)
|
||||||
|
expected_offenses.zip(cop.offenses).each do |expected, actual|
|
||||||
|
expect_offense(expected, actual)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
it "When wrong \"command-line\" usage in desc" do
|
||||||
|
source = <<-EOS.undent
|
||||||
|
class Foo < Formula
|
||||||
|
url 'http://example.com/foo-1.0.tgz'
|
||||||
|
desc 'command line'
|
||||||
|
end
|
||||||
|
EOS
|
||||||
|
|
||||||
|
expected_offenses = [{ message: "Description should use \"command-line\" instead of \"command line\"",
|
||||||
|
severity: :convention,
|
||||||
|
line: 3,
|
||||||
|
column: 8,
|
||||||
|
source: source }]
|
||||||
|
|
||||||
|
inspect_source(cop, source)
|
||||||
|
expected_offenses.zip(cop.offenses).each do |expected, actual|
|
||||||
|
expect_offense(expected, actual)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
it "When an article is used in desc" do
|
||||||
|
source = <<-EOS.undent
|
||||||
|
class Foo < Formula
|
||||||
|
url 'http://example.com/foo-1.0.tgz'
|
||||||
|
desc 'An '
|
||||||
|
end
|
||||||
|
EOS
|
||||||
|
|
||||||
|
expected_offenses = [{ message: "Description shouldn't start with an indefinite article (An )",
|
||||||
|
severity: :convention,
|
||||||
|
line: 3,
|
||||||
|
column: 8,
|
||||||
|
source: source }]
|
||||||
|
|
||||||
|
inspect_source(cop, source)
|
||||||
|
expected_offenses.zip(cop.offenses).each do |expected, actual|
|
||||||
|
expect_offense(expected, actual)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
it "When formula name is in desc" do
|
||||||
|
source = <<-EOS.undent
|
||||||
|
class Foo < Formula
|
||||||
|
url 'http://example.com/foo-1.0.tgz'
|
||||||
|
desc 'Foo'
|
||||||
|
end
|
||||||
|
EOS
|
||||||
|
|
||||||
|
expected_offenses = [{ message: "Description shouldn't include the formula name",
|
||||||
|
severity: :convention,
|
||||||
|
line: 3,
|
||||||
|
column: 8,
|
||||||
|
source: source }]
|
||||||
|
|
||||||
|
inspect_source(cop, source)
|
||||||
|
expected_offenses.zip(cop.offenses).each do |expected, actual|
|
||||||
|
expect_offense(expected, actual)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def expect_offense(expected, actual)
|
||||||
|
expect(actual.message).to eq(expected[:message])
|
||||||
|
expect(actual.severity).to eq(expected[:severity])
|
||||||
|
expect(actual.line).to eq(expected[:line])
|
||||||
|
expect(actual.column).to eq(expected[:column])
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
Loading…
x
Reference in New Issue
Block a user