88 lines
2.7 KiB
Ruby
88 lines
2.7 KiB
Ruby
# 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
|