inferno_core 0.4.27 → 0.4.28
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/main.rb +9 -0
- data/lib/inferno/apps/cli/new.rb +103 -0
- data/lib/inferno/apps/web/controllers/test_runs/destroy.rb +1 -1
- data/lib/inferno/apps/web/controllers/test_sessions/create.rb +3 -1
- data/lib/inferno/dsl/fhir_resource_validation.rb +1 -1
- data/lib/inferno/dsl/fhir_validation.rb +1 -1
- data/lib/inferno/dsl/resume_test_route.rb +6 -1
- data/lib/inferno/dsl/runnable.rb +4 -1
- data/lib/inferno/public/bundle.js +62 -12
- data/lib/inferno/repositories/results.rb +2 -6
- data/lib/inferno/repositories/test_runs.rb +1 -1
- data/lib/inferno/result_summarizer.rb +4 -0
- data/lib/inferno/test_runner.rb +9 -0
- data/lib/inferno/utils/middleware/request_logger.rb +8 -1
- data/lib/inferno/utils/named_thor_actions.rb +33 -0
- data/lib/inferno/version.rb +1 -1
- metadata +18 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b08f117a70f17bef4baa571895c76bd3b18b6b3d052f4f0f3069760e84d977ab
|
4
|
+
data.tar.gz: 76635f57afb3288646c56083895efa21123de7797900f74a1a2fe8fe3c035b47
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a846c92bede4a61f7c722340392a4913c9b9acddc569c3133a508c932666df8b201e7272778a3cefa40eb272af7b28422522729fa807897c784c32fee1e5d7e2
|
7
|
+
data.tar.gz: 2a2cd2e92157505409927534bd54263775c027f1a76f4f722e4c8272353ef249e095ae49b1d980d35dcc5b331782ad4913579d1d0e212f793754bf24ad91a942
|
@@ -3,6 +3,8 @@ require_relative 'migration'
|
|
3
3
|
require_relative 'services'
|
4
4
|
require_relative 'suite'
|
5
5
|
require_relative 'suites'
|
6
|
+
require_relative 'new'
|
7
|
+
require_relative '../../version'
|
6
8
|
|
7
9
|
module Inferno
|
8
10
|
module CLI
|
@@ -49,6 +51,13 @@ module Inferno
|
|
49
51
|
|
50
52
|
desc 'suite SUBCOMMAND ...ARGS', 'Perform suite-based operations'
|
51
53
|
subcommand 'suite', Suite
|
54
|
+
|
55
|
+
register(New, 'new', 'new TEST_KIT_NAME', 'Run `inferno new --help` for full help')
|
56
|
+
|
57
|
+
desc 'version', "Output Inferno core version (#{Inferno::VERSION})"
|
58
|
+
def version
|
59
|
+
puts "Inferno Core v#{Inferno::VERSION}"
|
60
|
+
end
|
52
61
|
end
|
53
62
|
end
|
54
63
|
end
|
@@ -0,0 +1,103 @@
|
|
1
|
+
require 'thor'
|
2
|
+
require 'bundler'
|
3
|
+
require_relative '../../utils/named_thor_actions'
|
4
|
+
require_relative '../../version'
|
5
|
+
|
6
|
+
module Inferno
|
7
|
+
module CLI
|
8
|
+
class New < Thor::Group
|
9
|
+
include Thor::Actions
|
10
|
+
include Inferno::Utils::NamedThorActions
|
11
|
+
|
12
|
+
desc <<~HELP
|
13
|
+
Generate a new Inferno test kit for FHIR software testing
|
14
|
+
|
15
|
+
Examples:
|
16
|
+
|
17
|
+
`inferno new test_fhir_app`
|
18
|
+
=> generates an Inferno app
|
19
|
+
|
20
|
+
`inferno new test_my_ig -a MyName`
|
21
|
+
=> generates Inferno app and specifies MyName as gemspec author
|
22
|
+
|
23
|
+
https://inferno-framework.github.io/index.html
|
24
|
+
HELP
|
25
|
+
|
26
|
+
def self.banner
|
27
|
+
'inferno new TEST_KIT_NAME'
|
28
|
+
end
|
29
|
+
|
30
|
+
def self.source_root
|
31
|
+
File.join(__dir__, 'templates')
|
32
|
+
end
|
33
|
+
|
34
|
+
argument :name,
|
35
|
+
type: :string,
|
36
|
+
required: true,
|
37
|
+
desc: 'name for new Inferno project'
|
38
|
+
class_option :author,
|
39
|
+
type: :string,
|
40
|
+
aliases: '-a',
|
41
|
+
default: [],
|
42
|
+
repeatable: true,
|
43
|
+
desc: "Author names for gemspec file; you may use '-a' multiple times"
|
44
|
+
class_option :skip_bundle,
|
45
|
+
type: :boolean,
|
46
|
+
aliases: '-b',
|
47
|
+
default: false,
|
48
|
+
desc: 'Do not run bundle install'
|
49
|
+
|
50
|
+
add_runtime_options!
|
51
|
+
|
52
|
+
def create_app
|
53
|
+
directory('.', root_name, { mode: :preserve, recursive: true, verbose: !options['quiet'] })
|
54
|
+
|
55
|
+
bundle_install
|
56
|
+
inferno_migrate
|
57
|
+
|
58
|
+
say_unless_quiet "Created #{root_name} Inferno test kit!", :green
|
59
|
+
|
60
|
+
return unless options['pretend']
|
61
|
+
|
62
|
+
say_unless_quiet 'This was a dry run; re-run without `--pretend` to actually create project',
|
63
|
+
:yellow
|
64
|
+
end
|
65
|
+
|
66
|
+
private
|
67
|
+
|
68
|
+
def ig_path
|
69
|
+
File.join('lib', library_name, 'igs')
|
70
|
+
end
|
71
|
+
|
72
|
+
def authors
|
73
|
+
options['author'].presence || [default_author]
|
74
|
+
end
|
75
|
+
|
76
|
+
def default_author
|
77
|
+
ENV['USER'] || ENV['USERNAME'] || 'PUT_YOUR_NAME_HERE'
|
78
|
+
end
|
79
|
+
|
80
|
+
def bundle_install
|
81
|
+
return if options['skip_bundle']
|
82
|
+
|
83
|
+
inside(root_name) do
|
84
|
+
Bundler.with_unbundled_env do
|
85
|
+
run 'bundle install', verbose: !options['quiet'], capture: options['quiet']
|
86
|
+
end
|
87
|
+
end
|
88
|
+
end
|
89
|
+
|
90
|
+
def inferno_migrate
|
91
|
+
return if options['skip_bundle']
|
92
|
+
|
93
|
+
inside(root_name) do
|
94
|
+
run 'bundle exec inferno migrate', verbose: !options['quiet'], capture: options['quiet']
|
95
|
+
end
|
96
|
+
end
|
97
|
+
|
98
|
+
def say_unless_quiet(*args)
|
99
|
+
say(*args) unless options['quiet']
|
100
|
+
end
|
101
|
+
end
|
102
|
+
end
|
103
|
+
end
|
@@ -21,7 +21,7 @@ module Inferno
|
|
21
21
|
|
22
22
|
if test_run_is_waiting
|
23
23
|
waiting_result = results_repo.find_waiting_result(test_run_id: test_run.id)
|
24
|
-
results_repo.
|
24
|
+
results_repo.update_result(waiting_result.id, 'cancel', 'Test cancelled by user')
|
25
25
|
Jobs.perform(Jobs::ResumeTestRun, test_run.id)
|
26
26
|
end
|
27
27
|
|
@@ -10,7 +10,9 @@ module Inferno
|
|
10
10
|
|
11
11
|
def handle(req, res)
|
12
12
|
params = req.params.to_h
|
13
|
-
|
13
|
+
if req.body.string.present? && req.env['CONTENT_TYPE']&.include?('application/json')
|
14
|
+
params.merge!(JSON.parse(req.body.string).symbolize_keys)
|
15
|
+
end
|
14
16
|
|
15
17
|
session = repo.create(create_params(params))
|
16
18
|
|
@@ -28,6 +28,11 @@ module Inferno
|
|
28
28
|
self.class.singleton_class.instance_variable_get(:@tags)
|
29
29
|
end
|
30
30
|
|
31
|
+
# @private
|
32
|
+
def result
|
33
|
+
self.class.singleton_class.instance_variable_get(:@result)
|
34
|
+
end
|
35
|
+
|
31
36
|
# @private
|
32
37
|
def find_test_run(test_run_identifier)
|
33
38
|
test_runs_repo.find_latest_waiting_by_identifier(test_run_identifier)
|
@@ -40,7 +45,7 @@ module Inferno
|
|
40
45
|
|
41
46
|
# @private
|
42
47
|
def update_result(waiting_result)
|
43
|
-
results_repo.
|
48
|
+
results_repo.update_result(waiting_result.id, result)
|
44
49
|
end
|
45
50
|
|
46
51
|
# @private
|
data/lib/inferno/dsl/runnable.rb
CHANGED
@@ -342,16 +342,19 @@ module Inferno
|
|
342
342
|
# Router](https://github.com/hanami/router/tree/f41001d4c3ee9e2d2c7bb142f74b43f8e1d3a265#a-beautiful-dsl)
|
343
343
|
# can be used here.
|
344
344
|
# @param tags [Array<String>] a list of tags to assign to the request
|
345
|
+
# @param result [String] the result for the waiting test. Must be one of:
|
346
|
+
# 'pass', 'fail', 'skip', 'omit', 'cancel'
|
345
347
|
# @yield This method takes a block which must return the identifier
|
346
348
|
# defined when a test was set to wait for the test run that hit this
|
347
349
|
# route. The block has access to the `request` method which returns a
|
348
350
|
# {Inferno::Entities::Request} object with the information for the
|
349
351
|
# incoming request.
|
350
352
|
# @return [void]
|
351
|
-
def resume_test_route(method, path, tags: [], &block)
|
353
|
+
def resume_test_route(method, path, tags: [], result: 'pass', &block)
|
352
354
|
route_class = Class.new(ResumeTestRoute) do |klass|
|
353
355
|
klass.singleton_class.instance_variable_set(:@test_run_identifier_block, block)
|
354
356
|
klass.singleton_class.instance_variable_set(:@tags, tags)
|
357
|
+
klass.singleton_class.instance_variable_set(:@result, result)
|
355
358
|
end
|
356
359
|
|
357
360
|
route(method, path, route_class)
|