87 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
		
		
			
		
	
	
			87 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
| 
								 | 
							
								# typed: false
							 | 
						||
| 
								 | 
							
								# frozen_string_literal: true
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								require "rubocops/lines"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								describe RuboCop::Cop::FormulaAudit::OSConditionals do
							 | 
						||
| 
								 | 
							
								  subject(:cop) { described_class.new }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  context "when auditing OS conditionals" do
							 | 
						||
| 
								 | 
							
								    it "reports an offense when `OS.linux?` is used on Formula class" do
							 | 
						||
| 
								 | 
							
								      expect_offense(<<~RUBY, "/homebrew-core/Formula/foo.rb")
							 | 
						||
| 
								 | 
							
								        class Foo < Formula
							 | 
						||
| 
								 | 
							
								          desc "foo"
							 | 
						||
| 
								 | 
							
								          if OS.linux?
							 | 
						||
| 
								 | 
							
								             ^^^^^^^^^ Don't use 'if OS.linux?', use 'on_linux do' instead.
							 | 
						||
| 
								 | 
							
								            url 'https://brew.sh/linux-1.0.tgz'
							 | 
						||
| 
								 | 
							
								          else
							 | 
						||
| 
								 | 
							
								            url 'https://brew.sh/linux-1.0.tgz'
							 | 
						||
| 
								 | 
							
								          end
							 | 
						||
| 
								 | 
							
								        end
							 | 
						||
| 
								 | 
							
								      RUBY
							 | 
						||
| 
								 | 
							
								    end
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    it "reports an offense when `OS.mac?` is used on Formula class" do
							 | 
						||
| 
								 | 
							
								      expect_offense(<<~RUBY, "/homebrew-core/Formula/foo.rb")
							 | 
						||
| 
								 | 
							
								        class Foo < Formula
							 | 
						||
| 
								 | 
							
								          desc "foo"
							 | 
						||
| 
								 | 
							
								          if OS.mac?
							 | 
						||
| 
								 | 
							
								             ^^^^^^^ Don't use 'if OS.mac?', use 'on_macos do' instead.
							 | 
						||
| 
								 | 
							
								            url 'https://brew.sh/mac-1.0.tgz'
							 | 
						||
| 
								 | 
							
								          else
							 | 
						||
| 
								 | 
							
								            url 'https://brew.sh/linux-1.0.tgz'
							 | 
						||
| 
								 | 
							
								          end
							 | 
						||
| 
								 | 
							
								        end
							 | 
						||
| 
								 | 
							
								      RUBY
							 | 
						||
| 
								 | 
							
								    end
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    it "reports an offense when `on_macos` is used in install method" do
							 | 
						||
| 
								 | 
							
								      expect_offense(<<~RUBY, "/homebrew-core/Formula/foo.rb")
							 | 
						||
| 
								 | 
							
								        class Foo < Formula
							 | 
						||
| 
								 | 
							
								          desc "foo"
							 | 
						||
| 
								 | 
							
								          url 'https://brew.sh/foo-1.0.tgz'
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								          def install
							 | 
						||
| 
								 | 
							
								            on_macos do
							 | 
						||
| 
								 | 
							
								            ^^^^^^^^ Don't use 'on_macos' in 'def install', use 'if OS.mac?' instead.
							 | 
						||
| 
								 | 
							
								              true
							 | 
						||
| 
								 | 
							
								            end
							 | 
						||
| 
								 | 
							
								          end
							 | 
						||
| 
								 | 
							
								        end
							 | 
						||
| 
								 | 
							
								      RUBY
							 | 
						||
| 
								 | 
							
								    end
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    it "reports an offense when `on_linux` is used in install method" do
							 | 
						||
| 
								 | 
							
								      expect_offense(<<~RUBY, "/homebrew-core/Formula/foo.rb")
							 | 
						||
| 
								 | 
							
								        class Foo < Formula
							 | 
						||
| 
								 | 
							
								          desc "foo"
							 | 
						||
| 
								 | 
							
								          url 'https://brew.sh/foo-1.0.tgz'
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								          def install
							 | 
						||
| 
								 | 
							
								            on_linux do
							 | 
						||
| 
								 | 
							
								            ^^^^^^^^ Don't use 'on_linux' in 'def install', use 'if OS.linux?' instead.
							 | 
						||
| 
								 | 
							
								              true
							 | 
						||
| 
								 | 
							
								            end
							 | 
						||
| 
								 | 
							
								          end
							 | 
						||
| 
								 | 
							
								        end
							 | 
						||
| 
								 | 
							
								      RUBY
							 | 
						||
| 
								 | 
							
								    end
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    it "reports an offense when `on_macos` is used in test block" do
							 | 
						||
| 
								 | 
							
								      expect_offense(<<~RUBY, "/homebrew-core/Formula/foo.rb")
							 | 
						||
| 
								 | 
							
								        class Foo < Formula
							 | 
						||
| 
								 | 
							
								          desc "foo"
							 | 
						||
| 
								 | 
							
								          url 'https://brew.sh/foo-1.0.tgz'
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								          test do
							 | 
						||
| 
								 | 
							
								            on_macos do
							 | 
						||
| 
								 | 
							
								            ^^^^^^^^ Don't use 'on_macos' in 'test do', use 'if OS.mac?' instead.
							 | 
						||
| 
								 | 
							
								              true
							 | 
						||
| 
								 | 
							
								            end
							 | 
						||
| 
								 | 
							
								          end
							 | 
						||
| 
								 | 
							
								        end
							 | 
						||
| 
								 | 
							
								      RUBY
							 | 
						||
| 
								 | 
							
								    end
							 | 
						||
| 
								 | 
							
								  end
							 | 
						||
| 
								 | 
							
								end
							 |