Class: Mumukit::Bridge::Runner
- Inherits:
-
Object
- Object
- Mumukit::Bridge::Runner
- Defined in:
- lib/mumukit/bridge/runner.rb
Instance Attribute Summary collapse
-
#test_runner_url ⇒ Object
Returns the value of attribute test_runner_url.
Instance Method Summary collapse
- #assets(path, options = {}) ⇒ Object
- #importable_info ⇒ Object
- #info(options = {}) ⇒ Object
-
#initialize(test_runner_url, timeout = 10) ⇒ Runner
constructor
A new instance of Runner.
- #post_to_server(request, route) ⇒ Object
- #raw_get_to_server(route, options) ⇒ Object
- #run_query!(request) ⇒ Object
-
#run_tests!(request) ⇒ Object
Expects a hash string, extra: string, content: string, expectations: [{binding:string, inspection: string)]} Returns a hash string, test_results: [{title:string, status:symbol, result:string], status: :passed|:failed|:errored|:aborted|:passed_with_warnings, expectation_results: [inspection:string, result:symbol], feedback: string}.
- #run_try!(request) ⇒ Object
- #with_server_response(request, route, &action) ⇒ Object
Constructor Details
#initialize(test_runner_url, timeout = 10) ⇒ Runner
Returns a new instance of Runner.
11 12 13 14 |
# File 'lib/mumukit/bridge/runner.rb', line 11 def initialize(test_runner_url, timeout=10) @test_runner_url = test_runner_url @timeout = timeout end |
Instance Attribute Details
#test_runner_url ⇒ Object
Returns the value of attribute test_runner_url.
9 10 11 |
# File 'lib/mumukit/bridge/runner.rb', line 9 def test_runner_url @test_runner_url end |
Instance Method Details
#assets(path, options = {}) ⇒ Object
77 78 79 |
# File 'lib/mumukit/bridge/runner.rb', line 77 def assets(path, ={}) raw_get_to_server "assets/#{path}", end |
#importable_info ⇒ Object
50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 |
# File 'lib/mumukit/bridge/runner.rb', line 50 def importable_info @language_json ||= info.merge('url' => test_runner_url) { name: @language_json['name'], comment_type: @language_json['comment_type'], test_runner_url: @language_json['url'], output_content_type: @language_json['output_content_type'], prompt: (@language_json.dig('language', 'prompt') || 'ム') + ' ', extension: @language_json.dig('language', 'extension'), highlight_mode: @language_json.dig('language', 'ace_mode'), visible_success_output: @language_json.dig('language', 'graphic').present?, devicon: @language_json.dig('language', 'icon', 'name'), triable: @language_json.dig('features', 'try').present?, feedback: @language_json.dig('features', 'feedback').present?, queriable: @language_json.dig('features', 'query').present?, stateful_console: @language_json.dig('features', 'stateful').present?, test_extension: @language_json.dig('test_framework', 'test_extension'), test_template: @language_json.dig('test_framework', 'template'), layout_js_urls: get_assets_for(:layout, 'js'), layout_html_urls: get_assets_for(:layout, 'html'), layout_css_urls: get_assets_for(:layout, 'css'), editor_js_urls: get_assets_for(:editor, 'js'), editor_html_urls: get_assets_for(:editor, 'html'), editor_css_urls: get_assets_for(:editor, 'css') } end |
#info(options = {}) ⇒ Object
81 82 83 |
# File 'lib/mumukit/bridge/runner.rb', line 81 def info(={}) JSON.parse raw_get_to_server(:info, .merge(content_type: :json)) end |
#post_to_server(request, route) ⇒ Object
96 97 98 99 100 101 102 103 104 |
# File 'lib/mumukit/bridge/runner.rb', line 96 def post_to_server(request, route) JSON.parse RestClient::Request.new( method: :post, url: "#{test_runner_url}/#{route}", payload: request.to_json, timeout: @timeout, open_timeout: @timeout, headers: {content_type: :json}).execute() end |
#raw_get_to_server(route, options) ⇒ Object
92 93 94 |
# File 'lib/mumukit/bridge/runner.rb', line 92 def raw_get_to_server(route, ) RestClient.get("#{test_runner_url}/#{route}", ) end |
#run_query!(request) ⇒ Object
31 32 33 34 35 |
# File 'lib/mumukit/bridge/runner.rb', line 31 def run_query!(request) with_server_response request, 'query' do |it| {status: it['exit'].to_sym, result: it['out']} end end |
#run_tests!(request) ⇒ Object
Expects a hash
{test: string, extra: string, content: string, expectations: [{binding:string, inspection: string})]}
Returns a hash
{result: string,
test_results: [{title:string, status:symbol, result:string}],
status: :passed|:failed|:errored|:aborted|:passed_with_warnings,
expectation_results: [{binding:string, inspection:string, result:symbol}],
feedback: string}
24 25 26 27 28 29 |
# File 'lib/mumukit/bridge/runner.rb', line 24 def run_tests!(request) with_server_response request, 'test' do |response| response_type = ResponseType.for_response response response_type.parse response end end |
#run_try!(request) ⇒ Object
37 38 39 40 41 42 43 44 45 46 47 48 |
# File 'lib/mumukit/bridge/runner.rb', line 37 def run_try!(request) with_server_response request, 'try' do |it| { status: it['exit'].to_sym, result: it['out'], query_result: it['queryResult'].try do |it| { status: it['status'].to_sym, result: it['result'] } end } end end |
#with_server_response(request, route, &action) ⇒ Object
85 86 87 88 89 90 |
# File 'lib/mumukit/bridge/runner.rb', line 85 def with_server_response(request, route, &action) response = post_to_server(request, route) action.call(response) rescue Exception => e {result: e., status: :aborted} end |