Moved quick_resource and Fake helpers to test/helpers/resources.rb

Signed-off-by: Ryan Davis <zenspider@chef.io>
This commit is contained in:
Ryan Davis 2019-10-04 17:31:50 -07:00
parent fc8ea79ad0
commit fe34eb7869
2 changed files with 59 additions and 44 deletions

View file

@ -70,6 +70,7 @@ require "mocha/setup"
require "inspec/log"
require "inspec/backend"
require "helpers/mock_loader"
require "helpers/resources"
TMP_CACHE = {} # rubocop: disable Style/MutableConstant
@ -150,50 +151,6 @@ class Minitest::Test
def skip_windows!
skip_until 2019, 10, 30, "These have never passed" if windows?
end
##
# This creates a real resource with default config/backend.
#
# Use this whenever possible. Let's phase out the MockLoader pain.
def quick_resource(name, *args, &block)
backend = Inspec::Backend.create(Inspec::Config.new)
backend.extend Fake::Backend
klass = Inspec::Resource.registry[name]
instance = klass.new(backend, name, *args)
instance.extend Fake::Resource
instance.mock_command(&block) if block
instance
end
end
module Fake
Command = Struct.new(:stdout, :stderr, :exit_status)
module Backend
def stdout_file(path)
result(path, nil, 0)
end
def stderr_file(path)
result(nil, path, 0)
end
def result(stdout_path, stderr_path, exit)
stdout = stdout_path ? File.read(stdout_path) : ""
stderr = stderr_path ? File.read(stderr_path) : ""
::Fake::Command.new(stdout, stderr, 0)
end
end
module Resource
def mock_command(&block)
inspec.define_singleton_method :command, &block
end
end
end
class InspecTest < Minitest::Test

58
test/helpers/resources.rb Normal file
View file

@ -0,0 +1,58 @@
class Minitest::Test
##
# This creates a real resource with default config/backend.
#
# Use this whenever possible. Let's phase out the MockLoader pain.
def quick_resource(name, platform = :linux, *args, &block)
backend = Inspec::Backend.create(Inspec::Config.new)
backend.extend Fake::Backend
os = MockLoader::OPERATING_SYSTEMS[platform]
raise "Unknown platform: %p" % [platform] unless os
# mock.mock_os(@platform)
platform = Train::Platforms.name(os[:name])
platform.find_family_hierarchy # TODO: remove? UGH! adds platform=
platform.platform = os
# platform.add_platform_methods # TODO: remove?
# TODO: this should have a setter
# TODO: backend.backend is the WORST name
backend.backend.instance_variable_set :@platform, platform
# end mock.mock_os
klass = Inspec::Resource.registry[name]
instance = klass.new(backend, name, *args)
instance.extend Fake::Resource
instance.mock_command(&block) if block
instance
end
end
module Fake
Command = Struct.new(:stdout, :stderr, :exit_status)
module Backend
def stdout_file(path)
result(path, nil, 0)
end
def stderr_file(path)
result(nil, path, 0)
end
def result(stdout_path, stderr_path, exit)
stdout = stdout_path ? File.read(stdout_path) : ""
stderr = stderr_path ? File.read(stderr_path) : ""
::Fake::Command.new(stdout, stderr, 0)
end
end
module Resource
def mock_command(&block)
inspec.define_singleton_method :command, &block
end
end
end