brew/Library/Homebrew/test/rubocops/formula_desc_spec.rb
Claudia 5be80a78f6
Use Homebrew-controlled domain for Cask dummy URLs
In a number of Cask specs, the value of the `homepage` stanza is currently set
to https://example.com. As of 2018-11-28, the TLS certificate served by
example.com seems to be expired, possibly due to an oversight on ICANN’s side.

While the certificate is certainly going to be renewed soon, it would be
desirable for Homebrew’s test result to be less dependent on ICANN’s actions.
This commit changes the homepages of all test Casks to http://brew.sh, whose
domain and TLS certificate are both controlled by Homebrew.
2018-11-28 20:51:55 +01:00

144 lines
4.7 KiB
Ruby

require "rubocops/formula_desc"
describe RuboCop::Cop::FormulaAudit::DescLength do
subject(:cop) { described_class.new }
context "When auditing formula desc" do
it "When there is no desc" do
expect_offense(<<~RUBY)
class Foo < Formula
^^^^^^^^^^^^^^^^^^^ Formula should have a desc (Description).
url 'https://brew.sh/foo-1.0.tgz'
end
RUBY
end
it "reports an offense when desc is an empty string" do
expect_offense(<<~RUBY, "/homebrew-core/Formula/foo.rb")
class Foo < Formula
url 'https://brew.sh/foo-1.0.tgz'
desc ''
^^^^^^^ The desc (description) should not be an empty string.
end
RUBY
end
it "When desc is too long" do
expect_offense(<<~RUBY, "/homebrew-core/Formula/foo.rb")
class Foo < Formula
url 'https://brew.sh/foo-1.0.tgz'
desc 'Bar#{"bar" * 29}'
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Description is too long. "name: desc" should be less than 80 characters. Length is calculated as foo + desc. (currently 95)
end
RUBY
end
it "When desc is multiline string" do
expect_offense(<<~RUBY, "/homebrew-core/Formula/foo.rb")
class Foo < Formula
url 'https://brew.sh/foo-1.0.tgz'
desc 'Bar#{"bar" * 9}'\
'#{"foo" * 21}'
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Description is too long. "name: desc" should be less than 80 characters. Length is calculated as foo + desc. (currently 98)
end
RUBY
end
end
end
describe RuboCop::Cop::FormulaAuditStrict::Desc do
subject(:cop) { described_class.new }
context "When auditing formula desc" do
it "When wrong \"command-line\" usage in desc" do
expect_offense(<<~RUBY, "/homebrew-core/Formula/foo.rb")
class Foo < Formula
url 'https://brew.sh/foo-1.0.tgz'
desc 'command line'
^ Description should start with a capital letter
^^^^^^^^^^^^ Description should use \"command-line\" instead of \"command line\"
end
RUBY
end
it "When an article is used in desc" do
expect_offense(<<~RUBY, "/homebrew-core/Formula/foo.rb")
class Foo < Formula
url 'https://brew.sh/foo-1.0.tgz'
desc 'An aardvark'
^^^ Description shouldn\'t start with an indefinite article i.e. \"An\"
end
RUBY
end
it "When an lowercase letter starts a desc" do
expect_offense(<<~RUBY, "/homebrew-core/Formula/foo.rb")
class Foo < Formula
url 'https://brew.sh/foo-1.0.tgz'
desc 'bar'
^ Description should start with a capital letter
end
RUBY
end
it "When formula name is in desc" do
expect_offense(<<~RUBY, "/homebrew-core/Formula/foo.rb")
class Foo < Formula
url 'https://brew.sh/foo-1.0.tgz'
desc 'Foo is a foobar'
^^^^ Description shouldn\'t start with the formula name
end
RUBY
end
it "When the description ends with a full stop" do
expect_offense(<<~RUBY, "/homebrew-core/Formula/foo.rb")
class Foo < Formula
url 'https://brew.sh/foo-1.0.tgz'
desc 'Description with a full stop at the end.'
^ Description shouldn\'t end with a full stop
end
RUBY
end
it "When the description starts with a leading space" do
expect_offense(<<~RUBY, "/homebrew-core/Formula/foo.rb")
class Foo < Formula
url 'https://brew.sh/foo-1.0.tgz'
desc ' Description with a leading space'
^ Description shouldn\'t have a leading space
end
RUBY
end
it "When the description ends with a trailing space" do
expect_offense(<<~RUBY, "/homebrew-core/Formula/foo.rb")
class Foo < Formula
url 'https://brew.sh/foo-1.0.tgz'
desc 'Description with a trailing space '
^ Description shouldn\'t have a trailing space
end
RUBY
end
it "autocorrects all rules" do
source = <<~RUBY
class Foo < Formula
url 'https://brew.sh/foo-1.0.tgz'
desc ' an bar: commandline foo '
end
RUBY
correct_source = <<~RUBY
class Foo < Formula
url 'https://brew.sh/foo-1.0.tgz'
desc 'an bar: command-line'
end
RUBY
corrected_source = autocorrect_source(source, "/homebrew-core/Formula/foo.rb")
expect(corrected_source).to eq(correct_source)
end
end
end