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
42
42
autoload :ResponseWriter , "#{ dir } /response_writer"
43
43
autoload :Socket , "#{ dir } /socket"
44
44
autoload :Session , "#{ dir } /session"
45
+ autoload :TestHelper , "#{ dir } /test_helper"
45
46
46
47
# Returns the server's FakeServer::Configuration
47
48
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