| 
									
										
										
										
											2020-10-10 14:16:11 +02:00
										 |  |  | # typed: false | 
					
						
							| 
									
										
										
										
											2019-04-19 15:38:03 +09:00
										 |  |  | # frozen_string_literal: true | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-10-26 19:41:14 +01:00
										 |  |  | require "rubocops/formula_desc" | 
					
						
							| 
									
										
										
										
											2017-03-08 13:51:35 +05:30
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-04-13 14:35:03 +01:00
										 |  |  | describe RuboCop::Cop::FormulaAudit::Desc do | 
					
						
							| 
									
										
										
										
											2017-03-08 13:51:35 +05:30
										 |  |  |   subject(:cop) { described_class.new } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-02-19 23:15:33 +00:00
										 |  |  |   context "when auditing formula `desc` methods" do | 
					
						
							| 
									
										
										
										
											2021-01-12 18:12:56 +11:00
										 |  |  |     it "reports an offense when there is no `desc`" do | 
					
						
							| 
									
										
										
										
											2017-10-21 03:12:50 +02:00
										 |  |  |       expect_offense(<<~RUBY) | 
					
						
							| 
									
										
										
										
											2017-03-08 13:51:35 +05:30
										 |  |  |         class Foo < Formula | 
					
						
							| 
									
										
										
										
											2017-10-21 03:12:50 +02:00
										 |  |  |         ^^^^^^^^^^^^^^^^^^^ Formula should have a desc (Description). | 
					
						
							| 
									
										
										
										
											2018-11-28 20:51:55 +01:00
										 |  |  |           url 'https://brew.sh/foo-1.0.tgz' | 
					
						
							| 
									
										
										
										
											2017-03-08 13:51:35 +05:30
										 |  |  |         end | 
					
						
							| 
									
										
										
										
											2017-10-21 03:12:50 +02:00
										 |  |  |       RUBY | 
					
						
							| 
									
										
										
										
											2017-03-08 13:51:35 +05:30
										 |  |  |     end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-01-12 18:12:56 +11:00
										 |  |  |     it "reports an offense when `desc` is an empty string" do | 
					
						
							| 
									
										
										
										
											2017-10-21 03:12:50 +02:00
										 |  |  |       expect_offense(<<~RUBY, "/homebrew-core/Formula/foo.rb") | 
					
						
							| 
									
										
										
										
											2017-10-10 15:43:07 +01:00
										 |  |  |         class Foo < Formula | 
					
						
							| 
									
										
										
										
											2018-11-28 20:51:55 +01:00
										 |  |  |           url 'https://brew.sh/foo-1.0.tgz' | 
					
						
							| 
									
										
										
										
											2017-10-10 15:43:07 +01:00
										 |  |  |           desc '' | 
					
						
							| 
									
										
										
										
											2017-10-21 03:12:50 +02:00
										 |  |  |           ^^^^^^^ The desc (description) should not be an empty string. | 
					
						
							| 
									
										
										
										
											2017-10-10 15:43:07 +01:00
										 |  |  |         end | 
					
						
							| 
									
										
										
										
											2017-10-21 03:12:50 +02:00
										 |  |  |       RUBY | 
					
						
							| 
									
										
										
										
											2017-10-10 15:43:07 +01:00
										 |  |  |     end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-01-12 18:12:56 +11:00
										 |  |  |     it "reports an offense when `desc` is too long" do | 
					
						
							| 
									
										
										
										
											2017-10-21 03:12:50 +02:00
										 |  |  |       expect_offense(<<~RUBY, "/homebrew-core/Formula/foo.rb") | 
					
						
							| 
									
										
										
										
											2017-03-08 13:51:35 +05:30
										 |  |  |         class Foo < Formula | 
					
						
							| 
									
										
										
										
											2018-11-28 20:51:55 +01:00
										 |  |  |           url 'https://brew.sh/foo-1.0.tgz' | 
					
						
							| 
									
										
										
										
											2017-06-08 15:13:06 +03:00
										 |  |  |           desc 'Bar#{"bar" * 29}' | 
					
						
							| 
									
										
										
										
											2020-08-15 00:16:37 +02:00
										 |  |  |           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Description is too long. It should be less than 80 characters. The current length is 90. | 
					
						
							| 
									
										
										
										
											2017-03-08 13:51:35 +05:30
										 |  |  |         end | 
					
						
							| 
									
										
										
										
											2017-10-21 03:12:50 +02:00
										 |  |  |       RUBY | 
					
						
							| 
									
										
										
										
											2017-03-08 13:51:35 +05:30
										 |  |  |     end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-01-12 18:12:56 +11:00
										 |  |  |     it "reports an offense when `desc` is a multiline string" do | 
					
						
							| 
									
										
										
										
											2017-10-21 03:12:50 +02:00
										 |  |  |       expect_offense(<<~RUBY, "/homebrew-core/Formula/foo.rb") | 
					
						
							| 
									
										
										
										
											2017-05-13 18:44:37 +05:30
										 |  |  |         class Foo < Formula | 
					
						
							| 
									
										
										
										
											2018-11-28 20:51:55 +01:00
										 |  |  |           url 'https://brew.sh/foo-1.0.tgz' | 
					
						
							| 
									
										
										
										
											2017-06-08 15:13:06 +03:00
										 |  |  |           desc 'Bar#{"bar" * 9}'\ | 
					
						
							| 
									
										
										
										
											2017-06-01 16:06:51 +02:00
										 |  |  |             '#{"foo" * 21}' | 
					
						
							| 
									
										
										
										
											2020-08-15 00:16:37 +02:00
										 |  |  |           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Description is too long. It should be less than 80 characters. The current length is 93. | 
					
						
							| 
									
										
										
										
											2017-05-13 18:44:37 +05:30
										 |  |  |         end | 
					
						
							| 
									
										
										
										
											2017-10-21 03:12:50 +02:00
										 |  |  |       RUBY | 
					
						
							| 
									
										
										
										
											2017-05-13 18:44:37 +05:30
										 |  |  |     end | 
					
						
							| 
									
										
										
										
											2017-06-08 15:13:06 +03:00
										 |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-02-19 23:15:33 +00:00
										 |  |  |   context "when auditing formula description texts" do | 
					
						
							| 
									
										
										
										
											2021-01-12 18:12:56 +11:00
										 |  |  |     it "reports an offense when the description starts with a leading space" do | 
					
						
							| 
									
										
										
										
											2017-10-21 03:12:50 +02:00
										 |  |  |       expect_offense(<<~RUBY, "/homebrew-core/Formula/foo.rb") | 
					
						
							| 
									
										
										
										
											2017-03-08 13:51:35 +05:30
										 |  |  |         class Foo < Formula | 
					
						
							| 
									
										
										
										
											2018-11-28 20:51:55 +01:00
										 |  |  |           url 'https://brew.sh/foo-1.0.tgz' | 
					
						
							| 
									
										
										
										
											2020-07-30 16:29:12 +01:00
										 |  |  |           desc ' Description with a leading space' | 
					
						
							| 
									
										
										
										
											2021-01-12 18:12:56 +11:00
										 |  |  |                 ^ Description shouldn't have leading spaces. | 
					
						
							| 
									
										
										
										
											2017-03-08 13:51:35 +05:30
										 |  |  |         end | 
					
						
							| 
									
										
										
										
											2017-10-21 03:12:50 +02:00
										 |  |  |       RUBY | 
					
						
							| 
									
										
										
										
											2017-03-08 13:51:35 +05:30
										 |  |  |     end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-01-12 18:12:56 +11:00
										 |  |  |     it "reports an offense when the description ends with a trailing space" do | 
					
						
							| 
									
										
										
										
											2017-10-21 03:12:50 +02:00
										 |  |  |       expect_offense(<<~RUBY, "/homebrew-core/Formula/foo.rb") | 
					
						
							| 
									
										
										
										
											2017-03-08 13:51:35 +05:30
										 |  |  |         class Foo < Formula | 
					
						
							| 
									
										
										
										
											2018-11-28 20:51:55 +01:00
										 |  |  |           url 'https://brew.sh/foo-1.0.tgz' | 
					
						
							| 
									
										
										
										
											2020-07-30 16:29:12 +01:00
										 |  |  |           desc 'Description with a trailing space ' | 
					
						
							| 
									
										
										
										
											2021-01-12 18:12:56 +11:00
										 |  |  |                                                  ^ Description shouldn't have trailing spaces. | 
					
						
							| 
									
										
										
										
											2017-03-08 13:51:35 +05:30
										 |  |  |         end | 
					
						
							| 
									
										
										
										
											2017-10-21 03:12:50 +02:00
										 |  |  |       RUBY | 
					
						
							| 
									
										
										
										
											2017-06-08 15:13:06 +03:00
										 |  |  |     end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-01-12 18:12:56 +11:00
										 |  |  |     it "reports an offense when \"command-line\" is incorrectly spelled in the description" do | 
					
						
							| 
									
										
										
										
											2017-10-21 03:12:50 +02:00
										 |  |  |       expect_offense(<<~RUBY, "/homebrew-core/Formula/foo.rb") | 
					
						
							| 
									
										
										
										
											2017-06-08 15:13:06 +03:00
										 |  |  |         class Foo < Formula | 
					
						
							| 
									
										
										
										
											2018-11-28 20:51:55 +01:00
										 |  |  |           url 'https://brew.sh/foo-1.0.tgz' | 
					
						
							| 
									
										
										
										
											2020-07-30 16:29:12 +01:00
										 |  |  |           desc 'command line' | 
					
						
							|  |  |  |                 ^ Description should start with a capital letter. | 
					
						
							| 
									
										
										
										
											2021-01-12 18:12:56 +11:00
										 |  |  |                 ^^^^^^^^^^^^ Description should use "command-line" instead of "command line". | 
					
						
							| 
									
										
										
										
											2017-06-08 15:13:06 +03:00
										 |  |  |         end | 
					
						
							| 
									
										
										
										
											2017-10-21 03:12:50 +02:00
										 |  |  |       RUBY | 
					
						
							| 
									
										
										
										
											2017-03-08 13:51:35 +05:30
										 |  |  |     end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-01-12 18:12:56 +11:00
										 |  |  |     it "reports an offense when an article is used in the description" do | 
					
						
							| 
									
										
										
										
											2017-10-21 03:12:50 +02:00
										 |  |  |       expect_offense(<<~RUBY, "/homebrew-core/Formula/foo.rb") | 
					
						
							| 
									
										
										
										
											2017-03-08 13:51:35 +05:30
										 |  |  |         class Foo < Formula | 
					
						
							| 
									
										
										
										
											2018-11-28 20:51:55 +01:00
										 |  |  |           url 'https://brew.sh/foo-1.0.tgz' | 
					
						
							| 
									
										
										
										
											2020-07-30 16:29:12 +01:00
										 |  |  |           desc 'An aardvark' | 
					
						
							| 
									
										
										
										
											2020-09-17 20:44:09 +02:00
										 |  |  |                 ^^ Description shouldn\'t start with an article. | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  |       RUBY | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       expect_offense(<<~RUBY, "/homebrew-core/Formula/foo.rb") | 
					
						
							|  |  |  |         class Foo < Formula | 
					
						
							|  |  |  |           url 'https://brew.sh/foo-1.0.tgz' | 
					
						
							|  |  |  |           desc 'The aardvark' | 
					
						
							|  |  |  |                 ^^^ Description shouldn\'t start with an article. | 
					
						
							| 
									
										
										
										
											2017-03-08 13:51:35 +05:30
										 |  |  |         end | 
					
						
							| 
									
										
										
										
											2017-10-21 03:12:50 +02:00
										 |  |  |       RUBY | 
					
						
							| 
									
										
										
										
											2017-03-08 13:51:35 +05:30
										 |  |  |     end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-01-12 18:12:56 +11:00
										 |  |  |     it "reports an offense when the description starts with a lowercase letter" do | 
					
						
							| 
									
										
										
										
											2017-06-17 07:12:46 +01:00
										 |  |  |       expect_offense(<<~RUBY, "/homebrew-core/Formula/foo.rb") | 
					
						
							|  |  |  |         class Foo < Formula | 
					
						
							| 
									
										
										
										
											2018-11-28 20:51:55 +01:00
										 |  |  |           url 'https://brew.sh/foo-1.0.tgz' | 
					
						
							| 
									
										
										
										
											2020-07-30 16:29:12 +01:00
										 |  |  |           desc 'bar' | 
					
						
							|  |  |  |                 ^ Description should start with a capital letter. | 
					
						
							| 
									
										
										
										
											2017-06-17 07:12:46 +01:00
										 |  |  |         end | 
					
						
							|  |  |  |       RUBY | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-01-12 18:12:56 +11:00
										 |  |  |     it "reports an offense when the description starts with the formula name" do | 
					
						
							| 
									
										
										
										
											2018-08-06 19:19:48 +01:00
										 |  |  |       expect_offense(<<~RUBY, "/homebrew-core/Formula/foo.rb") | 
					
						
							|  |  |  |         class Foo < Formula | 
					
						
							| 
									
										
										
										
											2018-11-28 20:51:55 +01:00
										 |  |  |           url 'https://brew.sh/foo-1.0.tgz' | 
					
						
							| 
									
										
										
										
											2020-07-30 16:29:12 +01:00
										 |  |  |           desc 'Foo is a foobar' | 
					
						
							| 
									
										
										
										
											2020-08-13 07:39:54 +02:00
										 |  |  |                 ^^^ Description shouldn\'t start with the formula name. | 
					
						
							| 
									
										
										
										
											2018-08-06 19:19:48 +01:00
										 |  |  |         end | 
					
						
							|  |  |  |       RUBY | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-01-12 18:12:56 +11:00
										 |  |  |     it "reports an offense when the description ends with a full stop" do | 
					
						
							| 
									
										
										
										
											2018-08-06 19:19:48 +01:00
										 |  |  |       expect_offense(<<~RUBY, "/homebrew-core/Formula/foo.rb") | 
					
						
							|  |  |  |         class Foo < Formula | 
					
						
							| 
									
										
										
										
											2018-11-28 20:51:55 +01:00
										 |  |  |           url 'https://brew.sh/foo-1.0.tgz' | 
					
						
							| 
									
										
										
										
											2020-07-30 16:29:12 +01:00
										 |  |  |           desc 'Description with a full stop at the end.' | 
					
						
							|  |  |  |                                                        ^ Description shouldn\'t end with a full stop. | 
					
						
							| 
									
										
										
										
											2018-08-06 19:19:48 +01:00
										 |  |  |         end | 
					
						
							|  |  |  |       RUBY | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-01-12 18:12:56 +11:00
										 |  |  |     it "reports and corrects all rules for description text" do | 
					
						
							|  |  |  |       expect_offense(<<~RUBY, "/homebrew-core/Formula/foo.rb") | 
					
						
							| 
									
										
										
										
											2017-06-08 15:13:06 +03:00
										 |  |  |         class Foo < Formula | 
					
						
							| 
									
										
										
										
											2018-11-28 20:51:55 +01:00
										 |  |  |           url 'https://brew.sh/foo-1.0.tgz' | 
					
						
							| 
									
										
										
										
											2017-06-08 15:13:06 +03:00
										 |  |  |           desc ' an bar: commandline foo ' | 
					
						
							| 
									
										
										
										
											2021-01-12 18:12:56 +11:00
										 |  |  |                                         ^ Description shouldn't have trailing spaces. | 
					
						
							|  |  |  |                          ^^^^^^^^^^^ Description should use "command-line" instead of "commandline". | 
					
						
							|  |  |  |                 ^ Description shouldn't have leading spaces. | 
					
						
							| 
									
										
										
										
											2017-06-08 15:13:06 +03:00
										 |  |  |         end | 
					
						
							| 
									
										
										
										
											2018-07-11 15:17:40 +02:00
										 |  |  |       RUBY | 
					
						
							| 
									
										
										
										
											2017-10-21 03:12:50 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-01-12 18:12:56 +11:00
										 |  |  |       expect_correction(<<~RUBY) | 
					
						
							| 
									
										
										
										
											2017-06-08 15:13:06 +03:00
										 |  |  |         class Foo < Formula | 
					
						
							| 
									
										
										
										
											2018-11-28 20:51:55 +01:00
										 |  |  |           url 'https://brew.sh/foo-1.0.tgz' | 
					
						
							| 
									
										
										
										
											2020-07-30 16:29:12 +01:00
										 |  |  |           desc 'Bar: command-line' | 
					
						
							| 
									
										
										
										
											2017-06-08 15:13:06 +03:00
										 |  |  |         end | 
					
						
							| 
									
										
										
										
											2018-07-11 15:17:40 +02:00
										 |  |  |       RUBY | 
					
						
							| 
									
										
										
										
											2017-03-08 13:51:35 +05:30
										 |  |  |     end | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | end |