23 lines
		
	
	
		
			557 B
		
	
	
	
		
			Ruby
		
	
	
	
	
	
		
		
			
		
	
	
			23 lines
		
	
	
		
			557 B
		
	
	
	
		
			Ruby
		
	
	
	
	
	
| 
								 | 
							
								# frozen_string_literal: true
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								require "socket"
							 | 
						||
| 
								 | 
							
								require "formula_free_port"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								RSpec.describe Homebrew::FreePort do
							 | 
						||
| 
								 | 
							
								  include described_class
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  describe "#free_port" do
							 | 
						||
| 
								 | 
							
								    it "returns a free TCP/IP port" do
							 | 
						||
| 
								 | 
							
								      # 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
							 | 
						||
| 
								 | 
							
								      port = free_port
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      expect(port).to be_between(min_port, max_port)
							 | 
						||
| 
								 | 
							
								      expect { TCPServer.new(port).close }.not_to raise_error
							 | 
						||
| 
								 | 
							
								    end
							 | 
						||
| 
								 | 
							
								  end
							 | 
						||
| 
								 | 
							
								end
							 |