| 
									
										
										
										
											2020-10-10 14:16:11 +02:00
										 |  |  | # typed: false | 
					
						
							| 
									
										
										
										
											2019-04-19 15:38:03 +09:00
										 |  |  | # frozen_string_literal: true | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-10-26 19:49:21 +01:00
										 |  |  | module CaskCop | 
					
						
							|  |  |  |   shared_examples "does not report any offenses" do | 
					
						
							|  |  |  |     it "does not report any offenses" do | 
					
						
							|  |  |  |       expect_no_offenses(source) | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   shared_examples "reports offenses" do | 
					
						
							|  |  |  |     it "reports offenses" do | 
					
						
							|  |  |  |       expect_reported_offenses(source, expected_offenses) | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   shared_examples "autocorrects source" do | 
					
						
							|  |  |  |     it "autocorrects source" do | 
					
						
							|  |  |  |       expect_autocorrected_source(source, correct_source) | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   def expect_no_offenses(source) | 
					
						
							| 
									
										
										
										
											2021-01-12 18:25:05 +11:00
										 |  |  |     expect(inspect_source(source)).to be_empty | 
					
						
							| 
									
										
										
										
											2018-10-26 19:49:21 +01:00
										 |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   def expect_reported_offenses(source, expected_offenses) | 
					
						
							| 
									
										
										
										
											2021-01-12 18:25:05 +11:00
										 |  |  |     offenses = inspect_source(source) | 
					
						
							|  |  |  |     expect(offenses.size).to eq(expected_offenses.size) | 
					
						
							|  |  |  |     expected_offenses.zip(offenses).each do |expected, actual| | 
					
						
							| 
									
										
										
										
											2018-10-26 19:49:21 +01:00
										 |  |  |       expect_offense(expected, actual) | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   def expect_offense(expected, actual) | 
					
						
							|  |  |  |     expect(actual.message).to eq(expected[:message]) | 
					
						
							|  |  |  |     expect(actual.severity).to eq(expected[:severity]) | 
					
						
							|  |  |  |     expect(actual.line).to eq(expected[:line]) | 
					
						
							|  |  |  |     expect(actual.column).to eq(expected[:column]) | 
					
						
							|  |  |  |     expect(actual.location.source).to eq(expected[:source]) | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   def expect_autocorrected_source(source, correct_source) | 
					
						
							|  |  |  |     new_source = autocorrect_source(source) | 
					
						
							|  |  |  |     expect(new_source).to eq(Array(correct_source).join("\n")) | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | end |