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() }