Skip to content
Snippets Groups Projects
Unverified Commit f260b6e7 authored by Markus Reiter's avatar Markus Reiter Committed by GitHub
Browse files

Merge pull request #8328 from reitermarkus/desc-cop

Improve detection of descriptions starting with cask/formula name.
parents f8c3a1bd 3038ff87
No related branches found
No related tags found
No related merge requests found
......@@ -61,7 +61,8 @@ module RuboCop
end
# Check if the desc starts with the formula's or cask's name.
problem "Description shouldn't start with the #{type} name." if regex_match_group(desc, /^#{name} /i)
name_regex = name.delete("-").split("").join('[\s\-]?')
problem "Description shouldn't start with the #{type} name." if regex_match_group(desc, /^#{name_regex}\b/i)
# Check if a full stop is used at the end of a desc (apart from in the case of "etc.").
if regex_match_group(desc, /\.$/) && !string_content(desc).end_with?("etc.")
......
......@@ -4,49 +4,63 @@ require "rubocops/rubocop-cask"
require "test/rubocops/cask/shared_examples/cask_cop"
describe RuboCop::Cop::Cask::Desc do
include CaskCop
subject(:cop) { described_class.new }
context "with incorrect `desc` stanza" do
let(:source) {
<<~RUBY
cask "foo" do
desc "A bar program"
end
RUBY
}
let(:correct_source) {
<<~RUBY
cask "foo" do
desc "Bar program"
end
RUBY
}
let(:expected_offenses) do
[{
message: "Description shouldn't start with an indefinite article, i.e. \"A\".",
severity: :convention,
line: 2,
column: 8,
source: "A",
}]
end
include_examples "reports offenses"
include_examples "autocorrects source"
it "does not start with an indefinite article" do
expect_no_offenses <<~RUBY
cask "foo" do
desc "Bar program"
end
RUBY
expect_offense <<~RUBY, "/homebrew-cask/Casks/foo.rb"
cask 'foo' do
desc 'A bar program'
^ Description shouldn\'t start with an indefinite article, i.e. \"A\".
end
RUBY
expect_correction <<~RUBY
cask 'foo' do
desc 'Bar program'
end
RUBY
end
context "with correct `desc` stanza" do
let(:source) {
<<~RUBY
cask "foo" do
desc "Bar program"
end
RUBY
}
it "does not start with the cask name" do
expect_offense <<~RUBY, "/homebrew-cask/Casks/foo.rb"
cask 'foobar' do
desc 'Foo bar program'
^^^^^^^ Description shouldn't start with the cask name.
end
RUBY
expect_offense <<~RUBY, "/homebrew-cask/Casks/foo.rb"
cask 'foobar' do
desc 'Foo-Bar program'
^^^^^^^ Description shouldn\'t start with the cask name.
end
RUBY
expect_offense <<~RUBY, "/homebrew-cask/Casks/foo.rb"
cask 'foo-bar' do
desc 'Foo bar program'
^^^^^^^ Description shouldn\'t start with the cask name.
end
RUBY
expect_offense <<~RUBY, "/homebrew-cask/Casks/foo.rb"
cask 'foo-bar' do
desc 'Foo-Bar program'
^^^^^^^ Description shouldn\'t start with the cask name.
end
RUBY
include_examples "does not report any offenses"
expect_offense <<~RUBY, "/homebrew-cask/Casks/foo.rb"
cask 'foo-bar' do
desc 'Foo Bar'
^^^^^^^ Description shouldn\'t start with the cask name.
end
RUBY
end
end
......@@ -104,7 +104,7 @@ describe RuboCop::Cop::FormulaAudit::Desc do
class Foo < Formula
url 'https://brew.sh/foo-1.0.tgz'
desc 'Foo is a foobar'
^^^^ Description shouldn\'t start with the formula name.
^^^ Description shouldn\'t start with the formula name.
end
RUBY
end
......
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