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