From 10285c34fcdea8d753fc513b55f95b8105c46328 Mon Sep 17 00:00:00 2001 From: Paul Hinze Date: Thu, 30 Apr 2015 10:13:32 -0500 Subject: [PATCH] helper/resource: verify refresh+plan after each step I forgot to add `Computed: true` when I made the "key_name" field optional in #1751. This made the behavior: * Name generated in Create and set as ID * Follow up plan (without refresh) was nice and empty * During refresh, name gets cleared out on Read, causing a bad diff on subsequent plans We can automatically catch bugs like this if we add yet another verification step to our resource acceptance tests -> a post Refresh+Plan that we verify is empty. I left the non-refresh Plan verification in, because it's important that _both_ of these are empty after an Apply. --- helper/resource/testing.go | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/helper/resource/testing.go b/helper/resource/testing.go index d8a2b253abe1..d153f93dc6f7 100644 --- a/helper/resource/testing.go +++ b/helper/resource/testing.go @@ -240,7 +240,8 @@ func testStep( } } - // Verify that Plan is now empty and we don't have a perpetual diff issue + // Now, verify that Plan is now empty and we don't have a perpetual diff issue + // We do this with TWO plans. One without a refresh. if p, err := ctx.Plan(); err != nil { return state, fmt.Errorf("Error on follow-up plan: %s", err) } else { @@ -250,6 +251,21 @@ func testStep( } } + // And another after a Refresh. + state, err = ctx.Refresh() + if err != nil { + return state, fmt.Errorf( + "Error on follow-up refresh: %s", err) + } + if p, err := ctx.Plan(); err != nil { + return state, fmt.Errorf("Error on second follow-up plan: %s", err) + } else { + if p.Diff != nil && !p.Diff.Empty() { + return state, fmt.Errorf( + "After applying this step and refreshing, the plan was not empty:\n\n%s", p) + } + } + return state, err }