class Mumukit::Server::TestServer

Public Instance Methods

info(url) click to toggle source
# File lib/mumukit/server/test_server.rb, line 12
def info(url)
  runtime.info
      .merge(repo_url: default_repo_url)
      .merge(runtime.metadata_hook.metadata)
      .merge(url: url)
end
parse_request(sinatra_request) click to toggle source
# File lib/mumukit/server/test_server.rb, line 22
def parse_request(sinatra_request)
  OpenStruct.new parse_request_headers(sinatra_request).merge(parse_request_body(sinatra_request))
end
parse_request_body(sinatra_request) click to toggle source
# File lib/mumukit/server/test_server.rb, line 30
def parse_request_body(sinatra_request)
  begin
    parse_body(sinatra_request).tap do |it|
      I18n.locale = it['locale'] || :en
    end
  rescue StandardError => e
    raise StandardError.new("Error parsing request body. Cause: #{e}")
  end
end
parse_request_headers(sinatra_request) click to toggle source
# File lib/mumukit/server/test_server.rb, line 26
def parse_request_headers(sinatra_request)
  {}
end
query!(request) click to toggle source
# File lib/mumukit/server/test_server.rb, line 49
def query!(request)
  respond_to(request) do |r|
    results = run_query!(r)
    Mumukit::Server::ResponseBuilder.build do
      add_query_results(results)
    end
  end
end
run_expectations!(request) click to toggle source
# File lib/mumukit/server/test_server.rb, line 73
def run_expectations!(request)
  return [] if should_skip_expectations?(request)

  compile_and_run runtime.expectations_hook, request
end
run_feedback!(request, results) click to toggle source
# File lib/mumukit/server/test_server.rb, line 79
def run_feedback!(request, results)
  runtime.feedback_hook.run!(request, results)
end
run_tests!(request) click to toggle source
# File lib/mumukit/server/test_server.rb, line 67
def run_tests!(request)
  return ['', :passed] if should_skip_tests?(request.test)

  compile_and_run runtime.test_hook, request
end
runtime() click to toggle source
# File lib/mumukit/server/test_server.rb, line 8
def runtime
  Mumukit.runtime
end
start_request!(_request) click to toggle source
# File lib/mumukit/server/test_server.rb, line 19
def start_request!(_request)
end
test!(request) click to toggle source
# File lib/mumukit/server/test_server.rb, line 40
def test!(request)
  respond_to(request) do |r|
    pipeline = Mumukit::Server::TestPipeline.new self, r
    pipeline.evaluate!
    pipeline.generate_feedback!
    pipeline.response
  end
end
try!(request) click to toggle source
# File lib/mumukit/server/test_server.rb, line 58
def try!(request)
  respond_to(request) do |r|
    results = run_try!(r)
    Mumukit::Server::ResponseBuilder.build do
      add_try_results(results)
    end
  end
end

Private Instance Methods

compile_and_run(hook, request) click to toggle source
# File lib/mumukit/server/test_server.rb, line 93
def compile_and_run(hook, request)
  compilation = hook.compile(request)
  hook.run!(compilation)
rescue Mumukit::CompilationError => e
  [e.message, :errored]
end
default_repo_url() click to toggle source
# File lib/mumukit/server/test_server.rb, line 124
def default_repo_url
  "https://github.com/mumuki/mumuki-#{Mumukit.runner_name}-runner"
end
parse_body(sinatra_request) click to toggle source
# File lib/mumukit/server/test_server.rb, line 128
def parse_body(sinatra_request)
  json = sinatra_request.body.read
  return {} if json.empty?
  JSON.parse json
end
preprocess(request) click to toggle source
# File lib/mumukit/server/test_server.rb, line 100
def preprocess(request)
  runtime.precompile_hook.compile Mumukit.directives_pipeline.transform(request)
end
respond_to(request) { |preprocess tap { |r| validate_request! r }| ... } click to toggle source
# File lib/mumukit/server/test_server.rb, line 116
def respond_to(request)
  yield preprocess request.tap { |r| validate_request! r }
rescue Mumukit::RequestValidationError => e
  {exit: :aborted, out: e.message}
rescue => e
  {exit: :errored, out: content_type.format_exception(e)}
end
run_query!(request) click to toggle source
# File lib/mumukit/server/test_server.rb, line 85
def run_query!(request)
  compile_and_run runtime.query_hook, request
end
run_try!(request) click to toggle source
# File lib/mumukit/server/test_server.rb, line 89
def run_try!(request)
  compile_and_run runtime.try_hook, request
end
should_skip_expectations?(request) click to toggle source
# File lib/mumukit/server/test_server.rb, line 108
def should_skip_expectations?(request)
  request.expectations.nil? || (request.content.nil? && !Mumukit.config.process_expectations_on_empty_content)
end
should_skip_tests?(tests) click to toggle source
# File lib/mumukit/server/test_server.rb, line 112
def should_skip_tests?(tests)
  tests.blank? && !Mumukit.config.run_test_hook_on_empty_test
end
validate_request!(request) click to toggle source
# File lib/mumukit/server/test_server.rb, line 104
def validate_request!(request)
  runtime.validation_hook.validate! request
end