From 9ba399bca88a2971d6fc5df457c3f8c79dafeeed Mon Sep 17 00:00:00 2001 From: Martin Atkins Date: Fri, 9 Nov 2018 15:06:00 -0800 Subject: [PATCH] command: Fix TestInit_getProvider After all of the refactoring we were no longer checking the Terraform version field in a state file, causing this test to fail. This restores that check, though with a slightly different error message. --- command/init_test.go | 2 +- states/statefile/read.go | 9 +++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/command/init_test.go b/command/init_test.go index 29eaa90fd4..41e0d0ec60 100644 --- a/command/init_test.go +++ b/command/init_test.go @@ -691,7 +691,7 @@ func TestInit_getProvider(t *testing.T) { } errMsg := ui.ErrorWriter.String() - if !strings.Contains(errMsg, "future Terraform version") { + if !strings.Contains(errMsg, "which is newer than current") { t.Fatal("unexpected error:", errMsg) } }) diff --git a/states/statefile/read.go b/states/statefile/read.go index 8abd3be14d..d691c0290d 100644 --- a/states/statefile/read.go +++ b/states/statefile/read.go @@ -62,6 +62,15 @@ func Read(r io.Reader) (*File, error) { panic("readState returned nil state with no errors") } + if state.TerraformVersion != nil && state.TerraformVersion.GreaterThan(tfversion.SemVer) { + return state, fmt.Errorf( + "state snapshot was created by Terraform v%s, which is newer than current v%s; upgrade to Terraform v%s or greater to work with this state", + state.TerraformVersion, + tfversion.SemVer, + state.TerraformVersion, + ) + } + return state, diags.Err() }