Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

helper/resource: Skip data source states with TestStep.ImportStateCheck #1089

Merged
merged 2 commits into from Nov 4, 2022

Conversation

bflad
Copy link
Member

@bflad bflad commented Nov 3, 2022

Closes #1060

The TestStep type ImportStateCheck functionality is for verifying two specific scenarios over ImportStateVerify:

  • Resources which create multiple resources during import (an implementation detail which is an legacy anti-pattern that should no longer be present in resources).
  • Resources where importing may cause attributes to have syntactically different but semantically/functionally equivalent values that requires special logic to check.

Terraform 1.3 and later can include data source states when importing resources. Rather than forcing provider developers to account for this Terraform version-specific behavior, the ImportStateCheck logic will now only receive managed resource states to match the intended usage.

Previously with Terraform 1.2.9 and earlier:

--- PASS: TestTest_TestStep_ImportStateCheck_SkipDataSourceState (1.58s)

Previously with Terraform 1.3.4:

--- FAIL: TestTest_TestStep_ImportStateCheck_SkipDataSourceState (0.63s)
    /Users/bflad/src/github.com/hashicorp/terraform-plugin-sdk/helper/resource/testing_new_import_state_test.go:16: expected 1 state, got: 2

Now with Terraform 1.3.4:

--- PASS: TestTest_TestStep_ImportStateCheck_SkipDataSourceState (0.91s)

Reference: #1060

The `TestStep` type `ImportStateCheck` functionality is for verifying two specific scenarios over `ImportStateVerify`:

- Resources which create multiple resources during import (an implementation detail which is an legacy anti-pattern that should no longer be present in resources).
- Resources where importing may cause attributes to have syntactically different but semantically/functionally equivalent values that requires special logic to check.

Terraform 1.3 and later can include data source states when importing resources. Rather than forcing provider developers to account for this Terraform version-specific behavior, the `ImportStateCheck` logic will now only receive managed resource states to match the intended usage.

Previously with Terraform 1.2.9 and earlier:

```
--- PASS: TestTest_TestStep_ImportStateCheck_SkipDataSourceState (1.58s)
```

Previously with Terraform 1.3.4:

```
--- FAIL: TestTest_TestStep_ImportStateCheck_SkipDataSourceState (0.63s)
    /Users/bflad/src/github.com/hashicorp/terraform-plugin-sdk/helper/resource/testing_new_import_state_test.go:16: expected 1 state, got: 2
```

Now with Terraform 1.3.4:

```
--- PASS: TestTest_TestStep_ImportStateCheck_SkipDataSourceState (0.91s)
```
@bflad bflad added bug Something isn't working subsystem/tests Issues and feature requests related to the testing framework. labels Nov 3, 2022
@bflad bflad added this to the v2.24.1 milestone Nov 3, 2022
@bflad bflad requested a review from a team as a code owner November 3, 2022 20:04
Copy link
Contributor

@bendbennett bendbennett left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

Copy link

@Serpentiel Serpentiel left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lgtm

@bflad bflad merged commit ba4b604 into main Nov 4, 2022
@bflad bflad deleted the bflad/ImportStateCheck-multiple-states branch November 4, 2022 15:13
@github-actions
Copy link

github-actions bot commented Dec 5, 2022

I'm going to lock this pull request because it has been closed for 30 days ⏳. This helps our maintainers find and focus on the active contributions.
If you have found a problem that seems related to this change, please open a new issue and complete the issue template so we can capture all the details necessary to investigate further.

@github-actions github-actions bot locked as resolved and limited conversation to collaborators Dec 5, 2022
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
bug Something isn't working subsystem/tests Issues and feature requests related to the testing framework.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

ImportStateCheck func receives states other than the imported resource
3 participants