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 |