Given /^there is a wire server (running |)on port (\d+) with testframework "([^"]*)" and stepfiles "([^"]*)"$/ do |running,port,framework,files| start_wire_server(port,files.split(",").map{ |f| File.join(working_dir,f)},framework) if running.strip == "running" end Given /^there is a wire server (running |)on port (\d+) with stepfiles "(.*?)"$/ do |running,port,files| start_wire_server(port,files.split(",").map{ |f| File.join(working_dir,f)}) if running.strip == "running" end module WireHelper def start_wire_server(port,stepfiles,framework="boolean") stop_wire_server @wire_pid = fork do at_exit { stop_wire_server } if ENV['USE_COMPILED'] Process.exec("chickumber","-p","#{port}","-f",framework,*stepfiles) else Process.exec("csi","-D","development","-s","#{File.dirname(__FILE__) + '/../../chickumber-server-cli.scm'}","-p","#{port}","-f",framework,*stepfiles) end end sleep 1 #let it start end def stop_wire_server return unless @wire_pid Process.kill('KILL', @wire_pid) Process.wait end end World(WireHelper) After('@wire') do stop_wire_server end After('@reload') do stop_wire_server end