brew/Library/Homebrew/test/rubocops/text/std_npm_args_spec.rb

88 lines
2.7 KiB
Ruby
Raw Normal View History

# frozen_string_literal: true
require "rubocops/lines"
RSpec.describe RuboCop::Cop::FormulaAudit::StdNpmArgs do
subject(:cop) { described_class.new }
context "when auditing node formulae" do
it "reports an offense when `npm install` is called without std_npm_args arguments" do
expect_offense(<<~RUBY)
class Foo < Formula
def install
system "npm", "install"
^^^^^^^^^^^^^^^^^^^^^^^ FormulaAudit/StdNpmArgs: Use `std_npm_args` for npm install
end
end
RUBY
end
it "reports and corrects an offense when using local_npm_install_args" do
expect_offense(<<~RUBY)
class Foo < Formula
def install
system "npm", "install", *Language::Node.local_npm_install_args, "--production"
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ FormulaAudit/StdNpmArgs: Use 'std_npm_args' instead of 'local_npm_install_args'.
end
end
RUBY
expect_correction(<<~RUBY)
class Foo < Formula
def install
system "npm", "install", *std_npm_args(prefix: false), "--production"
end
end
RUBY
end
it "reports and corrects an offense when using std_npm_install_args with libexec" do
expect_offense(<<~RUBY)
class Foo < Formula
def install
system "npm", "install", *Language::Node.std_npm_install_args(libexec), "--production"
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ FormulaAudit/StdNpmArgs: Use 'std_npm_args' instead of 'std_npm_install_args'.
end
end
RUBY
expect_correction(<<~RUBY)
class Foo < Formula
def install
system "npm", "install", *std_npm_args, "--production"
end
end
RUBY
end
it "reports and corrects an offense when using std_npm_install_args without libexec" do
expect_offense(<<~RUBY)
class Foo < Formula
def install
system "npm", "install", *Language::Node.std_npm_install_args(buildpath), "--production"
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ FormulaAudit/StdNpmArgs: Use 'std_npm_args' instead of 'std_npm_install_args'.
end
end
RUBY
expect_correction(<<~RUBY)
class Foo < Formula
def install
system "npm", "install", *std_npm_args(prefix: buildpath), "--production"
end
end
RUBY
end
it "does not report an offense when using std_npm_args" do
expect_no_offenses(<<~RUBY)
class Foo < Formula
def install
system "npm", "install", *std_npm_args
end
end
RUBY
end
end
end