mocking overrides: default to concrete empty object when values are missing #34563
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
When the
values
oroutputs
attribute was missing from theoverride_*
blocks in the new mocking framework, we were setting the value to becty.NilVal
. This was then causing a crash later in the processing when Terraform was assuming the values in these attributes was an object.From the perspective of the mocking framework a nil or empty value is the same, in both cases it should just generate the values required. This PR updates the config parsing so that it just sets the value to be an object always using
cty.EmptyObjectValue
if the attribute isn't specified. It also updates the Terraform graph where this is read so that it can safely handle acty.NilVal
anyway.We also add in a quick bit of validation, that makes sure the config specifies the attributes as an object, if it is specified.
Fixes #34562
Target Release
1.7.1
Draft CHANGELOG entry
BUG FIXES
terraform test
: Fix crash whenoverride_module
block was missing theoutputs
attribute.