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

Refresh before applying test step. #515

Merged
merged 1 commit into from
Jul 30, 2020

Conversation

paddycarver
Copy link
Contributor

Our test steps handle refreshes very explicitly, which is good. But we
don't actually refresh before applying the step, assuming the previous
step left our state in a good condition.

However, this means that if a config changes the value of a data
source--e.g., for a data source that generates JSON from HCL, as is
common in IAM resources--the data source's value in state won't be
updated before apply, meaning the resources depending on that data
source value will have a stale, incorrect value instead of the one in
the config.

As we advise users to not run Terraform with -refresh=false, this
doesn't mirror the user experience in production and is confusing--I
lost several hours to debugging it.

This PR explicitly runs refresh prior to applying or planning a test
step, so new data source values in the config can be accurately
reflected.

Our test steps handle refreshes very explicitly, which is good. But we
don't actually refresh before applying the step, assuming the previous
step left our state in a good condition.

However, this means that if a config changes the value of a data
source--e.g., for a data source that generates JSON from HCL, as is
common in IAM resources--the data source's value in state won't be
updated before apply, meaning the resources depending on that data
source value will have a stale, incorrect value instead of the one in
the config.

As we advise users to not run Terraform with -refresh=false, this
doesn't mirror the user experience in production and is confusing--I
lost several hours to debugging it.

This PR explicitly runs refresh prior to applying or planning a test
step, so new data source values in the config can be accurately
reflected.
@paddycarver paddycarver added bug Something isn't working project/binary-testing labels Jul 30, 2020
@paddycarver paddycarver added this to the v2.0.0 milestone Jul 30, 2020
@paddycarver paddycarver requested a review from a team July 30, 2020 11:51
@paultyng
Copy link
Contributor

Should we just remove the -refresh=false from the CreatePlan call?

@paddycarver
Copy link
Contributor Author

I kind of like that it's explicit, given it would be hard for a consumer of terraform-plugin-test to explicitly control refresh otherwise.

@paddycarver paddycarver merged commit 9148f94 into master Jul 30, 2020
@paddycarver paddycarver deleted the paddy_refresh_before_applying_teststep branch July 30, 2020 14:13
@ghost
Copy link

ghost commented Aug 30, 2020

I'm going to lock this issue because it has been closed for 30 days ⏳. This helps our maintainers find and focus on the active issues.

If you have found a problem that seems similar to this, please open a new issue and complete the issue template so we can capture all the details necessary to investigate further.

@ghost ghost locked and limited conversation to collaborators Aug 30, 2020
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
bug Something isn't working
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants