128 lines
3.6 KiB
Ruby
128 lines
3.6 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
require "rubocops/lines"
|
|
|
|
RSpec.describe RuboCop::Cop::FormulaAudit::MacOSOnLinux do
|
|
subject(:cop) { described_class.new }
|
|
|
|
it "reports an offense when `MacOS` is used in the `Formula` class" do
|
|
expect_offense(<<~RUBY, "/homebrew-core/Formula/foo.rb")
|
|
class Foo < Formula
|
|
desc "foo"
|
|
if MacOS::Xcode.version >= "12.0"
|
|
^^^^^ FormulaAudit/MacOSOnLinux: Don't use `MacOS` where it could be called on Linux.
|
|
url 'https://brew.sh/linux-1.0.tgz'
|
|
end
|
|
end
|
|
RUBY
|
|
end
|
|
|
|
it "reports an offense when `MacOS` is used in a `resource` block" do
|
|
expect_offense(<<~RUBY, "/homebrew-core/Formula/foo.rb")
|
|
class Foo < Formula
|
|
desc "foo"
|
|
url 'https://brew.sh/linux-1.0.tgz'
|
|
|
|
resource "foo" do
|
|
url "https://brew.sh/linux-1.0.tgz" if MacOS::full_version >= "12.0"
|
|
^^^^^ FormulaAudit/MacOSOnLinux: Don't use `MacOS` where it could be called on Linux.
|
|
end
|
|
end
|
|
RUBY
|
|
end
|
|
|
|
it "reports an offense when `MacOS` is used in an `on_linux` block" do
|
|
expect_offense(<<~RUBY, "/homebrew-core/Formula/foo.rb")
|
|
class Foo < Formula
|
|
desc "foo"
|
|
on_linux do
|
|
if MacOS::Xcode.version >= "12.0"
|
|
^^^^^ FormulaAudit/MacOSOnLinux: Don't use `MacOS` where it could be called on Linux.
|
|
url 'https://brew.sh/linux-1.0.tgz'
|
|
end
|
|
end
|
|
end
|
|
RUBY
|
|
end
|
|
|
|
it "reports an offense when `MacOS` is used in an `on_arm` block" do
|
|
expect_offense(<<~RUBY, "/homebrew-core/Formula/foo.rb")
|
|
class Foo < Formula
|
|
desc "foo"
|
|
on_arm do
|
|
if MacOS::Xcode.version >= "12.0"
|
|
^^^^^ FormulaAudit/MacOSOnLinux: Don't use `MacOS` where it could be called on Linux.
|
|
url 'https://brew.sh/linux-1.0.tgz'
|
|
end
|
|
end
|
|
end
|
|
RUBY
|
|
end
|
|
|
|
it "reports an offense when `MacOS` is used in an `on_intel` block" do
|
|
expect_offense(<<~RUBY, "/homebrew-core/Formula/foo.rb")
|
|
class Foo < Formula
|
|
desc "foo"
|
|
on_intel do
|
|
if MacOS::Xcode.version >= "12.0"
|
|
^^^^^ FormulaAudit/MacOSOnLinux: Don't use `MacOS` where it could be called on Linux.
|
|
url 'https://brew.sh/linux-1.0.tgz'
|
|
end
|
|
end
|
|
end
|
|
RUBY
|
|
end
|
|
|
|
it "reports no offenses when `MacOS` is used in an `on_macos` block" do
|
|
expect_no_offenses(<<~RUBY, "/homebrew-core/Formula/foo.rb")
|
|
class Foo < Formula
|
|
desc "foo"
|
|
on_macos do
|
|
if MacOS::Xcode.version >= "12.0"
|
|
url 'https://brew.sh/linux-1.0.tgz'
|
|
end
|
|
end
|
|
end
|
|
RUBY
|
|
end
|
|
|
|
it "reports no offenses when `MacOS` is used in an `on_ventura` block" do
|
|
expect_no_offenses(<<~RUBY, "/homebrew-core/Formula/foo.rb")
|
|
class Foo < Formula
|
|
desc "foo"
|
|
on_ventura :or_older do
|
|
if MacOS::Xcode.version >= "12.0"
|
|
url 'https://brew.sh/linux-1.0.tgz'
|
|
end
|
|
end
|
|
end
|
|
RUBY
|
|
end
|
|
|
|
it "reports no offenses when `MacOS` is used in the `install` method" do
|
|
expect_no_offenses(<<~RUBY, "/homebrew-core/Formula/foo.rb")
|
|
class Foo < Formula
|
|
desc "foo"
|
|
url 'https://brew.sh/linux-1.0.tgz'
|
|
|
|
def install
|
|
MacOS.version
|
|
end
|
|
end
|
|
RUBY
|
|
end
|
|
|
|
it "reports no offenses when `MacOS` is used in the `test` block" do
|
|
expect_no_offenses(<<~RUBY, "/homebrew-core/Formula/foo.rb")
|
|
class Foo < Formula
|
|
desc "foo"
|
|
url 'https://brew.sh/linux-1.0.tgz'
|
|
|
|
test do
|
|
MacOS.version
|
|
end
|
|
end
|
|
RUBY
|
|
end
|
|
end
|