137 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
		
		
			
		
	
	
			137 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
| 
								 | 
							
								# typed: false
							 | 
						||
| 
								 | 
							
								# frozen_string_literal: true
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								require "rubocops/text"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								describe RuboCop::Cop::FormulaAuditStrict::Text do
							 | 
						||
| 
								 | 
							
								  subject(:cop) { described_class.new }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  context "when auditing formula text in homebrew/core" do
							 | 
						||
| 
								 | 
							
								    it "reports an offense if `env :userpaths` is present" do
							 | 
						||
| 
								 | 
							
								      expect_offense(<<~RUBY)
							 | 
						||
| 
								 | 
							
								        class Foo < Formula
							 | 
						||
| 
								 | 
							
								          url "https://brew.sh/foo-1.0.tgz"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								          env :userpaths
							 | 
						||
| 
								 | 
							
								          ^^^^^^^^^^^^^^ `env :userpaths` in homebrew/core formulae is deprecated
							 | 
						||
| 
								 | 
							
								        end
							 | 
						||
| 
								 | 
							
								      RUBY
							 | 
						||
| 
								 | 
							
								    end
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    it "reports an offense if `env :std` is present in homebrew/core" do
							 | 
						||
| 
								 | 
							
								      expect_offense(<<~RUBY, "/homebrew-core/")
							 | 
						||
| 
								 | 
							
								        class Foo < Formula
							 | 
						||
| 
								 | 
							
								          url "https://brew.sh/foo-1.0.tgz"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								          env :std
							 | 
						||
| 
								 | 
							
								          ^^^^^^^^ `env :std` in homebrew/core formulae is deprecated
							 | 
						||
| 
								 | 
							
								        end
							 | 
						||
| 
								 | 
							
								      RUBY
							 | 
						||
| 
								 | 
							
								    end
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    it %Q(reports an offense if "\#{share}/<formula name>" is present) do
							 | 
						||
| 
								 | 
							
								      expect_offense(<<~RUBY, "/homebrew-core/Formula/foo.rb")
							 | 
						||
| 
								 | 
							
								        class Foo < Formula
							 | 
						||
| 
								 | 
							
								          def install
							 | 
						||
| 
								 | 
							
								            ohai "\#{share}/foo"
							 | 
						||
| 
								 | 
							
								                 ^^^^^^^^^^^^^^ Use `\#{pkgshare}` instead of `\#{share}/foo`
							 | 
						||
| 
								 | 
							
								          end
							 | 
						||
| 
								 | 
							
								        end
							 | 
						||
| 
								 | 
							
								      RUBY
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      expect_offense(<<~RUBY, "/homebrew-core/Formula/foo.rb")
							 | 
						||
| 
								 | 
							
								        class Foo < Formula
							 | 
						||
| 
								 | 
							
								          def install
							 | 
						||
| 
								 | 
							
								            ohai "\#{share}/foo/bar"
							 | 
						||
| 
								 | 
							
								                 ^^^^^^^^^^^^^^^^^^ Use `\#{pkgshare}` instead of `\#{share}/foo`
							 | 
						||
| 
								 | 
							
								          end
							 | 
						||
| 
								 | 
							
								        end
							 | 
						||
| 
								 | 
							
								      RUBY
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      expect_offense(<<~RUBY, "/homebrew-core/Formula/foolibc++.rb")
							 | 
						||
| 
								 | 
							
								        class Foolibcxx < Formula
							 | 
						||
| 
								 | 
							
								          def install
							 | 
						||
| 
								 | 
							
								            ohai "\#{share}/foolibc++"
							 | 
						||
| 
								 | 
							
								                 ^^^^^^^^^^^^^^^^^^^^ Use `\#{pkgshare}` instead of `\#{share}/foolibc++`
							 | 
						||
| 
								 | 
							
								          end
							 | 
						||
| 
								 | 
							
								        end
							 | 
						||
| 
								 | 
							
								      RUBY
							 | 
						||
| 
								 | 
							
								    end
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    it 'reports an offense if `share/"<formula name>"` is present' do
							 | 
						||
| 
								 | 
							
								      expect_offense(<<~RUBY, "/homebrew-core/Formula/foo.rb")
							 | 
						||
| 
								 | 
							
								        class Foo < Formula
							 | 
						||
| 
								 | 
							
								          def install
							 | 
						||
| 
								 | 
							
								            ohai share/"foo"
							 | 
						||
| 
								 | 
							
								                 ^^^^^^^^^^^ Use `pkgshare` instead of `share/"foo"`
							 | 
						||
| 
								 | 
							
								          end
							 | 
						||
| 
								 | 
							
								        end
							 | 
						||
| 
								 | 
							
								      RUBY
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      expect_offense(<<~RUBY, "/homebrew-core/Formula/foo.rb")
							 | 
						||
| 
								 | 
							
								        class Foo < Formula
							 | 
						||
| 
								 | 
							
								          def install
							 | 
						||
| 
								 | 
							
								            ohai share/"foo/bar"
							 | 
						||
| 
								 | 
							
								                 ^^^^^^^^^^^^^^^ Use `pkgshare` instead of `share/"foo"`
							 | 
						||
| 
								 | 
							
								          end
							 | 
						||
| 
								 | 
							
								        end
							 | 
						||
| 
								 | 
							
								      RUBY
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      expect_offense(<<~RUBY, "/homebrew-core/Formula/foolibc++.rb")
							 | 
						||
| 
								 | 
							
								        class Foolibcxx < Formula
							 | 
						||
| 
								 | 
							
								          def install
							 | 
						||
| 
								 | 
							
								            ohai share/"foolibc++"
							 | 
						||
| 
								 | 
							
								                 ^^^^^^^^^^^^^^^^^ Use `pkgshare` instead of `share/"foolibc++"`
							 | 
						||
| 
								 | 
							
								          end
							 | 
						||
| 
								 | 
							
								        end
							 | 
						||
| 
								 | 
							
								      RUBY
							 | 
						||
| 
								 | 
							
								    end
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    it %Q(reports no offenses if "\#{share}/<directory name>" doesn't match formula name) do
							 | 
						||
| 
								 | 
							
								      expect_no_offenses(<<~RUBY, "/homebrew-core/Formula/foo.rb")
							 | 
						||
| 
								 | 
							
								        class Foo < Formula
							 | 
						||
| 
								 | 
							
								          def install
							 | 
						||
| 
								 | 
							
								            ohai "\#{share}/foo-bar"
							 | 
						||
| 
								 | 
							
								          end
							 | 
						||
| 
								 | 
							
								        end
							 | 
						||
| 
								 | 
							
								      RUBY
							 | 
						||
| 
								 | 
							
								    end
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    it 'reports no offenses if `share/"<formula name>"` is not present' do
							 | 
						||
| 
								 | 
							
								      expect_no_offenses(<<~RUBY, "/homebrew-core/Formula/foo.rb")
							 | 
						||
| 
								 | 
							
								        class Foo < Formula
							 | 
						||
| 
								 | 
							
								          def install
							 | 
						||
| 
								 | 
							
								            ohai share/"foo-bar"
							 | 
						||
| 
								 | 
							
								          end
							 | 
						||
| 
								 | 
							
								        end
							 | 
						||
| 
								 | 
							
								      RUBY
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      expect_no_offenses(<<~RUBY, "/homebrew-core/Formula/foo.rb")
							 | 
						||
| 
								 | 
							
								        class Foo < Formula
							 | 
						||
| 
								 | 
							
								          def install
							 | 
						||
| 
								 | 
							
								            ohai share/"bar"
							 | 
						||
| 
								 | 
							
								          end
							 | 
						||
| 
								 | 
							
								        end
							 | 
						||
| 
								 | 
							
								      RUBY
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      expect_no_offenses(<<~RUBY, "/homebrew-core/Formula/foo.rb")
							 | 
						||
| 
								 | 
							
								        class Foo < Formula
							 | 
						||
| 
								 | 
							
								          def install
							 | 
						||
| 
								 | 
							
								            ohai share/"bar/foo"
							 | 
						||
| 
								 | 
							
								          end
							 | 
						||
| 
								 | 
							
								        end
							 | 
						||
| 
								 | 
							
								      RUBY
							 | 
						||
| 
								 | 
							
								    end
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    it %Q(reports no offenses if formula name appears afer "\#{share}/<directory name>") do
							 | 
						||
| 
								 | 
							
								      expect_no_offenses(<<~RUBY, "/homebrew-core/Formula/foo.rb")
							 | 
						||
| 
								 | 
							
								        class Foo < Formula
							 | 
						||
| 
								 | 
							
								          def install
							 | 
						||
| 
								 | 
							
								            ohai "\#{share}/bar/foo"
							 | 
						||
| 
								 | 
							
								          end
							 | 
						||
| 
								 | 
							
								        end
							 | 
						||
| 
								 | 
							
								      RUBY
							 | 
						||
| 
								 | 
							
								    end
							 | 
						||
| 
								 | 
							
								  end
							 | 
						||
| 
								 | 
							
								end
							 |