class MSpec::Opal::Runner

def initialize &block

def initialize &block
  @app = RackApp.new(&block).to_app
  @port = 9999
end

def passed?

def passed?
  @passed
end

def run

def run
  start_server
  start_phantomjs
  exit 1 unless passed?
rescue => e
  puts e.message
ensure
  stop_server if server
end

def start_phantomjs

def start_phantomjs
  require 'shellwords'
  runner  = File.expand_path('../sprockets.js', __FILE__).shellescape
  url     = "http://localhost:#{port}/".shellescape
  command = %Q{phantomjs #{runner} #{url}}
  @passed = system command
end

def start_server

def start_server
  @server = Thread.new do
    Rack::Server.start(:app => app, :Port => port, :AccessLog => [],
      :Logger => WEBrick::Log.new("/dev/null"))
  end
end

def stop_server

def stop_server
  server.kill
end