test: don't panic when resolving references that haven't been evaluated #37484
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.
There's a bit of an inconsistency in the way we handle references to objects that haven't been resolved. Resource and local references result in panics, the other references return dynamic values. This PR updates resources and locals so they behave in the same way as other references.
Note, that references to non-existent resources / locals still results in an error as this is checked separately. This isn't normally an issue in regular Terraform as you would have graph cycles if references were circular during regular execution. But, it is possible to assert values against incomplete plans in both
terraform testandterraform consoleand this is where you would see panics. Users can try to check values that weren't included in the plan because of an error or partial targeting, and this would result in panics. After this PR, we'd see unknown values returned for these references which matches the behaviour of modules / outputs / inputs.Fixes #37409
Target Release
1.13.1
Rollback Plan
Changes to Security Controls
Are there any changes to security controls (access controls, encryption, logging) in this pull request? If so, explain.
CHANGELOG entry