Class: SqliteTestHook
- Inherits:
-
Mumukit::Templates::FileHook
- Object
- Mumukit::Templates::FileHook
- SqliteTestHook
- Defined in:
- lib/test_hook.rb
Overview
This Hook allow to run Sqlite Worker from an ad-hoc program that receives .json files.
Instance Method Summary collapse
-
#command_line(filename) ⇒ Object
Define the command to be run by sqlite worker.
-
#compile_file_content(request) ⇒ Object
Transform Mumuki Request into Docker file style Request = { test: { type: (string) query|dataset, seed: (string) sql code to populate tables, expected: (string) query sentence | resulting table }, extra: (string) sql code to create tables, content: (string) student’s solution, expectations: [] # not using }.
-
#initialize(config = nil) ⇒ SqliteTestHook
constructor
A new instance of SqliteTestHook.
-
#post_process_file(_file, result, status) ⇒ Object
Define how output results Expected: { “expected”: [ “namenTest 1.1nTest 1.2nTest 1.3n”, “namenTest 2.1nTest 2.2nTest 2.3n” ], “student”: [ “id|namen1|Test 1.1n2|Test 1.2n3|Test 1.3n”, “id|namen1|Test 2.1n2|Test 2.2n3|Test 2.3n” ] }.
-
#tempfile_extension ⇒ Object
Just define file extension.
Constructor Details
#initialize(config = nil) ⇒ SqliteTestHook
Returns a new instance of SqliteTestHook.
12 13 14 15 16 17 18 19 20 |
# File 'lib/test_hook.rb', line 12 def initialize(config = nil) super(config) @test_parsers = { query: Sqlite::QueryTestParser, datasets: Sqlite::DatasetTestParser, final_dataset: Sqlite::FinalDatasetTestParser, } @test_parsers.default = Sqlite::InvalidTestParser end |
Instance Method Details
#command_line(filename) ⇒ Object
Define the command to be run by sqlite worker
28 29 30 |
# File 'lib/test_hook.rb', line 28 def command_line(filename) "runsql #{filename}" end |
#compile_file_content(request) ⇒ Object
Transform Mumuki Request into Docker file style Request = {
test: {
type: (string) query|dataset,
seed: (string) sql code to populate tables,
expected: (string) query sentence | resulting table
},
extra: (string) sql code to create tables,
content: (string) student's solution,
expectations: [] # not using
}
44 45 46 47 48 49 50 51 52 |
# File 'lib/test_hook.rb', line 44 def compile_file_content(request) tests = parse_tests request.test final = get_final_query { init: request.extra.strip, student: request.content.strip << final, tests: tests }.to_json end |
#post_process_file(_file, result, status) ⇒ Object
Define how output results Expected:
"expected": [
"name\nTest 1.1\nTest 1.2\nTest 1.3\n",
"name\nTest 2.1\nTest 2.2\nTest 2.3\n"
],
"student": [
"id|name\n1|Test 1.1\n2|Test 1.2\n3|Test 1.3\n",
"id|name\n1|Test 2.1\n2|Test 2.2\n3|Test 2.3\n"
]
66 67 68 69 70 71 72 73 74 75 76 77 78 |
# File 'lib/test_hook.rb', line 66 def post_process_file(_file, result, status) output = JSON.parse(result) case status when :passed expected, student = parse_output output framework.test expected, student when :failed [output['output'], status] else [output, status] end end |
#tempfile_extension ⇒ Object
Just define file extension
23 24 25 |
# File 'lib/test_hook.rb', line 23 def tempfile_extension '.json' end |