inferno_core 0.5.1 → 0.5.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/inferno/apps/cli/execute.rb +49 -4
- data/lib/inferno/apps/cli/main.rb +10 -2
- data/lib/inferno/apps/web/application.rb +4 -0
- data/lib/inferno/apps/web/index.html.erb +12 -4
- data/lib/inferno/config/boot/executor.rb +1 -0
- data/lib/inferno/ext/json_parser.rb +11 -0
- data/lib/inferno/public/bundle.js +34 -34
- data/lib/inferno/version.rb +1 -1
- metadata +4 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 41fdda8d351bb039a654949835c70ed19999cbce0ccba735b4154774cdc61225
|
4
|
+
data.tar.gz: 1c0a86692b2a231af565fd6695fcc229d0ea51c2acf55e4236a5ff551e0a83a9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5612c208f1aa22d56bdb168754e50c7dfb67d2b71a5b1699d42382f56994c782771d76865feb533cc1e87052d47540fd7d2fca5c708f5c2d02718c55b033c498
|
7
|
+
data.tar.gz: 6dd48102d0ba87b339f5534312a949f390b69ad26741e2be73db1ec287b281efa9842c814ca6e8a4250745597909111b10759b2d171711686025c060194dad61
|
@@ -44,10 +44,12 @@ module Inferno
|
|
44
44
|
|
45
45
|
self.options = options
|
46
46
|
|
47
|
-
outputter.print_start_message(options)
|
47
|
+
outputter.print_start_message(self.options)
|
48
|
+
|
49
|
+
load_preset_file_and_set_preset_id
|
48
50
|
|
49
51
|
results = []
|
50
|
-
outputter.print_around_run(options) do
|
52
|
+
outputter.print_around_run(self.options) do
|
51
53
|
if all_selected_groups_and_tests.empty?
|
52
54
|
test_run = create_test_run(suite)
|
53
55
|
run_one(suite, test_run)
|
@@ -102,6 +104,18 @@ module Inferno
|
|
102
104
|
@outputter ||= OUTPUTTERS[options[:outputter]].new
|
103
105
|
end
|
104
106
|
|
107
|
+
def load_preset_file_and_set_preset_id
|
108
|
+
return unless options[:preset_file]
|
109
|
+
raise StandardError, 'Cannot use `--preset-id` and `--preset-file` options together' if options[:preset_id]
|
110
|
+
|
111
|
+
raise StandardError, "File #{options[:preset_file]} not found" unless File.exist? options[:preset_file]
|
112
|
+
|
113
|
+
options[:preset_id] = JSON.parse(File.read(options[:preset_file]))['id']
|
114
|
+
raise StandardError, "Preset #{options[:preset_file]} is missing id" if options[:preset_id].nil?
|
115
|
+
|
116
|
+
presets_repo.insert_from_file(options[:preset_file])
|
117
|
+
end
|
118
|
+
|
105
119
|
def all_selected_groups_and_tests
|
106
120
|
@all_selected_groups_and_tests ||= runnables_by_short_id + groups + tests
|
107
121
|
end
|
@@ -109,7 +123,7 @@ module Inferno
|
|
109
123
|
def run_one(runnable, test_run)
|
110
124
|
verify_runnable(
|
111
125
|
runnable,
|
112
|
-
thor_hash_to_inputs_array(
|
126
|
+
thor_hash_to_inputs_array(inputs_and_preset),
|
113
127
|
test_session.suite_options
|
114
128
|
)
|
115
129
|
|
@@ -118,6 +132,33 @@ module Inferno
|
|
118
132
|
dispatch_job(test_run)
|
119
133
|
end
|
120
134
|
|
135
|
+
def inputs_and_preset
|
136
|
+
if preset
|
137
|
+
preset_inputs = preset.inputs.to_h do |preset_input|
|
138
|
+
[preset_input[:name], preset_input[:value]]
|
139
|
+
end
|
140
|
+
|
141
|
+
options.fetch(:inputs, {}).reverse_merge(preset_inputs)
|
142
|
+
else
|
143
|
+
options.fetch(:inputs, {})
|
144
|
+
end
|
145
|
+
end
|
146
|
+
|
147
|
+
def preset
|
148
|
+
return unless options[:preset_id]
|
149
|
+
|
150
|
+
@preset ||= presets_repo.find(options[:preset_id])
|
151
|
+
|
152
|
+
raise StandardError, "Preset #{options[:preset_id]} not found" if @preset.nil?
|
153
|
+
|
154
|
+
unless presets_repo.presets_for_suite(suite.id).include?(@preset)
|
155
|
+
raise StandardError,
|
156
|
+
"Preset #{options[:preset_id]} is incompatible with suite #{suite.id}"
|
157
|
+
end
|
158
|
+
|
159
|
+
@preset
|
160
|
+
end
|
161
|
+
|
121
162
|
def suite
|
122
163
|
@suite ||= Inferno::Repositories::TestSuites.new.find(options[:suite])
|
123
164
|
|
@@ -156,6 +197,10 @@ module Inferno
|
|
156
197
|
@session_data_repo ||= Inferno::Repositories::SessionData.new
|
157
198
|
end
|
158
199
|
|
200
|
+
def presets_repo
|
201
|
+
@presets_repo ||= Inferno::Repositories::Presets.new
|
202
|
+
end
|
203
|
+
|
159
204
|
def test_session
|
160
205
|
@test_session ||= test_sessions_repo.create({
|
161
206
|
test_suite_id: suite.id,
|
@@ -169,7 +214,7 @@ module Inferno
|
|
169
214
|
{
|
170
215
|
test_session_id: test_session.id,
|
171
216
|
runnable_id_key(runnable) => runnable.id,
|
172
|
-
inputs: thor_hash_to_inputs_array(
|
217
|
+
inputs: thor_hash_to_inputs_array(inputs_and_preset)
|
173
218
|
}
|
174
219
|
end
|
175
220
|
|
@@ -125,7 +125,15 @@ module Inferno
|
|
125
125
|
option :inputs,
|
126
126
|
aliases: ['-i'],
|
127
127
|
type: :hash,
|
128
|
-
desc: 'Inputs (i.e: --inputs=foo:bar goo:baz)'
|
128
|
+
desc: 'Inputs (i.e: --inputs=foo:bar goo:baz); will merge and override preset inputs'
|
129
|
+
option :preset_id,
|
130
|
+
aliases: ['-P'],
|
131
|
+
type: :string,
|
132
|
+
desc: 'Inferno preset id; cannot be used with `--preset-file`'
|
133
|
+
option :preset_file,
|
134
|
+
aliases: ['-p'],
|
135
|
+
type: :string,
|
136
|
+
desc: 'Path to an Inferno preset file for inputs; cannot be used with `--preset-id`'
|
129
137
|
option :outputter,
|
130
138
|
aliases: ['-o'],
|
131
139
|
default: 'console',
|
@@ -142,7 +150,7 @@ module Inferno
|
|
142
150
|
desc: 'Display this message'
|
143
151
|
def execute
|
144
152
|
Execute.boot_full_inferno
|
145
|
-
Execute.new.run(options)
|
153
|
+
Execute.new.run(options.dup) # dup to unfreeze Thor options
|
146
154
|
end
|
147
155
|
|
148
156
|
# https://github.com/rails/thor/issues/244 - Make Thor exit(1) on Errors/Exceptions
|
@@ -1,6 +1,10 @@
|
|
1
1
|
require 'hanami/middleware/body_parser'
|
2
2
|
require_relative 'router'
|
3
3
|
|
4
|
+
# Only required to monkey patch the JSON parser to support application/fhir+json
|
5
|
+
require 'hanami/middleware/body_parser/json_parser'
|
6
|
+
require_relative '../../ext/json_parser'
|
7
|
+
|
4
8
|
module Inferno
|
5
9
|
module Web
|
6
10
|
def self.app
|
@@ -9,10 +9,18 @@
|
|
9
9
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
10
10
|
<meta name="theme-color" content="#000000" />
|
11
11
|
<meta id="base-path" name="base-path" content="<%= Inferno::Application['base_path'] %>">
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
/>
|
12
|
+
|
13
|
+
<!-- Social media link unfurling meta tags -->
|
14
|
+
<title>Inferno Test Session</title>
|
15
|
+
<link rel="canonical" href="<%= Inferno::Application['base_url'] %>" />
|
16
|
+
<meta name="application-name" content="Inferno" />
|
17
|
+
<meta name="og:image" content="<%= Inferno::Application['inferno_host'] %><%= Inferno::Application['public_path'] %>/logo192.png" />
|
18
|
+
<meta name="og:type" content="website" />
|
19
|
+
<meta name="og:url" content="<%= Inferno::Application['base_url'] %>" />
|
20
|
+
<meta name="og:site_name" content="Inferno" />
|
21
|
+
<meta name="twitter:card" content="summary" />
|
22
|
+
<meta name="twitter:image" content="<%= Inferno::Application['inferno_host'] %><%= Inferno::Application['public_path'] %>/logo192.png" />
|
23
|
+
|
16
24
|
<link rel="apple-touch-icon" href="<%= Inferno::Application['public_path'] %>/logo192.png" />
|
17
25
|
<!--
|
18
26
|
manifest.json provides metadata used when your web app is installed on a
|