inferno_core 0.4.43 → 0.4.44

Sign up to get free protection for your applications and to get access to all the features.
Files changed (44) hide show
  1. checksums.yaml +4 -4
  2. data/lib/inferno/apps/cli/execute/console_outputter.rb +152 -0
  3. data/lib/inferno/apps/cli/execute.rb +269 -0
  4. data/lib/inferno/apps/cli/main.rb +73 -4
  5. data/lib/inferno/apps/cli/templates/.env.development +2 -1
  6. data/lib/inferno/apps/cli/templates/.env.production +2 -1
  7. data/lib/inferno/apps/cli/templates/.env.test +1 -0
  8. data/lib/inferno/apps/cli/templates/.gitignore +1 -0
  9. data/lib/inferno/apps/cli/templates/config/nginx.background.conf.tt +15 -0
  10. data/lib/inferno/apps/cli/templates/docker-compose.background.yml.tt +5 -0
  11. data/lib/inferno/apps/cli/templates/docker-compose.yml.tt +4 -0
  12. data/lib/inferno/apps/cli.rb +0 -1
  13. data/lib/inferno/apps/web/controllers/test_runs/create.rb +7 -32
  14. data/lib/inferno/apps/web/serializers/serializer.rb +3 -0
  15. data/lib/inferno/config/boot/executor.rb +14 -0
  16. data/lib/inferno/dsl/auth_info.rb +77 -72
  17. data/lib/inferno/dsl/fhir_client_builder.rb +2 -2
  18. data/lib/inferno/dsl/fhir_resource_validation.rb +4 -0
  19. data/lib/inferno/dsl/http_client_builder.rb +2 -2
  20. data/lib/inferno/dsl/links.rb +100 -0
  21. data/lib/inferno/dsl/runnable.rb +6 -1
  22. data/lib/inferno/entities/has_runnable.rb +1 -1
  23. data/lib/inferno/entities/test.rb +4 -4
  24. data/lib/inferno/entities/test_group.rb +2 -2
  25. data/lib/inferno/entities/test_suite.rb +2 -24
  26. data/lib/inferno/exceptions.rb +6 -0
  27. data/lib/inferno/ext/fhir_models.rb +3 -3
  28. data/lib/inferno/jobs.rb +4 -4
  29. data/lib/inferno/public/237.bundle.js +1 -0
  30. data/lib/inferno/public/assets.json +1 -1
  31. data/lib/inferno/public/bundle.js +42 -63
  32. data/lib/inferno/public/bundle.js.LICENSE.txt +5 -33
  33. data/lib/inferno/repositories/repository.rb +1 -1
  34. data/lib/inferno/result_summarizer.rb +1 -1
  35. data/lib/inferno/test_runner.rb +2 -2
  36. data/lib/inferno/utils/middleware/request_logger.rb +1 -1
  37. data/lib/inferno/utils/persist_inputs.rb +30 -0
  38. data/lib/inferno/utils/preset_template_generator.rb +1 -1
  39. data/lib/inferno/utils/verify_runnable.rb +15 -0
  40. data/lib/inferno/version.rb +1 -1
  41. data/spec/factories/result.rb +4 -0
  42. data/spec/fixtures/basic_test_group.rb +2 -1
  43. data/spec/fixtures/run_as_group_test_group.rb +11 -0
  44. metadata +24 -170
@@ -1,10 +1,3 @@
1
- /*!
2
- * Determine if an object is a Buffer
3
- *
4
- * @author Feross Aboukhadijeh <https://feross.org>
5
- * @license MIT
6
- */
7
-
8
1
  /*! js-yaml 4.1.0 https://github.com/nodeca/js-yaml @license MIT */
9
2
 
10
3
  /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */
@@ -60,27 +53,15 @@
60
53
  */
61
54
 
62
55
  /**
63
- * @license React
64
- * use-sync-external-store-shim.production.min.js
65
- *
66
- * Copyright (c) Facebook, Inc. and its affiliates.
67
- *
68
- * This source code is licensed under the MIT license found in the
69
- * LICENSE file in the root directory of this source tree.
70
- */
71
-
72
- /**
73
- * @license React
74
- * use-sync-external-store-shim/with-selector.production.min.js
75
- *
76
- * Copyright (c) Facebook, Inc. and its affiliates.
56
+ * @mui/styled-engine v6.1.1
77
57
  *
58
+ * @license MIT
78
59
  * This source code is licensed under the MIT license found in the
79
60
  * LICENSE file in the root directory of this source tree.
80
61
  */
81
62
 
82
63
  /**
83
- * @remix-run/router v1.15.2
64
+ * @remix-run/router v1.19.2
84
65
  *
85
66
  * Copyright (c) Remix Software Inc.
86
67
  *
@@ -91,7 +72,7 @@
91
72
  */
92
73
 
93
74
  /**
94
- * React Router DOM v6.22.2
75
+ * React Router DOM v6.26.2
95
76
  *
96
77
  * Copyright (c) Remix Software Inc.
97
78
  *
@@ -102,7 +83,7 @@
102
83
  */
103
84
 
104
85
  /**
105
- * React Router v6.22.2
86
+ * React Router v6.26.2
106
87
  *
107
88
  * Copyright (c) Remix Software Inc.
108
89
  *
@@ -120,12 +101,3 @@
120
101
  * This source code is licensed under the MIT license found in the
121
102
  * LICENSE file in the root directory of this source tree.
122
103
  */
123
-
124
- /** @license React v17.0.2
125
- * react-is.production.min.js
126
- *
127
- * Copyright (c) Facebook, Inc. and its affiliates.
128
- *
129
- * This source code is licensed under the MIT license found in the
130
- * LICENSE file in the root directory of this source tree.
131
- */
@@ -108,7 +108,7 @@ module Inferno
108
108
  end
109
109
 
110
110
  def non_db_params(params)
111
- params.reject { |key, _value| self.class::Model.columns.include? key }
111
+ params.except(*self.class::Model.columns)
112
112
  end
113
113
 
114
114
  def handle_non_db_params(params)
@@ -1,4 +1,4 @@
1
- require_relative './result_collection'
1
+ require_relative 'result_collection'
2
2
  module Inferno
3
3
  # @private
4
4
  # This class takes an array of results and determines the overall result. This
@@ -1,5 +1,5 @@
1
- require_relative './result_summarizer'
2
- require_relative './utils/markdown_formatter'
1
+ require_relative 'result_summarizer'
2
+ require_relative 'utils/markdown_formatter'
3
3
 
4
4
  module Inferno
5
5
  # @private
@@ -47,7 +47,7 @@ module Inferno
47
47
  logger.info("#{status} in #{elapsed.in_milliseconds} ms")
48
48
  return unless body.present?
49
49
 
50
- body = body.is_a?(Array) ? body.join : body
50
+ body = body.join if body.is_a?(Array)
51
51
 
52
52
  if body.length > 100 && !verbose_logging?
53
53
  logger.info("#{body[0..100]}...")
@@ -0,0 +1,30 @@
1
+ module Inferno
2
+ module Utils
3
+ # @private
4
+ module PersistInputs
5
+ def persist_inputs(session_data_repo, params, test_run)
6
+ available_inputs = test_run.runnable.available_inputs
7
+ params[:inputs]&.each do |input_params|
8
+ input =
9
+ available_inputs
10
+ .find { |_, runnable_input| runnable_input.name == input_params[:name] }
11
+ &.last
12
+
13
+ if input.nil?
14
+ Inferno::Application['logger'].warn(
15
+ "Unknown input `#{input_params[:name]}` for #{test_run.runnable.id}: #{test_run.runnable.title}"
16
+ )
17
+ next
18
+ end
19
+
20
+ session_data_repo.save(
21
+ test_session_id: test_run.test_session_id,
22
+ name: input.name,
23
+ value: input_params[:value],
24
+ type: input.type
25
+ )
26
+ end
27
+ end
28
+ end
29
+ end
30
+ end
@@ -19,7 +19,7 @@ module Inferno
19
19
  {}.tap do |input|
20
20
  input[:name] = original_input.delete(:name)
21
21
  input[:value] = (original_input.delete(:default) if original_input.key? :default)
22
- original_input.each { |key, value| input["_#{key}".to_sym] = value }
22
+ original_input.each { |key, value| input[:"_#{key}"] = value }
23
23
  end
24
24
  end
25
25
  end
@@ -0,0 +1,15 @@
1
+ require_relative '../exceptions'
2
+
3
+ module Inferno
4
+ module Utils
5
+ # @private
6
+ module VerifyRunnable
7
+ def verify_runnable(runnable, inputs, selected_suite_options)
8
+ missing_inputs = runnable&.missing_inputs(inputs, selected_suite_options)
9
+ user_runnable = runnable&.user_runnable?
10
+ raise Inferno::Exceptions::RequiredInputsNotFound, missing_inputs if missing_inputs&.any?
11
+ raise Inferno::Exceptions::NotUserRunnableException unless user_runnable
12
+ end
13
+ end
14
+ end
15
+ end
@@ -1,4 +1,4 @@
1
1
  module Inferno
2
2
  # Standard patterns for gem versions: https://guides.rubygems.org/patterns/
3
- VERSION = '0.4.43'.freeze
3
+ VERSION = '0.4.44'.freeze
4
4
  end
@@ -42,5 +42,9 @@ FactoryBot.define do
42
42
  repo_create_list(:request, evaluator.request_count, result_id: instance.id)
43
43
  )
44
44
  end
45
+
46
+ factory :random_result do
47
+ result { Inferno::Entities::Result::RESULT_OPTIONS.sample }
48
+ end
45
49
  end
46
50
  end
@@ -4,7 +4,8 @@ module BasicTestSuite
4
4
 
5
5
  input :input1, :input2
6
6
  test 'demo_test' do
7
- 1 + 1
7
+ id :demo_test
8
+ run { 1 + 1 }
8
9
  end
9
10
  end
10
11
  end
@@ -0,0 +1,11 @@
1
+ module BasicTestSuite
2
+ class DefGroup < Inferno::Entities::TestGroup
3
+ title 'DEF Group'
4
+
5
+ run_as_group
6
+
7
+ test 'this_test_cannot_run_alone' do
8
+ run { 2 + 2 }
9
+ end
10
+ end
11
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: inferno_core
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.43
4
+ version: 0.4.44
5
5
  platform: ruby
6
6
  authors:
7
7
  - Stephen MacVicar
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2024-09-27 00:00:00.000000000 Z
13
+ date: 2024-10-29 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: activesupport
@@ -236,6 +236,20 @@ dependencies:
236
236
  - - '='
237
237
  - !ruby/object:Gem::Version
238
238
  version: 3.11.0
239
+ - !ruby/object:Gem::Dependency
240
+ name: pastel
241
+ requirement: !ruby/object:Gem::Requirement
242
+ requirements:
243
+ - - "~>"
244
+ - !ruby/object:Gem::Version
245
+ version: 0.8.0
246
+ type: :runtime
247
+ prerelease: false
248
+ version_requirements: !ruby/object:Gem::Requirement
249
+ requirements:
250
+ - - "~>"
251
+ - !ruby/object:Gem::Version
252
+ version: 0.8.0
239
253
  - !ruby/object:Gem::Dependency
240
254
  name: pry
241
255
  requirement: !ruby/object:Gem::Requirement
@@ -362,174 +376,6 @@ dependencies:
362
376
  - - "~>"
363
377
  - !ruby/object:Gem::Version
364
378
  version: 0.7.1
365
- - !ruby/object:Gem::Dependency
366
- name: codecov
367
- requirement: !ruby/object:Gem::Requirement
368
- requirements:
369
- - - '='
370
- - !ruby/object:Gem::Version
371
- version: 0.5.2
372
- type: :development
373
- prerelease: false
374
- version_requirements: !ruby/object:Gem::Requirement
375
- requirements:
376
- - - '='
377
- - !ruby/object:Gem::Version
378
- version: 0.5.2
379
- - !ruby/object:Gem::Dependency
380
- name: database_cleaner-sequel
381
- requirement: !ruby/object:Gem::Requirement
382
- requirements:
383
- - - "~>"
384
- - !ruby/object:Gem::Version
385
- version: '1.8'
386
- type: :development
387
- prerelease: false
388
- version_requirements: !ruby/object:Gem::Requirement
389
- requirements:
390
- - - "~>"
391
- - !ruby/object:Gem::Version
392
- version: '1.8'
393
- - !ruby/object:Gem::Dependency
394
- name: factory_bot
395
- requirement: !ruby/object:Gem::Requirement
396
- requirements:
397
- - - "~>"
398
- - !ruby/object:Gem::Version
399
- version: '6.1'
400
- type: :development
401
- prerelease: false
402
- version_requirements: !ruby/object:Gem::Requirement
403
- requirements:
404
- - - "~>"
405
- - !ruby/object:Gem::Version
406
- version: '6.1'
407
- - !ruby/object:Gem::Dependency
408
- name: rack-test
409
- requirement: !ruby/object:Gem::Requirement
410
- requirements:
411
- - - "~>"
412
- - !ruby/object:Gem::Version
413
- version: '1.1'
414
- type: :development
415
- prerelease: false
416
- version_requirements: !ruby/object:Gem::Requirement
417
- requirements:
418
- - - "~>"
419
- - !ruby/object:Gem::Version
420
- version: '1.1'
421
- - !ruby/object:Gem::Dependency
422
- name: rspec
423
- requirement: !ruby/object:Gem::Requirement
424
- requirements:
425
- - - "~>"
426
- - !ruby/object:Gem::Version
427
- version: '3.10'
428
- type: :development
429
- prerelease: false
430
- version_requirements: !ruby/object:Gem::Requirement
431
- requirements:
432
- - - "~>"
433
- - !ruby/object:Gem::Version
434
- version: '3.10'
435
- - !ruby/object:Gem::Dependency
436
- name: rubocop
437
- requirement: !ruby/object:Gem::Requirement
438
- requirements:
439
- - - "~>"
440
- - !ruby/object:Gem::Version
441
- version: '1.9'
442
- type: :development
443
- prerelease: false
444
- version_requirements: !ruby/object:Gem::Requirement
445
- requirements:
446
- - - "~>"
447
- - !ruby/object:Gem::Version
448
- version: '1.9'
449
- - !ruby/object:Gem::Dependency
450
- name: rubocop-rake
451
- requirement: !ruby/object:Gem::Requirement
452
- requirements:
453
- - - '='
454
- - !ruby/object:Gem::Version
455
- version: 0.5.1
456
- type: :development
457
- prerelease: false
458
- version_requirements: !ruby/object:Gem::Requirement
459
- requirements:
460
- - - '='
461
- - !ruby/object:Gem::Version
462
- version: 0.5.1
463
- - !ruby/object:Gem::Dependency
464
- name: rubocop-rspec
465
- requirement: !ruby/object:Gem::Requirement
466
- requirements:
467
- - - "~>"
468
- - !ruby/object:Gem::Version
469
- version: '2.1'
470
- type: :development
471
- prerelease: false
472
- version_requirements: !ruby/object:Gem::Requirement
473
- requirements:
474
- - - "~>"
475
- - !ruby/object:Gem::Version
476
- version: '2.1'
477
- - !ruby/object:Gem::Dependency
478
- name: rubocop-sequel
479
- requirement: !ruby/object:Gem::Requirement
480
- requirements:
481
- - - '='
482
- - !ruby/object:Gem::Version
483
- version: 0.1.0
484
- type: :development
485
- prerelease: false
486
- version_requirements: !ruby/object:Gem::Requirement
487
- requirements:
488
- - - '='
489
- - !ruby/object:Gem::Version
490
- version: 0.1.0
491
- - !ruby/object:Gem::Dependency
492
- name: simplecov
493
- requirement: !ruby/object:Gem::Requirement
494
- requirements:
495
- - - '='
496
- - !ruby/object:Gem::Version
497
- version: 0.21.2
498
- type: :development
499
- prerelease: false
500
- version_requirements: !ruby/object:Gem::Requirement
501
- requirements:
502
- - - '='
503
- - !ruby/object:Gem::Version
504
- version: 0.21.2
505
- - !ruby/object:Gem::Dependency
506
- name: webmock
507
- requirement: !ruby/object:Gem::Requirement
508
- requirements:
509
- - - "~>"
510
- - !ruby/object:Gem::Version
511
- version: '3.11'
512
- type: :development
513
- prerelease: false
514
- version_requirements: !ruby/object:Gem::Requirement
515
- requirements:
516
- - - "~>"
517
- - !ruby/object:Gem::Version
518
- version: '3.11'
519
- - !ruby/object:Gem::Dependency
520
- name: yard
521
- requirement: !ruby/object:Gem::Requirement
522
- requirements:
523
- - - '='
524
- - !ruby/object:Gem::Version
525
- version: 0.9.26
526
- type: :development
527
- prerelease: false
528
- version_requirements: !ruby/object:Gem::Requirement
529
- requirements:
530
- - - '='
531
- - !ruby/object:Gem::Version
532
- version: 0.9.26
533
379
  description: Inferno Core is an open source tool for testing data exchanges enabled
534
380
  by the FHIR standand
535
381
  email:
@@ -544,6 +390,8 @@ files:
544
390
  - lib/inferno.rb
545
391
  - lib/inferno/apps/cli.rb
546
392
  - lib/inferno/apps/cli/console.rb
393
+ - lib/inferno/apps/cli/execute.rb
394
+ - lib/inferno/apps/cli/execute/console_outputter.rb
547
395
  - lib/inferno/apps/cli/main.rb
548
396
  - lib/inferno/apps/cli/migration.rb
549
397
  - lib/inferno/apps/cli/new.rb
@@ -624,6 +472,7 @@ files:
624
472
  - lib/inferno/config/application.rb
625
473
  - lib/inferno/config/boot.rb
626
474
  - lib/inferno/config/boot/db.rb
475
+ - lib/inferno/config/boot/executor.rb
627
476
  - lib/inferno/config/boot/logging.rb
628
477
  - lib/inferno/config/boot/presets.rb
629
478
  - lib/inferno/config/boot/sidekiq.rb
@@ -655,6 +504,7 @@ files:
655
504
  - lib/inferno/dsl/input_output_handling.rb
656
505
  - lib/inferno/dsl/jwks.json
657
506
  - lib/inferno/dsl/jwks.rb
507
+ - lib/inferno/dsl/links.rb
658
508
  - lib/inferno/dsl/messages.rb
659
509
  - lib/inferno/dsl/oauth_credentials.rb
660
510
  - lib/inferno/dsl/request_storage.rb
@@ -693,6 +543,7 @@ files:
693
543
  - lib/inferno/public/0e0b993fd6ff351f435ff1c2938daf2d.png
694
544
  - lib/inferno/public/175.bundle.js
695
545
  - lib/inferno/public/217.bundle.js
546
+ - lib/inferno/public/237.bundle.js
696
547
  - lib/inferno/public/a5cd39450ab0336db73c5e57228b649d.png
697
548
  - lib/inferno/public/assets.json
698
549
  - lib/inferno/public/bundle.js
@@ -726,9 +577,11 @@ files:
726
577
  - lib/inferno/utils/middleware/request_logger.rb
727
578
  - lib/inferno/utils/migration.rb
728
579
  - lib/inferno/utils/named_thor_actions.rb
580
+ - lib/inferno/utils/persist_inputs.rb
729
581
  - lib/inferno/utils/preset_processor.rb
730
582
  - lib/inferno/utils/preset_template_generator.rb
731
583
  - lib/inferno/utils/static_assets.rb
584
+ - lib/inferno/utils/verify_runnable.rb
732
585
  - lib/inferno/version.rb
733
586
  - spec/factories/header.rb
734
587
  - spec/factories/message.rb
@@ -739,6 +592,7 @@ files:
739
592
  - spec/fixtures/auth_info_constants.rb
740
593
  - spec/fixtures/basic_test_group.rb
741
594
  - spec/fixtures/basic_test_suite.rb
595
+ - spec/fixtures/run_as_group_test_group.rb
742
596
  - spec/support/factory_bot.rb
743
597
  homepage: https://github.com/inferno-framework/inferno-core
744
598
  licenses: