| 
									
										
										
										
											2023-04-04 19:55:15 -07:00
										 |  |  | # frozen_string_literal: true | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | require "rubocops/service" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | describe RuboCop::Cop::FormulaAudit::Service do | 
					
						
							|  |  |  |   subject(:cop) { described_class.new } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-04-30 07:39:25 +08:00
										 |  |  |   it "reports offenses when a formula's service block uses cellar paths" do | 
					
						
							| 
									
										
										
										
											2023-04-04 19:55:15 -07:00
										 |  |  |     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"] | 
					
						
							| 
									
										
										
										
											2023-04-07 17:16:48 +01:00
										 |  |  |                ^^^ FormulaAudit/Service: Use `opt_bin` instead of `bin` in service blocks. | 
					
						
							| 
									
										
										
										
											2023-04-30 07:39:25 +08:00
										 |  |  |           working_dir libexec | 
					
						
							|  |  |  |                       ^^^^^^^ FormulaAudit/Service: Use `opt_libexec` instead of `libexec` in service blocks. | 
					
						
							| 
									
										
										
										
											2023-04-04 19:55:15 -07:00
										 |  |  |         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"] | 
					
						
							| 
									
										
										
										
											2023-04-30 07:39:25 +08:00
										 |  |  |           working_dir opt_libexec | 
					
						
							| 
									
										
										
										
											2023-04-04 19:55:15 -07:00
										 |  |  |         end | 
					
						
							|  |  |  |       end | 
					
						
							|  |  |  |     RUBY | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-04-30 07:39:25 +08:00
										 |  |  |   it "reports no offenses when a formula's service block only uses opt paths" do | 
					
						
							| 
									
										
										
										
											2023-04-04 19:55:15 -07:00
										 |  |  |     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"] | 
					
						
							| 
									
										
										
										
											2023-04-30 07:39:25 +08:00
										 |  |  |           working_dir opt_libexec | 
					
						
							| 
									
										
										
										
											2023-04-04 19:55:15 -07:00
										 |  |  |         end | 
					
						
							|  |  |  |       end | 
					
						
							|  |  |  |     RUBY | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | end |