| 
									
										
										
										
											2020-04-15 03:21:07 +01:00
										 |  |  | # frozen_string_literal: true | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | require "style" | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-02-18 15:11:11 -08:00
										 |  |  | RSpec.describe Homebrew::Style do | 
					
						
							| 
									
										
										
										
											2020-04-15 03:21:07 +01:00
										 |  |  |   around do |example| | 
					
						
							|  |  |  |     FileUtils.ln_s HOMEBREW_LIBRARY_PATH, HOMEBREW_LIBRARY/"Homebrew" | 
					
						
							|  |  |  |     FileUtils.ln_s HOMEBREW_LIBRARY_PATH.parent/".rubocop.yml", HOMEBREW_LIBRARY/".rubocop.yml" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     example.run | 
					
						
							|  |  |  |   ensure | 
					
						
							|  |  |  |     FileUtils.rm_f HOMEBREW_LIBRARY/"Homebrew" | 
					
						
							|  |  |  |     FileUtils.rm_f HOMEBREW_LIBRARY/".rubocop.yml" | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   before do | 
					
						
							|  |  |  |     allow(Homebrew).to receive(:install_bundler_gems!) | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   describe ".check_style_json" do | 
					
						
							|  |  |  |     let(:dir) { mktmpdir } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-09-01 20:07:21 +02:00
										 |  |  |     it "returns offenses when RuboCop reports offenses" do | 
					
						
							| 
									
										
										
										
											2020-04-15 03:21:07 +01:00
										 |  |  |       formula = dir/"my-formula.rb" | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-02-10 08:59:51 +00:00
										 |  |  |       formula.write <<~EOS | 
					
						
							| 
									
										
										
										
											2020-04-15 03:21:07 +01:00
										 |  |  |         class MyFormula < Formula | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  |       EOS | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-09-01 20:07:21 +02:00
										 |  |  |       style_offenses = described_class.check_style_json([formula]) | 
					
						
							| 
									
										
										
										
											2020-04-15 03:21:07 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-09-01 20:07:21 +02:00
										 |  |  |       expect(style_offenses.for_path(formula.realpath).map(&:message)) | 
					
						
							| 
									
										
										
										
											2020-04-15 03:21:07 +01:00
										 |  |  |         .to include("Extra empty line detected at class body beginning.") | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   describe ".check_style_and_print" do | 
					
						
							|  |  |  |     let(:dir) { mktmpdir } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-02-26 14:50:34 +00:00
										 |  |  |     it "returns true (success) for conforming file with only audit-level violations" do | 
					
						
							| 
									
										
										
										
											2020-04-15 03:21:07 +01:00
										 |  |  |       # This file is known to use non-rocket hashes and other things that trigger audit, | 
					
						
							|  |  |  |       # but not regular, cop violations | 
					
						
							|  |  |  |       target_file = HOMEBREW_LIBRARY_PATH/"utils.rb" | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-09-01 20:07:21 +02:00
										 |  |  |       style_result = described_class.check_style_and_print([target_file]) | 
					
						
							| 
									
										
										
										
											2020-04-15 03:21:07 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-03-01 00:02:36 +00:00
										 |  |  |       expect(style_result).to be true | 
					
						
							| 
									
										
										
										
											2020-04-15 03:21:07 +01:00
										 |  |  |     end | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | end |