WEBrick testing

M

Michael Neumann

--------------010507070100020004070402
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit

Could the appended file be added to the Ruby distribution as
lib/webrick/testing.rb? It's currently there as
test/xmlrpc/webrick_testing.rb.

I think it's quite useful to test webrick servlets without the need for
mock objects.

Regards,

Michael

--------------010507070100020004070402
Content-Type: text/plain;
name="webrick_testing.rb"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline;
filename="webrick_testing.rb"

require 'timeout'

module WEBrick_Testing
class DummyLog < WEBrick::BasicLog
def initialize() super(self) end
def <<(*args) end
end

def start_server(config={})
raise "already started" if @__server_pid or @__started
trap('HUP') { @__started = true }
@__server_pid = fork {
w = WEBrick::HTTPServer.new(
{
:Logger => DummyLog.new,
:AccessLog => [],
:StartCallback => proc { Process.kill('HUP', Process.ppid) }
}.update(config))
yield w
trap('INT') { w.shutdown }
w.start
exit
}

Timeout.timeout(5) {
nil until @__started # wait until the server is ready
}
end

def stop_server
Process.kill('INT', @__server_pid)
@__server_pid = nil
@__started = false
Process.wait
raise unless $?.success?
end
end

--------------010507070100020004070402--
 
G

GOTOU Yuuzou

Hi,

In message said:
I think it's quite useful to test webrick servlets without the need for
mock objects.

Hmm, fork is a pain for Windows users;)
However, I understand the needs of a simple method to
start/stop WEBrick. It will be happy if it's replaced by
IO.popen.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,995
Messages
2,570,233
Members
46,820
Latest member
GilbertoA5

Latest Threads

Top