 769b4f89c7
			
		
	
	
		769b4f89c7
		
	
	
	
	
		
			
			This was added in recently and this just updates the test to reflect the expected behavior for the cop.
		
			
				
	
	
		
			88 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
			
		
		
	
	
			88 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
| # frozen_string_literal: true
 | |
| 
 | |
| require "rubocops/service"
 | |
| 
 | |
| RSpec.describe RuboCop::Cop::FormulaAudit::Service do
 | |
|   subject(:cop) { described_class.new }
 | |
| 
 | |
|   it "reports offenses when a service block is missing a required command" do
 | |
|     expect_offense(<<~RUBY)
 | |
|       class Foo < Formula
 | |
|         url "https://brew.sh/foo-1.0.tgz"
 | |
| 
 | |
|         service do
 | |
|         ^^^^^^^^^^ FormulaAudit/Service: Service blocks require `run` or `name` to be defined.
 | |
|           run_type :cron
 | |
|           working_dir "/tmp/example"
 | |
|         end
 | |
|       end
 | |
|     RUBY
 | |
|   end
 | |
| 
 | |
|   it "reports no offenses when a service block includes custom names and requires root" do
 | |
|     expect_no_offenses(<<~RUBY)
 | |
|       class Foo < Formula
 | |
|         url "https://brew.sh/foo-1.0.tgz"
 | |
| 
 | |
|         service do
 | |
|           name macos: "custom.mcxl.foo", linux: "custom.foo"
 | |
|           require_root true
 | |
|         end
 | |
|       end
 | |
|     RUBY
 | |
|   end
 | |
| 
 | |
|   it "reports offenses when a service block includes more than custom names and no run command" do
 | |
|     expect_offense(<<~RUBY)
 | |
|       class Foo < Formula
 | |
|         url "https://brew.sh/foo-1.0.tgz"
 | |
| 
 | |
|         service do
 | |
|         ^^^^^^^^^^ FormulaAudit/Service: `run` must be defined to use methods other than `name` like [:working_dir].
 | |
|           name macos: "custom.mcxl.foo", linux: "custom.foo"
 | |
|           working_dir "/tmp/example"
 | |
|         end
 | |
|       end
 | |
|     RUBY
 | |
|   end
 | |
| 
 | |
|   it "reports offenses when a formula's service block uses cellar paths" do
 | |
|     expect_offense(<<~RUBY)
 | |
|       class Foo < Formula
 | |
|         url "https://brew.sh/foo-1.0.tgz"
 | |
| 
 | |
|         service do
 | |
|           run [bin/"foo", "run", "-config", etc/"foo/config.json"]
 | |
|                ^^^ FormulaAudit/Service: Use `opt_bin` instead of `bin` in service blocks.
 | |
|           working_dir libexec
 | |
|                       ^^^^^^^ FormulaAudit/Service: Use `opt_libexec` instead of `libexec` in service blocks.
 | |
|         end
 | |
|       end
 | |
|     RUBY
 | |
| 
 | |
|     expect_correction(<<~RUBY)
 | |
|       class Foo < Formula
 | |
|         url "https://brew.sh/foo-1.0.tgz"
 | |
| 
 | |
|         service do
 | |
|           run [opt_bin/"foo", "run", "-config", etc/"foo/config.json"]
 | |
|           working_dir opt_libexec
 | |
|         end
 | |
|       end
 | |
|     RUBY
 | |
|   end
 | |
| 
 | |
|   it "reports no offenses when a service block only uses opt paths" do
 | |
|     expect_no_offenses(<<~RUBY)
 | |
|       class Bin < Formula
 | |
|         url "https://brew.sh/foo-1.0.tgz"
 | |
| 
 | |
|         service do
 | |
|           run [opt_bin/"bin", "run", "-config", etc/"bin/config.json"]
 | |
|           working_dir opt_libexec
 | |
|         end
 | |
|       end
 | |
|     RUBY
 | |
|   end
 | |
| end
 |