module RackCheck::Spec

Constants

ENV_RU
STARTUP_TIMEOUT

Public Class Methods

load_tests() click to toggle source
# File lib/rack_check/spec.rb, line 28
def self.load_tests
  require 'rack_check/spec/rackup'
  require 'rack_check/spec/env'
end
run(app_server_command, app_server_port) click to toggle source
# File lib/rack_check/spec.rb, line 16
def self.run(app_server_command, app_server_port)
  load_tests
  @@context = Context.new(app_server_command, app_server_port, STARTUP_TIMEOUT)

  # TODO there must be a better way to pass context to a rspec suite
  RSpec::Core::Runner.run([])
end
server_context() click to toggle source
# File lib/rack_check/spec.rb, line 24
def self.server_context
  @@context
end

Public Instance Methods

start_server(ru_file) click to toggle source
# File lib/rack_check/spec/env.rb, line 18
def start_server(ru_file)
  @server = ServerManager.new(RackCheck::Spec::server_context, ru_file)
  @endpoint = @server.run
end
stop_server() click to toggle source
# File lib/rack_check/spec/env.rb, line 23
def stop_server
  @server.stop
end
supports_hijack?() click to toggle source
# File lib/rack_check/spec/env.rb, line 229
def supports_hijack?
  if @supports_hijack.nil?
    result = ''
    with_server(ENV_RU) do |endpoint|
      result = JSON.load HTTP.get(endpoint).to_s
    end
    @supports_hijack = result['rack.hijack?']
  end
  @supports_hijack
end
with_server(ru_file) { |start_server(ru_file)| ... } click to toggle source
# File lib/rack_check/spec/env.rb, line 10
def with_server(ru_file)
  yield start_server(ru_file)
rescue HTTP::ConnectionError => e
  raise e, "#{e.message}\n\nServer error:\n#{@server&.errors}", e.backtrace
ensure
  stop_server
end