class GobstonesPrecompileHook
Constants
- DEFAULT_TIMEOUT
Attributes
batch[RW]
Public Instance Methods
add_missing_headers!(request)
click to toggle source
# File lib/precompile_hook.rb, line 38 def add_missing_headers!(request) request.test.gsub! /(.*(initial_board|final_board): \|.*\n)(?!.*GBB\/1\.0.*)/, "\\1 GBB/1.0\\3\n" end
command_line(filename)
click to toggle source
# File lib/precompile_hook.rb, line 13 def command_line(filename) "gobstones-cli --batch #{filename} #{locale_argument} #{timeout_argument}" end
compile(request)
click to toggle source
Calls superclass method
# File lib/precompile_hook.rb, line 29 def compile(request) add_missing_headers! request @locale = request[:locale] file = super request struct request.to_h.merge precompiled_batch: @batch, precompiled_result: run!(file) end
compile_file_content(request)
click to toggle source
# File lib/precompile_hook.rb, line 42 def compile_file_content(request) @batch = Gobstones::BatchParser.parse(request) @batch.to_json end
locale_argument()
click to toggle source
# File lib/precompile_hook.rb, line 17 def locale_argument "--language #{@locale}" if @locale end
post_process_file(_file, result, status)
click to toggle source
# File lib/precompile_hook.rb, line 47 def post_process_file(_file, result, status) if status.passed? result = result.parse_as_json status = :aborted if is_timeout? result and !expects_timeout? end [result, status] end
tempfile_extension()
click to toggle source
# File lib/precompile_hook.rb, line 9 def tempfile_extension '.json' end
timeout()
click to toggle source
# File lib/precompile_hook.rb, line 25 def timeout (ENV['MUMUKI_GOBSTONES_TIMEOUT'] || DEFAULT_TIMEOUT).to_i * 1000 end
timeout_argument()
click to toggle source
# File lib/precompile_hook.rb, line 21 def timeout_argument "--timeout " + timeout.to_s end
Private Instance Methods
expects_timeout?()
click to toggle source
# File lib/precompile_hook.rb, line 58 def expects_timeout? @batch.options[:expect_endless_while] || @batch.examples.any? { |it| it[:postconditions][:error] == 'timeout' } end
is_timeout?(result)
click to toggle source
# File lib/precompile_hook.rb, line 62 def is_timeout?(result) result[0]&.dig(:result, :finalBoardError, :reason, :code) === 'timeout' end