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
							 |