mirror of
https://github.com/inspec/inspec
synced 2024-11-30 08:30:39 +00:00
Added test command caching and refactored inspec helper to run_cmd.
Helps with some of the tests that want to run ruby directly. Fixes #4416.
This commit is contained in:
parent
bb7e69d145
commit
f8ea33de8f
1 changed files with 40 additions and 14 deletions
|
@ -107,21 +107,47 @@ module FunctionalHelper
|
||||||
_(failed_tests).must_be_empty
|
_(failed_tests).must_be_empty
|
||||||
end
|
end
|
||||||
|
|
||||||
def inspec(commandline, prefix = nil)
|
@inspec_mutex ||= Mutex.new
|
||||||
if is_windows?
|
|
||||||
invocation = "/windows/system32/cmd /C \"#{prefix} #{exec_inspec} #{commandline}\""
|
|
||||||
result = CMD.run_command(invocation)
|
|
||||||
result.stdout.encode!(universal_newline: true)
|
|
||||||
result.stderr.encode!(universal_newline: true)
|
|
||||||
convert_windows_output(result.stdout)
|
|
||||||
# remove the CLIXML header trash in windows
|
|
||||||
result.stderr.gsub!("#< CLIXML\n", "")
|
|
||||||
else
|
|
||||||
invocation = "#{prefix} #{exec_inspec} #{commandline}"
|
|
||||||
result = CMD.run_command(invocation)
|
|
||||||
end
|
|
||||||
|
|
||||||
result
|
def self.inspec_mutex
|
||||||
|
@inspec_mutex
|
||||||
|
end
|
||||||
|
|
||||||
|
def self.inspec_cache
|
||||||
|
@inspec_cache ||= {}
|
||||||
|
end
|
||||||
|
|
||||||
|
def inspec_cache
|
||||||
|
FunctionalHelper.inspec_cache
|
||||||
|
end
|
||||||
|
|
||||||
|
def inspec_mutex
|
||||||
|
FunctionalHelper.inspec_mutex
|
||||||
|
end
|
||||||
|
|
||||||
|
def run_cmd(commandline, prefix = nil)
|
||||||
|
inspec_mutex.synchronize { # rubocop:disable Style/BlockDelimiters
|
||||||
|
inspec_cache[[commandline, prefix]] ||=
|
||||||
|
if is_windows?
|
||||||
|
invocation = "/windows/system32/cmd /C \"#{prefix} #{commandline}\""
|
||||||
|
# puts
|
||||||
|
# puts "CMD = #{invocation}"
|
||||||
|
result = CMD.run_command(invocation)
|
||||||
|
result.stdout.encode!(universal_newline: true)
|
||||||
|
result.stderr.encode!(universal_newline: true)
|
||||||
|
convert_windows_output(result.stdout)
|
||||||
|
# remove the CLIXML header trash in windows
|
||||||
|
result.stderr.gsub!("#< CLIXML\n", "")
|
||||||
|
result
|
||||||
|
else
|
||||||
|
invocation = "#{prefix} #{commandline}"
|
||||||
|
CMD.run_command(invocation)
|
||||||
|
end
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
def inspec(commandline, prefix = nil)
|
||||||
|
run_cmd "#{exec_inspec} #{commandline}", prefix
|
||||||
end
|
end
|
||||||
|
|
||||||
def inspec_with_env(commandline, env = {})
|
def inspec_with_env(commandline, env = {})
|
||||||
|
|
Loading…
Reference in a new issue