File tree Expand file tree Collapse file tree 2 files changed +30
-0
lines changed Expand file tree Collapse file tree 2 files changed +30
-0
lines changed Original file line number Diff line number Diff line change @@ -42,6 +42,7 @@ class Net::IMAP::FakeServer
4242 autoload :ResponseWriter , "#{ dir } /response_writer"
4343 autoload :Socket , "#{ dir } /socket"
4444 autoload :Session , "#{ dir } /session"
45+ autoload :TestHelper , "#{ dir } /test_helper"
4546
4647 # Returns the server's FakeServer::Configuration
4748 attr_reader :config
Original file line number Diff line number Diff line change 1+ # frozen_string_literal: true
2+
3+ require_relative "../fake_server"
4+
5+ module Net ::IMAP ::FakeServer ::TestHelper
6+
7+ def with_fake_server ( select : nil , timeout : 5 , **opts )
8+ Timeout . timeout ( timeout ) do
9+ server = Net ::IMAP ::FakeServer . new ( timeout : timeout , **opts )
10+ @threads << Thread . new do server . run end if @threads
11+ tls = opts [ :implicit_tls ]
12+ tls = { ca_file : server . config . tls [ :ca_file ] } if tls == true
13+ client = Net ::IMAP . new ( "localhost" , port : server . port , ssl : tls )
14+ begin
15+ if select
16+ client . select ( select )
17+ server . commands . pop
18+ end
19+ yield server , client
20+ ensure
21+ client . logout rescue pp $!
22+ client . disconnect if !client . disconnected?
23+ end
24+ ensure
25+ server &.shutdown
26+ end
27+ end
28+
29+ end
You can’t perform that action at this time.
0 commit comments