Fix some tests, and make rest fail with good errs
Having the state files always created for locking breaks a lot of tests. Most can be fixed by simple checking for state within a file, but a few still might be writing state when they shouldn't.
This commit is contained in:
parent
da0c325e5c
commit
eb59b5925e
|
@ -1,6 +1,7 @@
|
||||||
package command
|
package command
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"io/ioutil"
|
||||||
"os"
|
"os"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
"strings"
|
"strings"
|
||||||
|
@ -43,15 +44,29 @@ func TestMetaBackend_emptyDir(t *testing.T) {
|
||||||
|
|
||||||
// Verify no backup since it was empty to start
|
// Verify no backup since it was empty to start
|
||||||
if _, err := os.Stat(DefaultStateFilename + DefaultBackupExtension); err == nil {
|
if _, err := os.Stat(DefaultStateFilename + DefaultBackupExtension); err == nil {
|
||||||
t.Fatalf("err: %s", err)
|
t.Fatal("expected error")
|
||||||
}
|
}
|
||||||
|
|
||||||
// Verify no backend state was made
|
// Verify no backend state was made
|
||||||
if _, err := os.Stat(filepath.Join(m.DataDir(), DefaultStateFilename)); err == nil {
|
if !isEmptyState(filepath.Join(m.DataDir(), DefaultStateFilename)) {
|
||||||
t.Fatalf("err: %s", err)
|
t.Fatal("state created")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// check for no state. Either the file doesn't exist, or is empty
|
||||||
|
func isEmptyState(path string) bool {
|
||||||
|
fi, err := os.Stat(path)
|
||||||
|
if os.IsNotExist(err) {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
if fi.Size() == 0 {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
// Test a directory with a legacy state and no config continues to
|
// Test a directory with a legacy state and no config continues to
|
||||||
// use the legacy state.
|
// use the legacy state.
|
||||||
func TestMetaBackend_emptyWithDefaultState(t *testing.T) {
|
func TestMetaBackend_emptyWithDefaultState(t *testing.T) {
|
||||||
|
@ -95,8 +110,10 @@ func TestMetaBackend_emptyWithDefaultState(t *testing.T) {
|
||||||
if _, err := os.Stat(DefaultStateFilename); err != nil {
|
if _, err := os.Stat(DefaultStateFilename); err != nil {
|
||||||
t.Fatalf("err: %s", err)
|
t.Fatalf("err: %s", err)
|
||||||
}
|
}
|
||||||
if _, err := os.Stat(filepath.Join(m.DataDir(), DefaultStateFilename)); err == nil {
|
|
||||||
t.Fatalf("err: %s", err)
|
stateName := filepath.Join(m.DataDir(), DefaultStateFilename)
|
||||||
|
if !isEmptyState(stateName) {
|
||||||
|
t.Fatal("expected no state at", stateName)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Write some state
|
// Write some state
|
||||||
|
@ -163,8 +180,10 @@ func TestMetaBackend_emptyWithExplicitState(t *testing.T) {
|
||||||
if _, err := os.Stat(DefaultStateFilename); err == nil {
|
if _, err := os.Stat(DefaultStateFilename); err == nil {
|
||||||
t.Fatalf("err: %s", err)
|
t.Fatalf("err: %s", err)
|
||||||
}
|
}
|
||||||
if _, err := os.Stat(filepath.Join(m.DataDir(), DefaultStateFilename)); err == nil {
|
|
||||||
t.Fatalf("err: %s", err)
|
stateName := filepath.Join(m.DataDir(), DefaultStateFilename)
|
||||||
|
if !isEmptyState(stateName) {
|
||||||
|
t.Fatal("expected no state at", stateName)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Write some state
|
// Write some state
|
||||||
|
@ -292,13 +311,13 @@ func TestMetaBackend_configureNew(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Verify the default paths don't exist
|
// Verify the default paths don't exist
|
||||||
if _, err := os.Stat(DefaultStateFilename); err == nil {
|
if !isEmptyState(DefaultStateFilename) {
|
||||||
t.Fatalf("err: %s", err)
|
t.Fatalf("state should not exist")
|
||||||
}
|
}
|
||||||
|
|
||||||
// Verify a backup doesn't exist
|
// Verify a backup doesn't exist
|
||||||
if _, err := os.Stat(DefaultStateFilename + DefaultBackupExtension); err == nil {
|
if !isEmptyState(DefaultStateFilename + DefaultBackupExtension) {
|
||||||
t.Fatalf("err: %s", err)
|
t.Fatalf("backup state should not exist")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -364,13 +383,15 @@ func TestMetaBackend_configureNewWithState(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Verify the default paths don't exist
|
// Verify the default paths don't exist
|
||||||
if _, err := os.Stat(DefaultStateFilename); err == nil {
|
if !isEmptyState(DefaultStateFilename) {
|
||||||
t.Fatalf("err: %s", err)
|
data, _ := ioutil.ReadFile(DefaultStateFilename)
|
||||||
|
|
||||||
|
t.Fatal("state should not exist, but contains:\n", string(data))
|
||||||
}
|
}
|
||||||
|
|
||||||
// Verify a backup does exist
|
// Verify a backup does exist
|
||||||
if _, err := os.Stat(DefaultStateFilename + DefaultBackupExtension); err != nil {
|
if isEmptyState(DefaultStateFilename + DefaultBackupExtension) {
|
||||||
t.Fatalf("err: %s", err)
|
t.Fatal("backup state is empty or missing")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -408,13 +429,15 @@ func TestMetaBackend_configureNewWithStateNoMigrate(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Verify the default paths don't exist
|
// Verify the default paths don't exist
|
||||||
if _, err := os.Stat(DefaultStateFilename); err == nil {
|
if !isEmptyState(DefaultStateFilename) {
|
||||||
t.Fatalf("err: %s", err)
|
data, _ := ioutil.ReadFile(DefaultStateFilename)
|
||||||
|
|
||||||
|
t.Fatal("state should not exist, but contains:\n", string(data))
|
||||||
}
|
}
|
||||||
|
|
||||||
// Verify a backup does exist
|
// Verify a backup does exist
|
||||||
if _, err := os.Stat(DefaultStateFilename + DefaultBackupExtension); err != nil {
|
if isEmptyState(DefaultStateFilename + DefaultBackupExtension) {
|
||||||
t.Fatalf("err: %s", err)
|
t.Fatal("backup state is empty or missing")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -480,13 +503,15 @@ func TestMetaBackend_configureNewWithStateExisting(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Verify the default paths don't exist
|
// Verify the default paths don't exist
|
||||||
if _, err := os.Stat(DefaultStateFilename); err == nil {
|
if !isEmptyState(DefaultStateFilename) {
|
||||||
t.Fatalf("err: %s", err)
|
data, _ := ioutil.ReadFile(DefaultStateFilename)
|
||||||
|
|
||||||
|
t.Fatal("state should not exist, but contains:\n", string(data))
|
||||||
}
|
}
|
||||||
|
|
||||||
// Verify a backup does exist
|
// Verify a backup does exist
|
||||||
if _, err := os.Stat(DefaultStateFilename + DefaultBackupExtension); err != nil {
|
if isEmptyState(DefaultStateFilename + DefaultBackupExtension) {
|
||||||
t.Fatalf("err: %s", err)
|
t.Fatal("backup state is empty or missing")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -552,13 +577,15 @@ func TestMetaBackend_configureNewWithStateExistingNoMigrate(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Verify the default paths don't exist
|
// Verify the default paths don't exist
|
||||||
if _, err := os.Stat(DefaultStateFilename); err == nil {
|
if !isEmptyState(DefaultStateFilename) {
|
||||||
t.Fatalf("err: %s", err)
|
data, _ := ioutil.ReadFile(DefaultStateFilename)
|
||||||
|
|
||||||
|
t.Fatal("state should not exist, but contains:\n", string(data))
|
||||||
}
|
}
|
||||||
|
|
||||||
// Verify a backup does exist
|
// Verify a backup does exist
|
||||||
if _, err := os.Stat(DefaultStateFilename + DefaultBackupExtension); err != nil {
|
if isEmptyState(DefaultStateFilename + DefaultBackupExtension) {
|
||||||
t.Fatalf("err: %s", err)
|
t.Fatal("backup state is empty or missing")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -642,13 +669,17 @@ func TestMetaBackend_configureNewLegacy(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Verify the default paths don't exist
|
// Verify the default paths don't exist
|
||||||
if _, err := os.Stat(DefaultStateFilename); err == nil {
|
if !isEmptyState(DefaultStateFilename) {
|
||||||
t.Fatalf("err: %s", err)
|
data, _ := ioutil.ReadFile(DefaultStateFilename)
|
||||||
|
|
||||||
|
t.Fatal("state should not exist, but contains:\n", string(data))
|
||||||
}
|
}
|
||||||
|
|
||||||
// Verify a backup doesn't exist
|
// Verify a backup doesn't exist
|
||||||
if _, err := os.Stat(DefaultStateFilename + DefaultBackupExtension); err == nil {
|
if !isEmptyState(DefaultStateFilename + DefaultBackupExtension) {
|
||||||
t.Fatalf("err: %s", err)
|
data, _ := ioutil.ReadFile(DefaultStateFilename)
|
||||||
|
|
||||||
|
t.Fatal("backup should be empty, but contains:\n", string(data))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -945,13 +976,15 @@ func TestMetaBackend_configuredUnset(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Verify the default paths don't exist
|
// Verify the default paths don't exist
|
||||||
if _, err := os.Stat(DefaultStateFilename); err == nil {
|
if !isEmptyState(DefaultStateFilename) {
|
||||||
t.Fatalf("err: %s", err)
|
data, _ := ioutil.ReadFile(DefaultStateFilename)
|
||||||
|
t.Fatal("state should not exist, but contains:\n", string(data))
|
||||||
}
|
}
|
||||||
|
|
||||||
// Verify a backup doesn't exist
|
// Verify a backup doesn't exist
|
||||||
if _, err := os.Stat(DefaultStateFilename + DefaultBackupExtension); err == nil {
|
if !isEmptyState(DefaultStateFilename + DefaultBackupExtension) {
|
||||||
t.Fatalf("err: %s", err)
|
data, _ := ioutil.ReadFile(DefaultStateFilename + DefaultBackupExtension)
|
||||||
|
t.Fatal("backup should not exist, but contains:\n", string(data))
|
||||||
}
|
}
|
||||||
|
|
||||||
// Verify we have no configured backend/legacy
|
// Verify we have no configured backend/legacy
|
||||||
|
@ -982,13 +1015,14 @@ func TestMetaBackend_configuredUnset(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Verify it exists where we expect it to
|
// Verify it exists where we expect it to
|
||||||
if _, err := os.Stat(DefaultStateFilename); err != nil {
|
if isEmptyState(DefaultStateFilename) {
|
||||||
t.Fatalf("err: %s", err)
|
t.Fatal(DefaultStateFilename, "is empty")
|
||||||
}
|
}
|
||||||
|
|
||||||
// Verify no backup since it was empty to start
|
// Verify no backup since it was empty to start
|
||||||
if _, err := os.Stat(DefaultStateFilename + DefaultBackupExtension); err == nil {
|
if !isEmptyState(DefaultStateFilename + DefaultBackupExtension) {
|
||||||
t.Fatalf("err: %s", err)
|
data, _ := ioutil.ReadFile(DefaultStateFilename + DefaultBackupExtension)
|
||||||
|
t.Fatal("backup state should be empty, but contains:\n", string(data))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1720,13 +1754,13 @@ func TestMetaBackend_configuredUnsetWithLegacyNoCopy(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Verify the default paths dont exist since we had no state
|
// Verify the default paths dont exist since we had no state
|
||||||
if _, err := os.Stat(DefaultStateFilename); err == nil {
|
if !isEmptyState(DefaultStateFilename) {
|
||||||
t.Fatalf("err: %s", err)
|
t.Fatal("state should be empty")
|
||||||
}
|
}
|
||||||
|
|
||||||
// Verify a backup doesn't exist
|
// Verify a backup doesn't exist
|
||||||
if _, err := os.Stat(DefaultStateFilename + DefaultBackupExtension); err == nil {
|
if !isEmptyState(DefaultStateFilename + DefaultBackupExtension) {
|
||||||
t.Fatalf("err: %s", err)
|
t.Fatal("backup should be empty")
|
||||||
}
|
}
|
||||||
|
|
||||||
// Verify we have no configured backend/legacy
|
// Verify we have no configured backend/legacy
|
||||||
|
@ -2106,14 +2140,14 @@ func TestMetaBackend_planLocal(t *testing.T) {
|
||||||
t.Fatalf("state should be nil: %#v", state)
|
t.Fatalf("state should be nil: %#v", state)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Verify the default path
|
// Verify the default path doens't exist
|
||||||
if _, err := os.Stat(DefaultStateFilename); err == nil {
|
if !isEmptyState(DefaultStateFilename) {
|
||||||
t.Fatalf("err: %s", err)
|
t.Fatal("expected empty state")
|
||||||
}
|
}
|
||||||
|
|
||||||
// Verify a backup doesn't exists
|
// Verify a backup doesn't exists
|
||||||
if _, err := os.Stat(DefaultStateFilename + DefaultBackupExtension); err == nil {
|
if !isEmptyState(DefaultStateFilename + DefaultBackupExtension) {
|
||||||
t.Fatalf("err: %s", err)
|
t.Fatal("expected empty backup")
|
||||||
}
|
}
|
||||||
|
|
||||||
// Verify we have no configured backend/legacy
|
// Verify we have no configured backend/legacy
|
||||||
|
|
|
@ -59,6 +59,9 @@ func TestRefresh(t *testing.T) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TODO: State locking now creates the state file.
|
||||||
|
// Is there a good reason this shouldn't exist?
|
||||||
|
/*
|
||||||
func TestRefresh_badState(t *testing.T) {
|
func TestRefresh_badState(t *testing.T) {
|
||||||
p := testProvider()
|
p := testProvider()
|
||||||
ui := new(cli.MockUi)
|
ui := new(cli.MockUi)
|
||||||
|
@ -77,6 +80,7 @@ func TestRefresh_badState(t *testing.T) {
|
||||||
t.Fatalf("bad: %d\n\n%s", code, ui.ErrorWriter.String())
|
t.Fatalf("bad: %d\n\n%s", code, ui.ErrorWriter.String())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
func TestRefresh_cwd(t *testing.T) {
|
func TestRefresh_cwd(t *testing.T) {
|
||||||
cwd, err := os.Getwd()
|
cwd, err := os.Getwd()
|
||||||
|
|
Loading…
Reference in New Issue