| 
									
										
										
										
											2019-04-19 15:38:03 +09:00
										 |  |  | # frozen_string_literal: true | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-02-27 18:24:47 +01:00
										 |  |  | require "formula" | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-02-18 15:11:11 -08:00
										 |  |  | RSpec.describe Formula do | 
					
						
							| 
									
										
										
										
											2017-02-27 18:24:47 +01:00
										 |  |  |   describe "::new" do | 
					
						
							|  |  |  |     matcher :fail_with_invalid do |attr| | 
					
						
							|  |  |  |       match do |actual| | 
					
						
							| 
									
										
										
										
											2023-03-08 23:14:46 +00:00
										 |  |  |         expect do | 
					
						
							|  |  |  |           actual.call | 
					
						
							|  |  |  |         rescue => e | 
					
						
							|  |  |  |           expect(e.attr).to eq(attr) | 
					
						
							|  |  |  |           raise e | 
					
						
							|  |  |  |         end.to raise_error(FormulaValidationError) | 
					
						
							| 
									
										
										
										
											2017-02-27 18:24:47 +01:00
										 |  |  |       end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       def supports_block_expectations? | 
					
						
							|  |  |  |         true | 
					
						
							|  |  |  |       end | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-08-19 14:27:29 +10:00
										 |  |  |     it "can't override the `brew` method" do | 
					
						
							| 
									
										
										
										
											2023-03-08 23:14:46 +00:00
										 |  |  |       expect do | 
					
						
							| 
									
										
										
										
											2017-02-27 18:24:47 +01:00
										 |  |  |         formula do | 
					
						
							|  |  |  |           def brew; end | 
					
						
							|  |  |  |         end | 
					
						
							| 
									
										
										
										
											2023-03-08 23:14:46 +00:00
										 |  |  |       end.to raise_error(RuntimeError, /You cannot override Formula#brew/) | 
					
						
							| 
									
										
										
										
											2017-02-27 18:24:47 +01:00
										 |  |  |     end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     it "validates the `name`" do | 
					
						
							| 
									
										
										
										
											2023-03-08 23:14:46 +00:00
										 |  |  |       expect do | 
					
						
							| 
									
										
										
										
											2017-02-27 18:24:47 +01:00
										 |  |  |         formula "name with spaces" do | 
					
						
							|  |  |  |           url "foo" | 
					
						
							|  |  |  |           version "1.0" | 
					
						
							|  |  |  |         end | 
					
						
							| 
									
										
										
										
											2023-03-08 23:14:46 +00:00
										 |  |  |       end.to fail_with_invalid :name | 
					
						
							| 
									
										
										
										
											2017-02-27 18:24:47 +01:00
										 |  |  |     end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     it "validates the `url`" do | 
					
						
							| 
									
										
										
										
											2023-03-08 23:14:46 +00:00
										 |  |  |       expect do | 
					
						
							| 
									
										
										
										
											2017-02-27 18:24:47 +01:00
										 |  |  |         formula do | 
					
						
							|  |  |  |           url "" | 
					
						
							|  |  |  |           version "1" | 
					
						
							|  |  |  |         end | 
					
						
							| 
									
										
										
										
											2023-03-08 23:14:46 +00:00
										 |  |  |       end.to fail_with_invalid :url | 
					
						
							| 
									
										
										
										
											2017-02-27 18:24:47 +01:00
										 |  |  |     end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     it "validates the `version`" do | 
					
						
							| 
									
										
										
										
											2023-03-08 23:14:46 +00:00
										 |  |  |       expect do | 
					
						
							| 
									
										
										
										
											2017-02-27 18:24:47 +01:00
										 |  |  |         formula do | 
					
						
							|  |  |  |           url "foo" | 
					
						
							|  |  |  |           version "version with spaces" | 
					
						
							|  |  |  |         end | 
					
						
							| 
									
										
										
										
											2023-03-08 23:14:46 +00:00
										 |  |  |       end.to fail_with_invalid :version | 
					
						
							| 
									
										
										
										
											2017-02-27 18:24:47 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-03-08 23:14:46 +00:00
										 |  |  |       expect do | 
					
						
							| 
									
										
										
										
											2017-02-27 18:24:47 +01:00
										 |  |  |         formula do | 
					
						
							|  |  |  |           url "foo" | 
					
						
							|  |  |  |           version "" | 
					
						
							|  |  |  |         end | 
					
						
							| 
									
										
										
										
											2023-03-08 23:14:46 +00:00
										 |  |  |       end.to fail_with_invalid :version | 
					
						
							| 
									
										
										
										
											2017-02-27 18:24:47 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-03-08 23:14:46 +00:00
										 |  |  |       expect do | 
					
						
							| 
									
										
										
										
											2017-02-27 18:24:47 +01:00
										 |  |  |         formula do | 
					
						
							|  |  |  |           url "foo" | 
					
						
							|  |  |  |           version nil | 
					
						
							|  |  |  |         end | 
					
						
							| 
									
										
										
										
											2023-03-08 23:14:46 +00:00
										 |  |  |       end.to fail_with_invalid :version | 
					
						
							| 
									
										
										
										
											2017-02-27 18:24:47 +01:00
										 |  |  |     end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     specify "head-only is valid" do | 
					
						
							|  |  |  |       f = formula do | 
					
						
							|  |  |  |         head "foo" | 
					
						
							|  |  |  |       end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       expect(f).to be_head | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     it "fails when Formula is empty" do | 
					
						
							| 
									
										
										
										
											2023-03-08 23:14:46 +00:00
										 |  |  |       expect do | 
					
						
							|  |  |  |         formula do | 
					
						
							| 
									
										
										
										
											2023-01-26 21:18:24 -08:00
										 |  |  |           # do nothing | 
					
						
							| 
									
										
										
										
											2023-03-08 23:14:46 +00:00
										 |  |  |         end | 
					
						
							|  |  |  |       end.to raise_error(FormulaSpecificationError) | 
					
						
							| 
									
										
										
										
											2017-02-27 18:24:47 +01:00
										 |  |  |     end | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | end |