mirror of
https://github.com/inspec/inspec
synced 2024-11-27 07:00:39 +00:00
Adjust style elements in test files on deprecation facility PR
Signed-off-by: Jerry Aldrich <jerryaldrichiii@gmail.com>
This commit is contained in:
commit
9b55e2fef0
9 changed files with 65 additions and 81 deletions
|
@ -9,13 +9,13 @@ The most important goal of the deprecation facility was to collect decisions abo
|
||||||
### Example
|
### Example
|
||||||
|
|
||||||
```
|
```
|
||||||
# In some code in Inspec core
|
# In some code in InSpec core
|
||||||
def something_crufty
|
def something_crufty
|
||||||
Inspec.deprecate :old_feature, 'Don't call something_crufty anymore'
|
Inspec.deprecate :old_feature, 'Don't call something_crufty anymore'
|
||||||
end
|
end
|
||||||
```
|
```
|
||||||
|
|
||||||
If that gets called, inspec will consult the deprecation configuration, and then execute one of four actions: warn, fail_control, exit, or ignore.
|
If that gets called, `inspec` will consult the deprecation configuration, and then execute one of four actions: warn, fail_control, exit, or ignore.
|
||||||
|
|
||||||
## Concepts
|
## Concepts
|
||||||
|
|
||||||
|
@ -48,7 +48,7 @@ For v4:
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
Now, a warning (fed through Inspec::Log.warn) will appear each time the property is accessed, but it will otherwise behave normally.
|
Now, a warning (fed through `Inspec::Log.warn`) will appear each time the property is accessed, but it will otherwise behave normally.
|
||||||
|
|
||||||
For v5, you have some choices as to how to harden the deprecation. `fail_control` will fail any control the deprecation is used in; while `exit` will exit the inspec run entirely.
|
For v5, you have some choices as to how to harden the deprecation. `fail_control` will fail any control the deprecation is used in; while `exit` will exit the inspec run entirely.
|
||||||
|
|
||||||
|
@ -61,7 +61,6 @@ For v5:
|
||||||
|
|
||||||
Again, no need to update the deprecation calls; though in v6 it might make sense to remove the old code entirely.
|
Again, no need to update the deprecation calls; though in v6 it might make sense to remove the old code entirely.
|
||||||
|
|
||||||
|
|
||||||
### Groups
|
### Groups
|
||||||
|
|
||||||
When you make a deprecation message, you add it to a group. InSpec will read the file `$INSPEC_INSTALL_ROOT/etc/deprecation.json` to determine the known groups - you may add to that file at any time.
|
When you make a deprecation message, you add it to a group. InSpec will read the file `$INSPEC_INSTALL_ROOT/etc/deprecation.json` to determine the known groups - you may add to that file at any time.
|
||||||
|
@ -84,7 +83,7 @@ For all actions except `ignore`, a message is assembled, consisting of:
|
||||||
|
|
||||||
#### exit
|
#### exit
|
||||||
|
|
||||||
Issues an ERROR via Inspec::Log.error with the assembled message, then immediately exits the process via Inspec::UI. The reporters are not executed. By default, the exit code will be 3; but you can set a different code using the `exit_status` property of the group in the config file.
|
Issues an ERROR via `Inspec::Log.error` with the assembled message, then immediately exits the process via Inspec::UI. The reporters are not executed. By default, the exit code will be 3; but you can set a different code using the `exit_status` property of the group in the config file.
|
||||||
|
|
||||||
#### fail_control
|
#### fail_control
|
||||||
|
|
||||||
|
@ -98,4 +97,4 @@ Does nothing; this is very useful for staging deprecations - you can have the de
|
||||||
|
|
||||||
#### warn
|
#### warn
|
||||||
|
|
||||||
Issues a WARN to the Inspec::Log.warn facility with the assembled message.
|
Issues a WARN to the `Inspec::Log.warn` facility with the assembled message.
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
# A system to provide a unified deprecation facility for inspec
|
# A system to provide a unified deprecation facility for InSpec
|
||||||
|
|
||||||
require 'utils/deprecation/errors'
|
require 'utils/deprecation/errors'
|
||||||
require 'utils/deprecation/config_file'
|
require 'utils/deprecation/config_file'
|
||||||
|
|
|
@ -9,14 +9,10 @@ module Inspec
|
||||||
|
|
||||||
# What actions may you specify to be taken when a deprecation is encountered?
|
# What actions may you specify to be taken when a deprecation is encountered?
|
||||||
VALID_ACTIONS = [
|
VALID_ACTIONS = [
|
||||||
# Hard exit inspec, no stacktrace, exit code specified or DEFAULT_HARD_EXIT_STATUS
|
:exit, # Hard exit `inspec`, no stacktrace, exit code specified or DEFAULT_HARD_EXIT_STATUS
|
||||||
:exit,
|
:fail_control, # Fail the control with a message. If not in a control, do :warn action instead.
|
||||||
# Fail the control with the message. If not in a control, do :warn action instead.
|
:ignore, # Do nothing.
|
||||||
:fail_control,
|
:warn, # Issue a warning
|
||||||
# Do nothing.
|
|
||||||
:ignore,
|
|
||||||
# Issue a warning
|
|
||||||
:warn,
|
|
||||||
].freeze
|
].freeze
|
||||||
|
|
||||||
VALID_GROUP_FIELDS = %w{action suffix prefix exit_status}.freeze
|
VALID_GROUP_FIELDS = %w{action suffix prefix exit_status}.freeze
|
||||||
|
|
|
@ -1,4 +1,3 @@
|
||||||
|
|
||||||
require 'utils/deprecation/config_file'
|
require 'utils/deprecation/config_file'
|
||||||
require 'inspec/log'
|
require 'inspec/log'
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
# Logging and deprecation facilities functional tests
|
# Logging and deprecation facilities functional tests
|
||||||
|
|
||||||
require 'functional/helper'
|
require 'functional/helper'
|
||||||
require 'byebug'
|
|
||||||
|
|
||||||
describe 'Deprecation Facility Behavior' do
|
describe 'Deprecation Facility Behavior' do
|
||||||
include FunctionalHelper
|
include FunctionalHelper
|
||||||
|
@ -9,19 +8,18 @@ describe 'Deprecation Facility Behavior' do
|
||||||
let(:profile) { File.join(profile_path, 'deprecation', profile_name) }
|
let(:profile) { File.join(profile_path, 'deprecation', profile_name) }
|
||||||
let(:invocation) { "exec #{profile} #{control_flag}" }
|
let(:invocation) { "exec #{profile} #{control_flag}" }
|
||||||
# Running in JSON mode has the side-effect of sending log messages to STDERR
|
# Running in JSON mode has the side-effect of sending log messages to STDERR
|
||||||
let(:run_result) { run_inspec_process(invocation, json: true)}
|
let(:run_result) { run_inspec_process(invocation, json: true) }
|
||||||
|
|
||||||
# Expect one control, 3 results
|
# Expect one control, 3 results
|
||||||
let(:json_result) { run_result.payload.json['profiles'][0]['controls'][0]['results'] }
|
let(:json_result) { run_result.payload.json['profiles'][0]['controls'][0]['results'] }
|
||||||
|
|
||||||
describe 'when the deprecation is in a custom resource and the deprecate DSL method is used' do
|
describe 'when the deprecation is in a custom resource and the deprecate DSL method is used' do
|
||||||
describe 'when the action is to fail the control' do
|
describe 'when the action is to fail the control' do
|
||||||
|
|
||||||
describe 'when the resource is called in a control' do
|
describe 'when the resource is called in a control' do
|
||||||
let(:profile_name) { 'typical' }
|
let(:profile_name) { 'typical' }
|
||||||
let(:control_flag) { '--controls deprecate_fail_mode' }
|
let(:control_flag) { '--controls deprecate_fail_mode' }
|
||||||
|
|
||||||
it "should result in a failed control" do
|
it 'should result in a failed control' do
|
||||||
run_result.stderr.must_be_empty
|
run_result.stderr.must_be_empty
|
||||||
run_result.exit_status.must_equal 100
|
run_result.exit_status.must_equal 100
|
||||||
json_result.count.must_equal 3
|
json_result.count.must_equal 3
|
||||||
|
@ -40,7 +38,7 @@ describe 'Deprecation Facility Behavior' do
|
||||||
let(:profile_name) { 'bare' }
|
let(:profile_name) { 'bare' }
|
||||||
let(:control_flag) { '' }
|
let(:control_flag) { '' }
|
||||||
|
|
||||||
it "should result in a warning, not a stacktrace or abort" do
|
it 'should result in a warning, not a stacktrace or abort' do
|
||||||
run_result.exit_status.must_equal 0
|
run_result.exit_status.must_equal 0
|
||||||
json_result.count.must_equal 1
|
json_result.count.must_equal 1
|
||||||
json_result[0]['status'].must_equal 'passed'
|
json_result[0]['status'].must_equal 'passed'
|
||||||
|
@ -55,7 +53,6 @@ describe 'Deprecation Facility Behavior' do
|
||||||
deprecation_line.must_include '(used at'
|
deprecation_line.must_include '(used at'
|
||||||
deprecation_line.must_include 'test/unit/mock/profiles/deprecation/bare/controls/bare.rb'
|
deprecation_line.must_include 'test/unit/mock/profiles/deprecation/bare/controls/bare.rb'
|
||||||
deprecation_line.must_include 'bare.rb:4'
|
deprecation_line.must_include 'bare.rb:4'
|
||||||
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -64,7 +61,7 @@ describe 'Deprecation Facility Behavior' do
|
||||||
let(:profile_name) { 'typical' }
|
let(:profile_name) { 'typical' }
|
||||||
let(:control_flag) { '--controls deprecate_exit_mode_implicit' }
|
let(:control_flag) { '--controls deprecate_exit_mode_implicit' }
|
||||||
|
|
||||||
it "should result in an exit with a special code" do
|
it 'should result in an exit with a special code' do
|
||||||
# 3 is the FATAL_DEPRECATION value from Inspec::UI
|
# 3 is the FATAL_DEPRECATION value from Inspec::UI
|
||||||
run_result.exit_status.must_equal 3
|
run_result.exit_status.must_equal 3
|
||||||
|
|
||||||
|
@ -77,13 +74,12 @@ describe 'Deprecation Facility Behavior' do
|
||||||
deprecation_line.must_include 'DEPRECATION'
|
deprecation_line.must_include 'DEPRECATION'
|
||||||
deprecation_line.must_include 'ERROR'
|
deprecation_line.must_include 'ERROR'
|
||||||
deprecation_line.must_include 'This should exit'
|
deprecation_line.must_include 'This should exit'
|
||||||
deprecation_line.must_include '(used at' # Beginning of a single-frame stack locator
|
deprecation_line.must_include '(used at' # Beginning of a single-frame stack locator
|
||||||
deprecation_line.must_include 'test/unit/mock/profiles/deprecation/typical/controls/typical.rb' # Frame should have been identified as coming from the test profile
|
deprecation_line.must_include 'test/unit/mock/profiles/deprecation/typical/controls/typical.rb' # Frame should have been identified as coming from the test profile
|
||||||
deprecation_line.must_include 'typical.rb:29' # Line number check
|
deprecation_line.must_include 'typical.rb:29' # Line number check
|
||||||
|
|
||||||
# The reporter should not fire
|
# The reporter should not fire
|
||||||
run_result.stdout.must_be_empty
|
run_result.stdout.must_be_empty
|
||||||
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -91,7 +87,7 @@ describe 'Deprecation Facility Behavior' do
|
||||||
let(:profile_name) { 'typical' }
|
let(:profile_name) { 'typical' }
|
||||||
let(:control_flag) { '--controls deprecate_exit_mode_explicit' }
|
let(:control_flag) { '--controls deprecate_exit_mode_explicit' }
|
||||||
|
|
||||||
it "should result in an exit with a special code" do
|
it 'should result in an exit with a special code' do
|
||||||
# 8 is a custom value
|
# 8 is a custom value
|
||||||
run_result.exit_status.must_equal 8
|
run_result.exit_status.must_equal 8
|
||||||
|
|
||||||
|
@ -102,9 +98,9 @@ describe 'Deprecation Facility Behavior' do
|
||||||
# Contents of the deprecation
|
# Contents of the deprecation
|
||||||
deprecation_line = stderr_lines.first
|
deprecation_line = stderr_lines.first
|
||||||
deprecation_line.must_include 'DEPRECATION' # Flagged as deprecation
|
deprecation_line.must_include 'DEPRECATION' # Flagged as deprecation
|
||||||
deprecation_line.must_include 'ERROR' # Flagged as an error
|
deprecation_line.must_include 'ERROR' # Flagged as an error
|
||||||
deprecation_line.must_include 'This should exit' # Specific deprecation message
|
deprecation_line.must_include 'This should exit' # Specific deprecation message
|
||||||
deprecation_line.must_include '(used at' # Beginning of a single-frame stack locator
|
deprecation_line.must_include '(used at' # Beginning of a single-frame stack locator
|
||||||
deprecation_line.must_include 'test/unit/mock/profiles/deprecation/typical/controls/typical.rb' # Frame should have been identified as coming from the test profile
|
deprecation_line.must_include 'test/unit/mock/profiles/deprecation/typical/controls/typical.rb' # Frame should have been identified as coming from the test profile
|
||||||
deprecation_line.must_include 'typical.rb:46' # Line number check
|
deprecation_line.must_include 'typical.rb:46' # Line number check
|
||||||
|
|
||||||
|
@ -117,7 +113,7 @@ describe 'Deprecation Facility Behavior' do
|
||||||
let(:profile_name) { 'typical' }
|
let(:profile_name) { 'typical' }
|
||||||
let(:control_flag) { '--controls deprecate_warn_mode' }
|
let(:control_flag) { '--controls deprecate_warn_mode' }
|
||||||
|
|
||||||
it "should result in a warning, not a stacktrace or abort" do
|
it 'should result in a warning, not a stacktrace or abort' do
|
||||||
run_result.exit_status.must_equal 0
|
run_result.exit_status.must_equal 0
|
||||||
json_result.count.must_equal 3
|
json_result.count.must_equal 3
|
||||||
json_result[0]['status'].must_equal 'passed'
|
json_result[0]['status'].must_equal 'passed'
|
||||||
|
@ -127,14 +123,14 @@ describe 'Deprecation Facility Behavior' do
|
||||||
stderr_lines = run_result.stderr.split("\n")
|
stderr_lines = run_result.stderr.split("\n")
|
||||||
stderr_lines.count.must_equal 1
|
stderr_lines.count.must_equal 1
|
||||||
|
|
||||||
|
# Content of the deprecation
|
||||||
deprecation_line = stderr_lines.first
|
deprecation_line = stderr_lines.first
|
||||||
deprecation_line.must_include 'DEPRECATION'
|
deprecation_line.must_include 'DEPRECATION' # Flagged as deprecation
|
||||||
deprecation_line.must_include 'WARN'
|
deprecation_line.must_include 'WARN' # Flagged as a warning
|
||||||
deprecation_line.must_include 'This should warn'
|
deprecation_line.must_include 'This should warn' # Specific deprecation message
|
||||||
deprecation_line.must_include '(used at' # Beginning of a single-frame stack locator
|
deprecation_line.must_include '(used at' # Beginning of a single-frame stack locator
|
||||||
deprecation_line.must_include 'test/unit/mock/profiles/deprecation/typical/controls/typical.rb' # Frame should have been identified as coming from the test profile
|
deprecation_line.must_include 'test/unit/mock/profiles/deprecation/typical/controls/typical.rb' # Frame should have been identified as coming from the test profile
|
||||||
deprecation_line.must_include 'typical.rb:63' # Line number check
|
deprecation_line.must_include 'typical.rb:63' # Line number check
|
||||||
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -142,7 +138,7 @@ describe 'Deprecation Facility Behavior' do
|
||||||
let(:profile_name) { 'typical' }
|
let(:profile_name) { 'typical' }
|
||||||
let(:control_flag) { '--controls deprecate_ignore_mode' }
|
let(:control_flag) { '--controls deprecate_ignore_mode' }
|
||||||
|
|
||||||
it "should appear to be a normal run, no warnings or stacktrace or abort" do
|
it 'should appear to be a normal run, no warnings or stacktrace or abort' do
|
||||||
run_result.exit_status.must_equal 0
|
run_result.exit_status.must_equal 0
|
||||||
json_result.count.must_equal 3
|
json_result.count.must_equal 3
|
||||||
json_result[0]['status'].must_equal 'passed'
|
json_result[0]['status'].must_equal 'passed'
|
||||||
|
@ -150,7 +146,6 @@ describe 'Deprecation Facility Behavior' do
|
||||||
json_result[2]['status'].must_equal 'passed'
|
json_result[2]['status'].must_equal 'passed'
|
||||||
|
|
||||||
run_result.stderr.must_be_empty
|
run_result.stderr.must_be_empty
|
||||||
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
# Profile for use with deprecation facility
|
# Profile for use with deprecation facility
|
||||||
|
|
||||||
This profile defines a custom resource which uses the Inspec deprecation facility to issue deprecation actions in several different circumstances.
|
This profile defines a custom resource which uses the InSpec deprecation facility to issue deprecation actions in several different circumstances.
|
||||||
|
|
||||||
See test/functional/logging_test.rb for details.
|
See test/functional/logging_test.rb for details.
|
|
@ -1,62 +1,59 @@
|
||||||
|
|
||||||
require 'stringio'
|
require 'stringio'
|
||||||
|
|
||||||
class DeprecationTester < Inspec.resource(1)
|
class DeprecationTester < Inspec.resource(1)
|
||||||
name :deprecation_tester
|
name :deprecation_tester
|
||||||
|
|
||||||
DEPRECATION_CFG = <<~EOC
|
DEPRECATION_CFG = <<~EOC
|
||||||
{
|
{
|
||||||
"file_version": "1.0.0",
|
"file_version": "1.0.0",
|
||||||
"unknown_group_action": "warn",
|
"unknown_group_action": "warn",
|
||||||
"groups": {
|
"groups": {
|
||||||
"a_group_that_will_warn" : { "action": "warn" },
|
"a_group_that_will_warn": { "action": "warn" },
|
||||||
"a_group_that_will_exit" : { "action": "exit" },
|
"a_group_that_will_exit": { "action": "exit" },
|
||||||
"a_group_that_will_exit_with_a_code" : { "action": "exit", "exit_status": 8 },
|
"a_group_that_will_exit_with_a_code": { "action": "exit", "exit_status": 8 },
|
||||||
"an_ignored_group" : { "action": "ignore" },
|
"an_ignored_group": { "action": "ignore" },
|
||||||
"a_group_that_will_fail" : { "action": "fail_control" }
|
"a_group_that_will_fail": { "action": "fail_control" }
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
EOC
|
EOC
|
||||||
|
|
||||||
def fail_me
|
def fail_me
|
||||||
Inspec::Deprecation::Deprecator.class_test_cfg_io(StringIO.new(DEPRECATION_CFG))
|
Inspec::Deprecation::Deprecator.class_test_cfg_io(StringIO.new(DEPRECATION_CFG))
|
||||||
|
|
||||||
#deprecate(:a_group_that_will_fail, 'This should fail')
|
|
||||||
Inspec.deprecate(:a_group_that_will_fail, 'This should fail')
|
Inspec.deprecate(:a_group_that_will_fail, 'This should fail')
|
||||||
|
|
||||||
'fail_me_return_value'
|
'fail_me_return_value'
|
||||||
end
|
end
|
||||||
|
|
||||||
def exit_me_default_code
|
def exit_me_default_code
|
||||||
Inspec::Deprecation::Deprecator.class_test_cfg_io(StringIO.new(DEPRECATION_CFG))
|
Inspec::Deprecation::Deprecator.class_test_cfg_io(StringIO.new(DEPRECATION_CFG))
|
||||||
|
|
||||||
#deprecate(:a_group_that_will_exit, 'This should exit')
|
|
||||||
Inspec.deprecate(:a_group_that_will_exit, 'This should exit')
|
Inspec.deprecate(:a_group_that_will_exit, 'This should exit')
|
||||||
|
|
||||||
'exit_me_return_value'
|
'exit_me_return_value'
|
||||||
end
|
end
|
||||||
|
|
||||||
def exit_me_explicit_code
|
def exit_me_explicit_code
|
||||||
Inspec::Deprecation::Deprecator.class_test_cfg_io(StringIO.new(DEPRECATION_CFG))
|
Inspec::Deprecation::Deprecator.class_test_cfg_io(StringIO.new(DEPRECATION_CFG))
|
||||||
|
|
||||||
#deprecate(:a_group_that_will_exit_with_a_code, 'This should exit')
|
|
||||||
Inspec.deprecate(:a_group_that_will_exit_with_a_code, 'This should exit')
|
Inspec.deprecate(:a_group_that_will_exit_with_a_code, 'This should exit')
|
||||||
|
|
||||||
'exit_me_return_value'
|
'exit_me_return_value'
|
||||||
end
|
end
|
||||||
|
|
||||||
def ignore_me
|
def ignore_me
|
||||||
Inspec::Deprecation::Deprecator.class_test_cfg_io(StringIO.new(DEPRECATION_CFG))
|
Inspec::Deprecation::Deprecator.class_test_cfg_io(StringIO.new(DEPRECATION_CFG))
|
||||||
|
|
||||||
#deprecate(:an_ignored_group, 'This should be ignored')
|
|
||||||
Inspec.deprecate(:an_ignored_group, 'This should be ignored')
|
Inspec.deprecate(:an_ignored_group, 'This should be ignored')
|
||||||
|
|
||||||
'ignore_me_return_value'
|
'ignore_me_return_value'
|
||||||
end
|
end
|
||||||
|
|
||||||
def warn_me
|
def warn_me
|
||||||
Inspec::Deprecation::Deprecator.class_test_cfg_io(StringIO.new(DEPRECATION_CFG))
|
Inspec::Deprecation::Deprecator.class_test_cfg_io(StringIO.new(DEPRECATION_CFG))
|
||||||
|
|
||||||
#deprecate(:a_group_that_will_warn, 'This should warn')
|
|
||||||
Inspec.deprecate(:a_group_that_will_warn, 'This should warn')
|
Inspec.deprecate(:a_group_that_will_warn, 'This should warn')
|
||||||
|
|
||||||
'warn_me_return_value'
|
'warn_me_return_value'
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
# encoding: utf-8
|
# encoding: utf-8
|
||||||
|
|
||||||
# Notice: line numbers are sensitive! They are used for stacktrace testing in functional/loggin_test.rb
|
# Notice: line numbers are sensitive! They are used for stacktrace testing in functional/logging_test.rb
|
||||||
|
|
||||||
control 'deprecate_fail_mode' do
|
control 'deprecate_fail_mode' do
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
require 'minitest'
|
require 'minitest'
|
||||||
require 'minitest/spec'
|
require 'minitest/spec'
|
||||||
require 'stringio'
|
require 'stringio'
|
||||||
require 'byebug'
|
|
||||||
|
|
||||||
require 'utils/deprecation'
|
require 'utils/deprecation'
|
||||||
|
|
||||||
|
@ -15,7 +14,7 @@ describe 'The global deprecation method' do
|
||||||
end
|
end
|
||||||
it 'must take two required and one optional arg' do
|
it 'must take two required and one optional arg' do
|
||||||
# See http://ruby-doc.org/core-2.5.3/Method.html#method-i-arity
|
# See http://ruby-doc.org/core-2.5.3/Method.html#method-i-arity
|
||||||
Inspec.method(:deprecate).arity.must_equal -3
|
Inspec.method(:deprecate).arity.must_equal(-3)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -38,7 +37,7 @@ describe 'The deprecation config file object' do
|
||||||
describe 'when the file version is missing' do
|
describe 'when the file version is missing' do
|
||||||
let(:cfg_fixture) { :missing_file_version }
|
let(:cfg_fixture) { :missing_file_version }
|
||||||
it 'should throw an InvalidConfigFileError' do
|
it 'should throw an InvalidConfigFileError' do
|
||||||
ex = assert_raises (Inspec::Deprecation::InvalidConfigFileError) { config_file }
|
ex = assert_raises(Inspec::Deprecation::InvalidConfigFileError) { config_file }
|
||||||
ex.message.must_include 'Missing file_version field'
|
ex.message.must_include 'Missing file_version field'
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -46,7 +45,7 @@ describe 'The deprecation config file object' do
|
||||||
describe 'when the file version is unsupported' do
|
describe 'when the file version is unsupported' do
|
||||||
let(:cfg_fixture) { :bad_file_version }
|
let(:cfg_fixture) { :bad_file_version }
|
||||||
it 'should throw an InvalidConfigFileError' do
|
it 'should throw an InvalidConfigFileError' do
|
||||||
ex = assert_raises (Inspec::Deprecation::InvalidConfigFileError) { config_file }
|
ex = assert_raises(Inspec::Deprecation::InvalidConfigFileError) { config_file }
|
||||||
ex.message.must_include 'Unrecognized file_version' # message
|
ex.message.must_include 'Unrecognized file_version' # message
|
||||||
ex.message.must_include '1.0.0' # version that IS supported
|
ex.message.must_include '1.0.0' # version that IS supported
|
||||||
ex.message.must_include '99.99.99' # version that was seen
|
ex.message.must_include '99.99.99' # version that was seen
|
||||||
|
@ -56,7 +55,7 @@ describe 'The deprecation config file object' do
|
||||||
describe 'when the groups entry is not a hash' do
|
describe 'when the groups entry is not a hash' do
|
||||||
let(:cfg_fixture) { :groups_not_hash }
|
let(:cfg_fixture) { :groups_not_hash }
|
||||||
it 'should throw an InvalidConfigFileError' do
|
it 'should throw an InvalidConfigFileError' do
|
||||||
ex = assert_raises (Inspec::Deprecation::InvalidConfigFileError) { config_file }
|
ex = assert_raises(Inspec::Deprecation::InvalidConfigFileError) { config_file }
|
||||||
ex.message.must_include 'Groups field must be a Hash' # message
|
ex.message.must_include 'Groups field must be a Hash' # message
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -64,7 +63,7 @@ describe 'The deprecation config file object' do
|
||||||
describe 'when a group entry has an unrecognized action' do
|
describe 'when a group entry has an unrecognized action' do
|
||||||
let(:cfg_fixture) { :bad_group_action }
|
let(:cfg_fixture) { :bad_group_action }
|
||||||
it 'should throw an UnrecognizedActionError' do
|
it 'should throw an UnrecognizedActionError' do
|
||||||
ex = assert_raises (Inspec::Deprecation::UnrecognizedActionError) { config_file }
|
ex = assert_raises(Inspec::Deprecation::UnrecognizedActionError) { config_file }
|
||||||
ex.message.must_include 'Unrecognized action' # message
|
ex.message.must_include 'Unrecognized action' # message
|
||||||
ex.message.must_include 'methane_pockets' # offending group name
|
ex.message.must_include 'methane_pockets' # offending group name
|
||||||
ex.message.must_include 'ignore' # an action that IS supported
|
ex.message.must_include 'ignore' # an action that IS supported
|
||||||
|
@ -78,7 +77,7 @@ describe 'The deprecation config file object' do
|
||||||
describe 'when a group entry has an unrecognized field' do
|
describe 'when a group entry has an unrecognized field' do
|
||||||
let(:cfg_fixture) { :bad_group_field }
|
let(:cfg_fixture) { :bad_group_field }
|
||||||
it 'should throw an InvalidConfigError' do
|
it 'should throw an InvalidConfigError' do
|
||||||
ex = assert_raises (Inspec::Deprecation::InvalidConfigFileError) { config_file }
|
ex = assert_raises(Inspec::Deprecation::InvalidConfigFileError) { config_file }
|
||||||
ex.message.must_include 'Unrecognized field' # message
|
ex.message.must_include 'Unrecognized field' # message
|
||||||
ex.message.must_include 'pansporia' # offending group name
|
ex.message.must_include 'pansporia' # offending group name
|
||||||
ex.message.must_include 'action' # a field that IS supported
|
ex.message.must_include 'action' # a field that IS supported
|
||||||
|
@ -110,10 +109,10 @@ describe 'The Deprecator object' do
|
||||||
let(:cfg_fixture) { :basic }
|
let(:cfg_fixture) { :basic }
|
||||||
|
|
||||||
describe 'when it has no args' do
|
describe 'when it has no args' do
|
||||||
it 'should create an object with basic ' do
|
it 'should create an object with basic' do
|
||||||
dpcr = Inspec::Deprecation::Deprecator.new
|
dpcr = Inspec::Deprecation::Deprecator.new
|
||||||
dpcr.must_respond_to(:handle_deprecation)
|
dpcr.must_respond_to(:handle_deprecation)
|
||||||
# more?
|
# TODO: more?
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -143,25 +142,24 @@ describe 'The Deprecator object' do
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
# TODO - stack analysis
|
# TODO: stack analysis
|
||||||
# in_control?
|
# in_control?
|
||||||
# TODO - anything else here?
|
# TODO: anything else here?
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
module DeprecationTestHelper
|
module DeprecationTestHelper
|
||||||
class Config
|
class Config
|
||||||
FIXTURES = {
|
FIXTURES = {
|
||||||
basic: <<~EOC0,
|
basic: <<~EOC0,
|
||||||
{
|
{
|
||||||
"file_version": "1.0.0", "unknown_group_action": "ignore",
|
"file_version": "1.0.0", "unknown_group_action": "ignore",
|
||||||
"groups": {
|
"groups": {
|
||||||
"a_group_that_will_warn" : { "action": "warn", "suffix": "Did you know chickens are dinosaurs?" },
|
"a_group_that_will_warn" : { "action": "warn", "suffix": "Did you know chickens are dinosaurs?" },
|
||||||
"a_group_that_will_exit" : { "action": "exit", "exit_status": 8, "prefix": "No thanks!" },
|
"a_group_that_will_exit" : { "action": "exit", "exit_status": 8, "prefix": "No thanks!" },
|
||||||
"an_ignored_group" : { "action": "ignore" },
|
"an_ignored_group" : { "action": "ignore" },
|
||||||
"a_group_that_will_fail" : { "action": "fail_control" }
|
"a_group_that_will_fail" : { "action": "fail_control" }
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
EOC0
|
EOC0
|
||||||
missing_file_version: '{ "unknown_group_action": "ignore", "groups": {} }',
|
missing_file_version: '{ "unknown_group_action": "ignore", "groups": {} }',
|
||||||
bad_file_version: '{ "file_version": "99.99.99", "unknown_group_action": "ignore", "groups": {} }',
|
bad_file_version: '{ "file_version": "99.99.99", "unknown_group_action": "ignore", "groups": {} }',
|
||||||
|
@ -169,7 +167,7 @@ module DeprecationTestHelper
|
||||||
empty: '{ "file_version": "1.0.0", "groups": {} }',
|
empty: '{ "file_version": "1.0.0", "groups": {} }',
|
||||||
bad_group_action: '{ "file_version": "1.0.0", "groups": { "methane_pockets" : { "action": "explode" } } }',
|
bad_group_action: '{ "file_version": "1.0.0", "groups": { "methane_pockets" : { "action": "explode" } } }',
|
||||||
bad_group_field: '{ "file_version": "1.0.0", "groups": { "pansporia" : { "martian": "yes" } } }',
|
bad_group_field: '{ "file_version": "1.0.0", "groups": { "pansporia" : { "martian": "yes" } } }',
|
||||||
}
|
}.freeze
|
||||||
|
|
||||||
def self.get_io_for_fixture(fixture)
|
def self.get_io_for_fixture(fixture)
|
||||||
StringIO.new(FIXTURES[fixture])
|
StringIO.new(FIXTURES[fixture])
|
||||||
|
|
Loading…
Reference in a new issue