
Recommend the use of `on_macos` and `on_linux` unless we're in `def install`, `def post_install` or `test do` in which case recommend `OS.mac?` and `OS.linux?` instead.
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
|