Fixed file resource raising UndefinedMethod on source_path

This is a first pass at fixing the failure found by @scottvidmar where
file resource was raising undefined_method on nil. The problem was
that the initialize method for file was not being called at all
because Resource#initialize was returning early without reporting
anything.

This fix causes a failure in test/functional/inspec_exec_test.rb where
it is testing a similar scenario but for some reason the unsupported
resources get reported. We need to figure that part out, but in the
meantime this will at least report an error at the root cause rather
than down the road.

Fixes #4208

Signed-off-by: Ryan Davis <zenspider@chef.io>
This commit is contained in:
Ryan Davis 2019-06-17 18:59:42 -07:00
parent 823c858073
commit 7273a7380f
2 changed files with 12 additions and 5 deletions

View file

@ -87,7 +87,15 @@ module Inspec
@__backend_runner__ = backend @__backend_runner__ = backend
@__resource_name__ = name @__resource_name__ = name
check_supports unless @supports.nil? # this has side effects # check resource supports
supported = @supports ? check_supports : true # check_supports has side effects!
test_backend = defined?(Train::Transports::Mock::Connection) && backend.backend.class == Train::Transports::Mock::Connection
# raise unless we are supported or in test
unless supported || test_backend
msg = "Unsupported resource/backend combination: %s / %s. Exiting." %
[name, backend.platform.name]
raise ArgumentError, msg
end
# call the resource initializer # call the resource initializer
begin begin

View file

@ -297,10 +297,9 @@ Test Summary: 0 successful, 0 failures, 0 skipped
let(:out) { inspec("exec " + File.join(profile_path, "aws-profile")) } let(:out) { inspec("exec " + File.join(profile_path, "aws-profile")) }
it "exits with an error" do it "exits with an error" do
skip if ENV["NO_AWS"] skip if ENV["NO_AWS"]
stdout.must_include "Unsupported resource/backend combination: aws_iam_users"
stdout.must_include "Resource `aws_iam_users` is not supported on platform" stdout.must_include "Unsupported resource/backend combination: aws_iam_access_keys"
stdout.must_include "Resource `aws_iam_access_keys` is not supported on platform" stdout.must_include "Unsupported resource/backend combination: aws_s3_bucket"
stdout.must_include "Resource `aws_s3_bucket` is not supported on platform"
stdout.must_include "3 failures" stdout.must_include "3 failures"
assert_exit_code 100, out assert_exit_code 100, out