Updated MSpec source to 1c3ee1c8.
[rbx.git] / test / mri / webrick / utils.rb
blobf1e6e4b0273fe77868a4193597fc6ba1564b5801
1 require "webrick"
2 begin
3   require "webrick/https"
4 rescue LoadError
5 end
6 require "webrick/httpproxy"
8 module TestWEBrick
9   NullWriter = Object.new
10   def NullWriter.<<(msg)
11     puts msg if $DEBUG
12     return self
13   end
15   module_function
17   def start_server(klass, config={}, &block)
18     server = klass.new({
19       :BindAddress => "127.0.0.1", :Port => 0,
20       :Logger => WEBrick::Log.new(NullWriter),
21       :AccessLog => [[NullWriter, ""]]
22     }.update(config))
23     begin
24       thread = Thread.start{ server.start }
25       addr = server.listeners[0].addr
26       block.call([server, addr[3], addr[1]])
27     ensure
28       server.stop
29       thread.join
30     end
31   end
33   def start_httpserver(config={}, &block)
34     start_server(WEBrick::HTTPServer, config, &block)
35   end
37   def start_httpproxy(config={}, &block)
38     start_server(WEBrick::HTTPProxyServer, config, &block)
39   end
40 end