 f2adbf6613
			
		
	
	
		f2adbf6613
		
	
	
	
	
		
			
			After some discussion, we decided to change the DSL to get rid of the `plist_name` and `service_name` methods which aren't meaningful for most users. The new DSL looks like this: ```rb service do name macos: "name", linux: "name" end ``` I also updated some specs here to reflect these changes. There was some talk about maybe deprecating `plist_name` and `service_name` but I think that's outside of the scope of this PR so I'm leaving them as is for now. One benefit of this is that everything here is backwards compatible.
		
			
				
	
	
		
			87 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
			
		
		
	
	
			87 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
| # frozen_string_literal: true
 | |
| 
 | |
| require "rubocops/service"
 | |
| 
 | |
| 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 only includes custom names" 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"
 | |
|         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
 |