inspec 0.31.0 → 0.32.0

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 7863d5430d9891f4ec8895d615bb134047a237ee
4
- data.tar.gz: 7b8b6d69f358812cd69aa40042f4a6bd0a2d52b7
3
+ metadata.gz: 0d4137116907e9d6bee7f88e2a1ec7c16372ee1c
4
+ data.tar.gz: 0c88924d165b05a9765a940197c3b3e779ba09f1
5
5
  SHA512:
6
- metadata.gz: 37d29c938cc8e6d234d27aaf92bf438eff4be4d4394469468ccf7b570f91165bb1d262e0c4c0594672e6b6d520cf8fe785fe883468a74d0553eb015ab181953f
7
- data.tar.gz: 72ab6035eddcb9e64bed98d64fd9f38e3e6e30839786a073b08bf3fb9c4e4728e943753c353b4b31cbc745d60096e28fee4944c10f3d4a6685ad977294119d16
6
+ metadata.gz: e1016672adc6e043a2896ff1e78304f244d8f9ca7af64f8d85164e19c938916e0792df984f6c26d63d364ee03da385078d045235d42d4900704c19bec465bd25
7
+ data.tar.gz: 894d6fd605277f8608296b3ff0afc2f9510e8e4a6b57dde9ed5cf740d4adaf3114e89a2efd54c734792382036b1a32417bb5bb496c126fe61a47a3e88d87ea18
@@ -1,7 +1,61 @@
1
1
  # Change Log
2
2
 
3
- ## [0.31.0](https://github.com/chef/inspec/tree/0.31.0) (2016-08-19)
4
- [Full Changelog](https://github.com/chef/inspec/compare/v0.30.0...0.31.0)
3
+ ## [0.32.0](https://github.com/chef/inspec/tree/0.32.0) (2016-08-26)
4
+ [Full Changelog](https://github.com/chef/inspec/compare/v0.31.0...0.32.0)
5
+
6
+ **Implemented enhancements:**
7
+
8
+ - Provide SSL InSpec with full demo [\#903](https://github.com/chef/inspec/issues/903)
9
+ - improve package resource on windows [\#86](https://github.com/chef/inspec/issues/86)
10
+ - can check windows service startup mode now [\#968](https://github.com/chef/inspec/pull/968) ([Anirudh-Gupta](https://github.com/Anirudh-Gupta))
11
+ - Resolved an issue checking ports on windows [\#962](https://github.com/chef/inspec/pull/962) ([chris-rock](https://github.com/chris-rock))
12
+
13
+ **Fixed bugs:**
14
+
15
+ - Grouping multiple `it` blocks in one `describe` blocks ruins console output during test runs [\#918](https://github.com/chef/inspec/issues/918)
16
+ - Windows default path format causes errors with inspec check [\#672](https://github.com/chef/inspec/issues/672)
17
+ - bugfix windows forward slashes handling [\#963](https://github.com/chef/inspec/pull/963) ([chris-rock](https://github.com/chris-rock))
18
+ - Fix command evaluation for inspec shell -c [\#943](https://github.com/chef/inspec/pull/943) ([ksubrama](https://github.com/ksubrama))
19
+
20
+ **Closed issues:**
21
+
22
+ - Support sid for user resource [\#960](https://github.com/chef/inspec/issues/960)
23
+ - Create and load Lockfiles for dependencies [\#950](https://github.com/chef/inspec/issues/950)
24
+ - Implement test cases for inspec shell [\#942](https://github.com/chef/inspec/issues/942)
25
+ - Transitive dependency loading [\#915](https://github.com/chef/inspec/issues/915)
26
+ - Document InSpec OR features [\#853](https://github.com/chef/inspec/issues/853)
27
+ - Document ini resource [\#848](https://github.com/chef/inspec/issues/848)
28
+ - Document special service resources [\#495](https://github.com/chef/inspec/issues/495)
29
+
30
+ **Merged pull requests:**
31
+
32
+ - Reformat service resource docs for discoverability [\#986](https://github.com/chef/inspec/pull/986) ([stevendanna](https://github.com/stevendanna))
33
+ - Generate documentation for the `vendor` command [\#985](https://github.com/chef/inspec/pull/985) ([stevendanna](https://github.com/stevendanna))
34
+ - suport for ruby 2.2.2 [\#983](https://github.com/chef/inspec/pull/983) ([chris-rock](https://github.com/chris-rock))
35
+ - Add windows user SID as 'UID' in user resource. Fix \#960 [\#982](https://github.com/chef/inspec/pull/982) ([ksubrama](https://github.com/ksubrama))
36
+ - document ini resource [\#981](https://github.com/chef/inspec/pull/981) ([vjeffrey](https://github.com/vjeffrey))
37
+ - Upgrade FFI to Ruby 2.3 issues on windows [\#980](https://github.com/chef/inspec/pull/980) ([ksubrama](https://github.com/ksubrama))
38
+ - move train connection out of loop for command\_simulator [\#979](https://github.com/chef/inspec/pull/979) ([vjeffrey](https://github.com/vjeffrey))
39
+ - Update port.rb Documentation [\#978](https://github.com/chef/inspec/pull/978) ([nvtkaszpir](https://github.com/nvtkaszpir))
40
+ - first pass at collecting command output for demo [\#977](https://github.com/chef/inspec/pull/977) ([vjeffrey](https://github.com/vjeffrey))
41
+ - Fix `rake` to work again [\#976](https://github.com/chef/inspec/pull/976) ([jkeiser](https://github.com/jkeiser))
42
+ - Fix `bundle install` on Ruby 2.1.9 [\#975](https://github.com/chef/inspec/pull/975) ([jkeiser](https://github.com/jkeiser))
43
+ - Initial control isolation support [\#973](https://github.com/chef/inspec/pull/973) ([stevendanna](https://github.com/stevendanna))
44
+ - Allow JSON 2.x [\#972](https://github.com/chef/inspec/pull/972) ([chris-rock](https://github.com/chris-rock))
45
+ - Add Ruby 2.3 to the test matrix, make it the primary test for most suites [\#971](https://github.com/chef/inspec/pull/971) ([jkeiser](https://github.com/jkeiser))
46
+ - Speed up windows package lookup [\#970](https://github.com/chef/inspec/pull/970) ([ksubrama](https://github.com/ksubrama))
47
+ - Expand relative paths based on profile location [\#965](https://github.com/chef/inspec/pull/965) ([stevendanna](https://github.com/stevendanna))
48
+ - restructure test suites in travis [\#964](https://github.com/chef/inspec/pull/964) ([chris-rock](https://github.com/chris-rock))
49
+ - Replace Molinillo-based resolver [\#961](https://github.com/chef/inspec/pull/961) ([stevendanna](https://github.com/stevendanna))
50
+ - Add prototype of inspec.lock [\#949](https://github.com/chef/inspec/pull/949) ([stevendanna](https://github.com/stevendanna))
51
+ - document OR feature [\#947](https://github.com/chef/inspec/pull/947) ([vjeffrey](https://github.com/vjeffrey))
52
+ - print controls, then tests; print header of describe, then individual test results [\#946](https://github.com/chef/inspec/pull/946) ([vjeffrey](https://github.com/vjeffrey))
53
+ - Add darwin helper [\#945](https://github.com/chef/inspec/pull/945) ([tas50](https://github.com/tas50))
54
+ - Update platforms in the docs to match the code [\#944](https://github.com/chef/inspec/pull/944) ([tas50](https://github.com/tas50))
55
+ - Add integration tests for file owner on windows [\#923](https://github.com/chef/inspec/pull/923) ([chris-rock](https://github.com/chris-rock))
56
+
57
+ ## [v0.31.0](https://github.com/chef/inspec/tree/v0.31.0) (2016-08-19)
58
+ [Full Changelog](https://github.com/chef/inspec/compare/v0.30.0...v0.31.0)
5
59
 
6
60
  **Implemented enhancements:**
7
61
 
data/Gemfile CHANGED
@@ -8,8 +8,12 @@ if Gem::Version.new(RUBY_VERSION) <= Gem::Version.new('1.9.3')
8
8
  gem 'net-ssh', '~> 2.9'
9
9
  end
10
10
 
11
- # TODO: ffi 1.9.11 is currently erroneous on windows tests
12
- gem 'ffi', '= 1.9.10'
11
+ if Gem::Version.new(RUBY_VERSION) < Gem::Version.new('2.2.2')
12
+ gem 'json', '~> 1.8'
13
+ gem 'rack', '< 2.0'
14
+ end
15
+
16
+ gem 'ffi', '>= 1.9.14'
13
17
 
14
18
  group :test do
15
19
  gem 'bundler', '~> 1.5'
@@ -8,7 +8,7 @@ This file lists how the InSpec project is maintained. When making changes to the
8
8
  system, this file tells you who needs to review your patch - you need at least
9
9
  two maintainers to provide a :+1: on your pull request. Additionally, you need
10
10
  to not receive a veto from a Lieutenant or the Project Lead.
11
- Check out [How Chef is Maintained](https://github.com/opscode/chef-rfc/blob/master/rfc030-maintenance-policy.md#how-the-project-is-maintained)
11
+ Check out [How Chef is Maintained](https://github.com/chef/chef-rfc/blob/master/rfc030-maintenance-policy.md#how-the-project-is-maintained)
12
12
  for details on the process, how to become a maintainer, lieutenant, or the
13
13
  project lead.
14
14
 
@@ -18,6 +18,8 @@ project lead.
18
18
 
19
19
  Handles the [InSpec](https://github.com/chef/inspec) toolset.
20
20
 
21
+ To mention the team, use @chef/inspec-maintainers
22
+
21
23
  ### Lieutenant
22
24
 
23
25
  * [Dominik Richter](https://github.com/arlimus)
@@ -5,7 +5,7 @@ This file lists how the InSpec project is maintained. When making changes to the
5
5
  system, this file tells you who needs to review your patch - you need at least
6
6
  two maintainers to provide a :+1: on your pull request. Additionally, you need
7
7
  to not receive a veto from a Lieutenant or the Project Lead.
8
- Check out [How Chef is Maintained](https://github.com/opscode/chef-rfc/blob/master/rfc030-maintenance-policy.md#how-the-project-is-maintained)
8
+ Check out [How Chef is Maintained](https://github.com/chef/chef-rfc/blob/master/rfc030-maintenance-policy.md#how-the-project-is-maintained)
9
9
  for details on the process, how to become a maintainer, lieutenant, or the
10
10
  project lead.
11
11
  """
data/README.md CHANGED
@@ -170,6 +170,25 @@ Also have a look at our examples for:
170
170
  - [Using InSpec with Test Kitchen & Ansible](https://github.com/chef/inspec/tree/master/examples/kitchen-ansible)
171
171
  - [Implementing an InSpec profile](https://github.com/chef/inspec/tree/master/examples/profile)
172
172
 
173
+ ## Or tests: Testing for a OR b
174
+
175
+ * Using describe.one, you can test for a or b. The control will be marked as passing if EITHER condition is met.
176
+
177
+ ```ruby
178
+ control 'or-test' do
179
+ impact 1.0
180
+ title 'This is a OR test'
181
+ describe.one do
182
+ describe ssh_config do
183
+ its('Protocol') { should eq('3') }
184
+ end
185
+ describe ssh_config do
186
+ its('Protocol') { should eq('2') }
187
+ end
188
+ end
189
+ end
190
+ ```
191
+
173
192
  ## Command Line Usage
174
193
 
175
194
  ### exec
@@ -231,7 +250,7 @@ OpenSUSE | 13.1/13.2/42.1 | x86_64
231
250
  OmniOS | | x86_64
232
251
  Gentoo Linux | | x86_64
233
252
  Arch Linux | | x86_64
234
- HP-UX | 11.31 | ia64
253
+ HP-UX | 11.31 | ia64
235
254
 
236
255
  * For Windows 2008 and 2008 R2 an updated Powershell (Windows Management Framework 5.0) is required.
237
256
 
data/Rakefile CHANGED
@@ -17,6 +17,13 @@ end
17
17
  desc 'Run robocop linter'
18
18
  task lint: [:rubocop]
19
19
 
20
+ # update command output for demo
21
+ desc 'Run inspec commands and save results to www/app/responses'
22
+ task :update_demo do
23
+ commands = 'tasks/command_simulator.rb'
24
+ ruby commands
25
+ end
26
+
20
27
  # run tests
21
28
  task default: [:test, :lint]
22
29
 
@@ -145,6 +152,7 @@ task :bump_version, [:version] do |_, args|
145
152
  check_update_requirements
146
153
  inspec_version(v)
147
154
  Rake::Task['changelog'].invoke
155
+ Rake::Task['docs:cli'].invoke
148
156
  end
149
157
 
150
158
  desc 'Release a new docker image'
@@ -63,7 +63,7 @@ Options
63
63
  This subcommand has additional options:
64
64
 
65
65
  ``--format=FORMAT``
66
-
66
+
67
67
 
68
68
  ``--profiles-path=PROFILES_PATH``
69
69
  Folder which contains referenced profiles.
@@ -109,7 +109,7 @@ This subcommand has additional options:
109
109
  Choose a backend: local, ssh, winrm, docker.
110
110
 
111
111
  ``--format=FORMAT``
112
-
112
+
113
113
 
114
114
  ``--host=HOST``
115
115
  Specify a remote host which is tested.
@@ -408,6 +408,22 @@ This subcommand has the following syntax:
408
408
 
409
409
 
410
410
 
411
+ vendor
412
+ =====================================================
413
+
414
+ Download all dependencies and generate a lockfile
415
+
416
+ Syntax
417
+ -----------------------------------------------------
418
+
419
+ This subcommand has the following syntax:
420
+
421
+ .. code-block:: bash
422
+
423
+ $ inspec vendor
424
+
425
+
426
+
411
427
  version
412
428
  =====================================================
413
429
 
@@ -23,6 +23,7 @@ The following InSpec audit resources are available:
23
23
  * `host`_
24
24
  * `iis_site`_
25
25
  * `inetd_conf`_
26
+ * `ini`_
26
27
  * `interface`_
27
28
  * `iptables`_
28
29
  * `kernel_module`_
@@ -1999,6 +2000,48 @@ then the same test will return ``false`` for ``ftp`` and the entire test will fa
1999
2000
  end
2000
2001
 
2001
2002
 
2003
+ ini
2004
+ =====================================================
2005
+ Use the ``ini`` |inspec resource| to test data in a INI file.
2006
+
2007
+ **Stability: Stable**
2008
+
2009
+ Syntax
2010
+ -----------------------------------------------------
2011
+ An ``ini`` |inspec resource| block declares the content of the ``ini`` file:
2012
+
2013
+ .. code-block:: ruby
2014
+
2015
+ describe ini('path/to/ini_file.ini') do
2016
+ its('auth_protocol') { should eq 'https' }
2017
+ end
2018
+
2019
+ where
2020
+
2021
+ * ``'auth_protocol'`` is a key in the ``ini`` file
2022
+ * ``('https')`` is the expected value associated with the above key in the ``ini`` file
2023
+
2024
+ Matchers
2025
+ -----------------------------------------------------
2026
+ This |inspec resource| matches any content in the ``ini`` file:
2027
+
2028
+ .. code-block:: ruby
2029
+
2030
+ its('port') { should eq '143' }
2031
+
2032
+ Examples
2033
+ -----------------------------------------------------
2034
+ The following examples show how to use this InSpec audit resource.
2035
+
2036
+ For example:
2037
+
2038
+ .. code-block:: ruby
2039
+
2040
+ describe ini('path/to/ini_file.ini') do
2041
+ its('port') { should eq '143' }
2042
+ its('server') { should eq '192.0.2.62' }
2043
+ end
2044
+
2002
2045
 
2003
2046
  interface
2004
2047
  =====================================================
@@ -2854,7 +2897,7 @@ A ``os`` |inspec resource| block declares the platform to be tested:
2854
2897
 
2855
2898
  where
2856
2899
 
2857
- * ``'platform'`` is one of ``bsd``, ``debian``, ``linux``, ``redhat``, ``solaris``, ``suse``, ``unix``, or ``windows``
2900
+ * ``'family'`` is one of ``aix``, ``bsd``, ``debian``, ``hpux``, ``linux``, ``redhat``, ``solaris``, ``suse``, ``unix``, or ``windows``
2858
2901
 
2859
2902
 
2860
2903
  Matchers
@@ -4194,8 +4237,17 @@ Under some circumstances, it may be required to override the logic in place to s
4194
4237
  it { should be_running }
4195
4238
  end
4196
4239
 
4197
- This is also possible with `systemd_service`, `runit_service`, `sysv_service`, `bsd_service`, and `launchd_service`.
4198
- You can also provide the control command, for when it is not to be found at the default location.
4240
+ The following service-manager-specific resources are available:
4241
+
4242
+ * ``systemd_service``,
4243
+ * ``runit_service``,
4244
+ * ``sysv_service``,
4245
+ * ``bsd_service``, and
4246
+ * ``launchd_service``.
4247
+
4248
+ These resources support the same matchers as the `service` resource.
4249
+
4250
+ You can also provide the path to the service manager's control tool. This is useful in cases when it isn't available in the current `PATH`.
4199
4251
  For example, if your `sv` command for services managed by Runit is not in PATH:
4200
4252
 
4201
4253
  .. code-block:: ruby
@@ -26,7 +26,7 @@ Gem::Specification.new do |spec|
26
26
 
27
27
  spec.add_dependency 'train', '>=0.16.0', '<1.0'
28
28
  spec.add_dependency 'thor', '~> 0.19'
29
- spec.add_dependency 'json', '~> 1.8'
29
+ spec.add_dependency 'json', '>= 1.8', '< 3.0'
30
30
  spec.add_dependency 'rainbow', '~> 2'
31
31
  spec.add_dependency 'method_source', '~> 0.8'
32
32
  spec.add_dependency 'rubyzip', '~> 1.1'
@@ -34,6 +34,6 @@ Gem::Specification.new do |spec|
34
34
  spec.add_dependency 'rspec-its', '~> 1.2'
35
35
  spec.add_dependency 'pry', '~> 0'
36
36
  spec.add_dependency 'hashie', '~> 3.4'
37
- spec.add_dependency 'molinillo', '~> 0'
37
+ spec.add_dependency 'mixlib-log'
38
38
  spec.add_dependency 'sslshake', '~> 1'
39
39
  end
@@ -1,4 +1,5 @@
1
1
  # encoding: utf-8
2
+ # frozen_string_literal: true
2
3
  # author: Christoph Hartmann
3
4
  # author: Dominik Richter
4
5
 
@@ -10,7 +10,17 @@ module Fetchers
10
10
  attr_reader :files
11
11
 
12
12
  def self.resolve(target)
13
- unless target.is_a?(String) && File.exist?(target)
13
+ return nil unless target.is_a?(String)
14
+
15
+ # Support "urls" in the form of file://
16
+ if target.start_with?('file://')
17
+ target = target.gsub(%r{^file://}, '')
18
+ else
19
+ # support for windows paths
20
+ target = target.tr('\\', '/')
21
+ end
22
+
23
+ if !File.exist?(target)
14
24
  nil
15
25
  else
16
26
  new(target)
@@ -18,6 +28,7 @@ module Fetchers
18
28
  end
19
29
 
20
30
  def initialize(target)
31
+ @target = target
21
32
  if File.file?(target)
22
33
  @files = [target]
23
34
  else
@@ -19,6 +19,10 @@ module Fetchers
19
19
  new(target)
20
20
  end
21
21
 
22
+ def archive_path
23
+ target
24
+ end
25
+
22
26
  def initialize(target)
23
27
  @target = target
24
28
  @contents = {}
@@ -102,5 +102,9 @@ module Fetchers
102
102
  @target = url
103
103
  @archive = self.class.download_archive(url, opts)
104
104
  end
105
+
106
+ def archive_path
107
+ @archive.path
108
+ end
105
109
  end
106
110
  end
@@ -3,6 +3,7 @@
3
3
  # author: Dominik Richter
4
4
 
5
5
  require 'thor'
6
+ require 'inspec/log'
6
7
 
7
8
  module Inspec
8
9
  class BaseCLI < Thor # rubocop:disable Metrics/ClassLength
@@ -128,6 +129,22 @@ module Inspec
128
129
  end
129
130
 
130
131
  def configure_logger(o)
132
+ #
133
+ # TODO(ssd): This is a big gross, but this configures the
134
+ # logging singleton Inspec::Log. Eventually it would be nice to
135
+ # move internal debug logging to use this logging singleton.
136
+ #
137
+ loc = if o.log_location
138
+ o.log_location
139
+ elsif %w{json json-min}.include?(o['format'])
140
+ STDERR
141
+ else
142
+ STDOUT
143
+ end
144
+
145
+ Inspec::Log.init(loc)
146
+ Inspec::Log.level = get_log_level(o.log_level)
147
+
131
148
  o[:logger] = Logger.new(STDOUT)
132
149
  # output json if we have activated the json formatter
133
150
  if opts['log-format'] == 'json'
@@ -15,6 +15,12 @@ require 'inspec/runner_mock'
15
15
  require 'inspec/env_printer'
16
16
 
17
17
  class Inspec::InspecCLI < Inspec::BaseCLI # rubocop:disable Metrics/ClassLength
18
+ class_option :log_level, aliases: :l, type: :string,
19
+ desc: 'Set the log level: info (default), debug, warn, error'
20
+
21
+ class_option :log_location, type: :string,
22
+ desc: 'Location to send diagnostic log messages to. (default: STDOUT or STDERR)'
23
+
18
24
  class_option :diagnose, type: :boolean,
19
25
  desc: 'Show diagnostics (versions, configurations)'
20
26
 
@@ -93,6 +99,14 @@ class Inspec::InspecCLI < Inspec::BaseCLI # rubocop:disable Metrics/ClassLength
93
99
  exit 1 unless result[:summary][:valid]
94
100
  end
95
101
 
102
+ desc 'vendor', 'Download all dependencies and generate a lockfile'
103
+ def vendor(path = nil)
104
+ configure_logger(opts)
105
+ profile = Inspec::Profile.for_target('./', opts)
106
+ lockfile = profile.generate_lockfile(path)
107
+ File.write('inspec.lock', lockfile.to_yaml)
108
+ end
109
+
96
110
  desc 'archive PATH', 'archive a profile to tar.gz (default) or zip'
97
111
  profile_options
98
112
  option :output, aliases: :o, type: :string,
@@ -128,6 +142,7 @@ class Inspec::InspecCLI < Inspec::BaseCLI # rubocop:disable Metrics/ClassLength
128
142
  exec_options
129
143
  def exec(*targets)
130
144
  diagnose
145
+ configure_logger(opts)
131
146
  o = opts.dup
132
147
 
133
148
  # run tests
@@ -140,7 +155,7 @@ class Inspec::InspecCLI < Inspec::BaseCLI # rubocop:disable Metrics/ClassLength
140
155
  def detect
141
156
  o = opts.dup
142
157
  o[:command] = 'os.params'
143
- res = run_command(o)
158
+ (_, res) = run_command(o)
144
159
  if opts['format'] == 'json'
145
160
  puts res.to_json
146
161
  else
@@ -162,22 +177,23 @@ class Inspec::InspecCLI < Inspec::BaseCLI # rubocop:disable Metrics/ClassLength
162
177
  diagnose
163
178
  o = opts.dup
164
179
 
165
- log_device = opts['format'] == 'json' ? nil : STDOUT
180
+ json_output = ['json', 'json-min'].include?(opts['format'])
181
+ log_device = json_output ? nil : STDOUT
166
182
  o[:logger] = Logger.new(log_device)
167
183
  o[:logger].level = get_log_level(o.log_level)
168
184
 
169
185
  if o[:command].nil?
170
186
  runner = Inspec::Runner.new(o)
171
187
  return Inspec::Shell.new(runner).start
172
- else
173
- res = run_command(o)
174
- if opts['format'] == 'json'
175
- jres = res.respond_to?(:to_json) ? res.to_json : JSON.dump(res)
176
- puts jres
177
- else
178
- puts res
179
- end
180
188
  end
189
+
190
+ run_type, res = run_command(o)
191
+ exit res unless run_type == :ruby_eval
192
+
193
+ # No InSpec tests - just print evaluation output.
194
+ res = (res.respond_to?(:to_json) ? res.to_json : JSON.dump(res)) if json_output
195
+ puts res
196
+ exit 0
181
197
  rescue RuntimeError, Train::UserError => e
182
198
  $stderr.puts e.message
183
199
  end
@@ -196,9 +212,14 @@ class Inspec::InspecCLI < Inspec::BaseCLI # rubocop:disable Metrics/ClassLength
196
212
  private
197
213
 
198
214
  def run_command(opts)
199
- opts[:test_collector] = Inspec::RunnerMock.new
200
215
  runner = Inspec::Runner.new(opts)
201
- runner.create_context.load(opts[:command])
216
+ ctx = runner.create_context(opts)
217
+ res = ctx.load(opts[:command])
218
+
219
+ return :ruby_eval, res if ctx.rules.empty?
220
+
221
+ runner.register_rules(ctx)
222
+ return :rspec_run, runner.run # rubocop:disable Style/RedundantReturn
202
223
  end
203
224
  end
204
225