| 
									
										
										
										
											2020-03-27 14:29:50 +00:00
										 |  |  | # frozen_string_literal: true | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | require "socket" | 
					
						
							|  |  |  | require "formula_free_port" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | module Homebrew | 
					
						
							|  |  |  |   describe FreePort do | 
					
						
							|  |  |  |     include described_class | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     describe "#free_port" do | 
					
						
							|  |  |  |       it "returns a free TCP/IP port" do | 
					
						
							| 
									
										
										
										
											2023-01-24 20:07:22 -08:00
										 |  |  |         # IANA suggests user port from 1024 to 49151 | 
					
						
							|  |  |  |         # and dynamic port for 49152 to 65535 | 
					
						
							|  |  |  |         # http://www.iana.org/assignments/port-numbers | 
					
						
							|  |  |  |         min_port = 1024
 | 
					
						
							|  |  |  |         max_port = 65535
 | 
					
						
							| 
									
										
										
										
											2020-03-27 14:29:50 +00:00
										 |  |  |         port = free_port | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-01-24 20:07:22 -08:00
										 |  |  |         expect(port).to be_between(min_port, max_port) | 
					
						
							| 
									
										
										
										
											2020-03-27 14:29:50 +00:00
										 |  |  |         expect { TCPServer.new(port).close }.not_to raise_error | 
					
						
							|  |  |  |       end | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | end |