Shutdown Test Cores when Tests Complete (#10912)
* Shutdown Test Cores when Tests Complete * go mod vendor
This commit is contained in:
parent
42bae71806
commit
6e1b183f79
|
@ -181,7 +181,12 @@ func testVaultServerUninit(tb testing.TB) (*api.Client, func()) {
|
||||||
tb.Fatal(err)
|
tb.Fatal(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
return client, func() { ln.Close() }
|
closer := func() {
|
||||||
|
core.Shutdown()
|
||||||
|
ln.Close()
|
||||||
|
}
|
||||||
|
|
||||||
|
return client, closer
|
||||||
}
|
}
|
||||||
|
|
||||||
// testVaultServerBad creates an http server that returns a 500 on each request
|
// testVaultServerBad creates an http server that returns a 500 on each request
|
||||||
|
|
2
go.mod
2
go.mod
|
@ -113,7 +113,7 @@ require (
|
||||||
github.com/mitchellh/cli v1.1.1
|
github.com/mitchellh/cli v1.1.1
|
||||||
github.com/mitchellh/copystructure v1.0.0
|
github.com/mitchellh/copystructure v1.0.0
|
||||||
github.com/mitchellh/go-homedir v1.1.0
|
github.com/mitchellh/go-homedir v1.1.0
|
||||||
github.com/mitchellh/go-testing-interface v1.0.0
|
github.com/mitchellh/go-testing-interface v1.14.0
|
||||||
github.com/mitchellh/gox v1.0.1
|
github.com/mitchellh/gox v1.0.1
|
||||||
github.com/mitchellh/mapstructure v1.3.3
|
github.com/mitchellh/mapstructure v1.3.3
|
||||||
github.com/mitchellh/reflectwalk v1.0.1
|
github.com/mitchellh/reflectwalk v1.0.1
|
||||||
|
|
2
go.sum
2
go.sum
|
@ -834,6 +834,8 @@ github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrk
|
||||||
github.com/mitchellh/go-testing-interface v0.0.0-20171004221916-a61a99592b77/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI=
|
github.com/mitchellh/go-testing-interface v0.0.0-20171004221916-a61a99592b77/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI=
|
||||||
github.com/mitchellh/go-testing-interface v1.0.0 h1:fzU/JVNcaqHQEcVFAKeR41fkiLdIPrefOvVG1VZ96U0=
|
github.com/mitchellh/go-testing-interface v1.0.0 h1:fzU/JVNcaqHQEcVFAKeR41fkiLdIPrefOvVG1VZ96U0=
|
||||||
github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI=
|
github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI=
|
||||||
|
github.com/mitchellh/go-testing-interface v1.14.0 h1:/x0XQ6h+3U3nAyk1yx+bHPURrKa9sVVvYbuqZ7pIAtI=
|
||||||
|
github.com/mitchellh/go-testing-interface v1.14.0/go.mod h1:gfgS7OtZj6MA4U1UrDRp04twqAjfvlZyCfX3sDjEym8=
|
||||||
github.com/mitchellh/go-wordwrap v1.0.0/go.mod h1:ZXFpozHsX6DPmq2I0TCekCxypsnAUbP2oI0UX1GXzOo=
|
github.com/mitchellh/go-wordwrap v1.0.0/go.mod h1:ZXFpozHsX6DPmq2I0TCekCxypsnAUbP2oI0UX1GXzOo=
|
||||||
github.com/mitchellh/gox v0.4.0/go.mod h1:Sd9lOJ0+aimLBi73mGofS1ycjY8lL3uZM3JPS42BGNg=
|
github.com/mitchellh/gox v0.4.0/go.mod h1:Sd9lOJ0+aimLBi73mGofS1ycjY8lL3uZM3JPS42BGNg=
|
||||||
github.com/mitchellh/gox v1.0.1 h1:x0jD3dcHk9a9xPSDN6YEL4xL6Qz0dvNYm8yZqui5chI=
|
github.com/mitchellh/gox v1.0.1 h1:x0jD3dcHk9a9xPSDN6YEL4xL6Qz0dvNYm8yZqui5chI=
|
||||||
|
|
|
@ -4,12 +4,6 @@ import (
|
||||||
"bytes"
|
"bytes"
|
||||||
"context"
|
"context"
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"github.com/hashicorp/vault/internalshared/configutil"
|
|
||||||
"github.com/hashicorp/vault/sdk/helper/consts"
|
|
||||||
"github.com/hashicorp/vault/sdk/helper/logging"
|
|
||||||
"github.com/hashicorp/vault/sdk/logical"
|
|
||||||
"github.com/hashicorp/vault/sdk/physical"
|
|
||||||
"github.com/hashicorp/vault/sdk/physical/inmem"
|
|
||||||
"io"
|
"io"
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
"net/http"
|
"net/http"
|
||||||
|
@ -20,6 +14,13 @@ import (
|
||||||
"testing"
|
"testing"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
"github.com/hashicorp/vault/internalshared/configutil"
|
||||||
|
"github.com/hashicorp/vault/sdk/helper/consts"
|
||||||
|
"github.com/hashicorp/vault/sdk/helper/logging"
|
||||||
|
"github.com/hashicorp/vault/sdk/logical"
|
||||||
|
"github.com/hashicorp/vault/sdk/physical"
|
||||||
|
"github.com/hashicorp/vault/sdk/physical/inmem"
|
||||||
|
|
||||||
"github.com/go-test/deep"
|
"github.com/go-test/deep"
|
||||||
log "github.com/hashicorp/go-hclog"
|
log "github.com/hashicorp/go-hclog"
|
||||||
|
|
||||||
|
@ -107,6 +108,7 @@ func TestLogical_StandbyRedirect(t *testing.T) {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("err: %v", err)
|
t.Fatalf("err: %v", err)
|
||||||
}
|
}
|
||||||
|
defer core1.Shutdown()
|
||||||
keys, root := vault.TestCoreInit(t, core1)
|
keys, root := vault.TestCoreInit(t, core1)
|
||||||
for _, key := range keys {
|
for _, key := range keys {
|
||||||
if _, err := core1.Unseal(vault.TestKeyCopy(key)); err != nil {
|
if _, err := core1.Unseal(vault.TestKeyCopy(key)); err != nil {
|
||||||
|
@ -129,6 +131,7 @@ func TestLogical_StandbyRedirect(t *testing.T) {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("err: %v", err)
|
t.Fatalf("err: %v", err)
|
||||||
}
|
}
|
||||||
|
defer core2.Shutdown()
|
||||||
for _, key := range keys {
|
for _, key := range keys {
|
||||||
if _, err := core2.Unseal(vault.TestKeyCopy(key)); err != nil {
|
if _, err := core2.Unseal(vault.TestKeyCopy(key)); err != nil {
|
||||||
t.Fatalf("unseal err: %s", err)
|
t.Fatalf("unseal err: %s", err)
|
||||||
|
@ -283,8 +286,8 @@ func TestLogical_RequestSizeDisableLimit(t *testing.T) {
|
||||||
Core: core,
|
Core: core,
|
||||||
ListenerConfig: &configutil.Listener{
|
ListenerConfig: &configutil.Listener{
|
||||||
MaxRequestSize: -1,
|
MaxRequestSize: -1,
|
||||||
Address: "127.0.0.1",
|
Address: "127.0.0.1",
|
||||||
TLSDisable: true,
|
TLSDisable: true,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
TestServerWithListenerAndProperties(t, ln, addr, core, props)
|
TestServerWithListenerAndProperties(t, ln, addr, core, props)
|
||||||
|
@ -297,10 +300,9 @@ func TestLogical_RequestSizeDisableLimit(t *testing.T) {
|
||||||
resp := testHttpPut(t, token, addr+"/v1/secret/foo", map[string]interface{}{
|
resp := testHttpPut(t, token, addr+"/v1/secret/foo", map[string]interface{}{
|
||||||
"data": make([]byte, DefaultMaxRequestSize),
|
"data": make([]byte, DefaultMaxRequestSize),
|
||||||
})
|
})
|
||||||
testResponseStatus(t, resp,http.StatusNoContent)
|
testResponseStatus(t, resp, http.StatusNoContent)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
func TestLogical_ListSuffix(t *testing.T) {
|
func TestLogical_ListSuffix(t *testing.T) {
|
||||||
core, _, rootToken := vault.TestCoreUnsealed(t)
|
core, _, rootToken := vault.TestCoreUnsealed(t)
|
||||||
req, _ := http.NewRequest("GET", "http://127.0.0.1:8200/v1/secret/foo", nil)
|
req, _ := http.NewRequest("GET", "http://127.0.0.1:8200/v1/secret/foo", nil)
|
||||||
|
|
|
@ -118,6 +118,7 @@ func TestConsul_ServiceRegistration(t *testing.T) {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
|
defer core.Shutdown()
|
||||||
|
|
||||||
waitForServices(t, map[string][]string{
|
waitForServices(t, map[string][]string{
|
||||||
"consul": []string{},
|
"consul": []string{},
|
||||||
|
|
|
@ -81,6 +81,7 @@ func TestCore_EnableAudit(t *testing.T) {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("err: %v", err)
|
t.Fatalf("err: %v", err)
|
||||||
}
|
}
|
||||||
|
defer c2.Shutdown()
|
||||||
for i, key := range keys {
|
for i, key := range keys {
|
||||||
unseal, err := TestCoreUnseal(c2, key)
|
unseal, err := TestCoreUnseal(c2, key)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -288,6 +289,7 @@ func TestCore_DisableAudit(t *testing.T) {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("err: %v", err)
|
t.Fatalf("err: %v", err)
|
||||||
}
|
}
|
||||||
|
defer c2.Shutdown()
|
||||||
for i, key := range keys {
|
for i, key := range keys {
|
||||||
unseal, err := TestCoreUnseal(c2, key)
|
unseal, err := TestCoreUnseal(c2, key)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -322,6 +324,7 @@ func TestCore_DefaultAuditTable(t *testing.T) {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("err: %v", err)
|
t.Fatalf("err: %v", err)
|
||||||
}
|
}
|
||||||
|
defer c2.Shutdown()
|
||||||
for i, key := range keys {
|
for i, key := range keys {
|
||||||
unseal, err := TestCoreUnseal(c2, key)
|
unseal, err := TestCoreUnseal(c2, key)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
|
@ -124,6 +124,7 @@ func TestCore_DefaultAuthTable(t *testing.T) {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("err: %v", err)
|
t.Fatalf("err: %v", err)
|
||||||
}
|
}
|
||||||
|
defer c2.Shutdown()
|
||||||
for i, key := range keys {
|
for i, key := range keys {
|
||||||
unseal, err := TestCoreUnseal(c2, key)
|
unseal, err := TestCoreUnseal(c2, key)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -175,6 +176,7 @@ func TestCore_EnableCredential(t *testing.T) {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("err: %v", err)
|
t.Fatalf("err: %v", err)
|
||||||
}
|
}
|
||||||
|
defer c2.Shutdown()
|
||||||
c2.credentialBackends["noop"] = func(context.Context, *logical.BackendConfig) (logical.Backend, error) {
|
c2.credentialBackends["noop"] = func(context.Context, *logical.BackendConfig) (logical.Backend, error) {
|
||||||
return &NoopBackend{
|
return &NoopBackend{
|
||||||
BackendType: logical.TypeCredential,
|
BackendType: logical.TypeCredential,
|
||||||
|
@ -376,6 +378,7 @@ func TestCore_DisableCredential(t *testing.T) {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("err: %v", err)
|
t.Fatalf("err: %v", err)
|
||||||
}
|
}
|
||||||
|
defer c2.Shutdown()
|
||||||
for i, key := range keys {
|
for i, key := range keys {
|
||||||
unseal, err := TestCoreUnseal(c2, key)
|
unseal, err := TestCoreUnseal(c2, key)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
|
@ -62,6 +62,7 @@ func TestClusterHAFetching(t *testing.T) {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("err: %v", err)
|
t.Fatalf("err: %v", err)
|
||||||
}
|
}
|
||||||
|
defer c.Shutdown()
|
||||||
keys, _ := TestCoreInit(t, c)
|
keys, _ := TestCoreInit(t, c)
|
||||||
for _, key := range keys {
|
for _, key := range keys {
|
||||||
if _, err := TestCoreUnseal(c, TestKeyCopy(key)); err != nil {
|
if _, err := TestCoreUnseal(c, TestKeyCopy(key)); err != nil {
|
||||||
|
|
|
@ -1161,6 +1161,7 @@ func TestCore_Standby_Seal(t *testing.T) {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("err: %v", err)
|
t.Fatalf("err: %v", err)
|
||||||
}
|
}
|
||||||
|
defer core.Shutdown()
|
||||||
keys, root := TestCoreInit(t, core)
|
keys, root := TestCoreInit(t, core)
|
||||||
for _, key := range keys {
|
for _, key := range keys {
|
||||||
if _, err := TestCoreUnseal(core, TestKeyCopy(key)); err != nil {
|
if _, err := TestCoreUnseal(core, TestKeyCopy(key)); err != nil {
|
||||||
|
@ -1199,6 +1200,7 @@ func TestCore_Standby_Seal(t *testing.T) {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("err: %v", err)
|
t.Fatalf("err: %v", err)
|
||||||
}
|
}
|
||||||
|
defer core2.Shutdown()
|
||||||
for _, key := range keys {
|
for _, key := range keys {
|
||||||
if _, err := TestCoreUnseal(core2, TestKeyCopy(key)); err != nil {
|
if _, err := TestCoreUnseal(core2, TestKeyCopy(key)); err != nil {
|
||||||
t.Fatalf("unseal err: %s", err)
|
t.Fatalf("unseal err: %s", err)
|
||||||
|
@ -1272,6 +1274,7 @@ func TestCore_StepDown(t *testing.T) {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("err: %v", err)
|
t.Fatalf("err: %v", err)
|
||||||
}
|
}
|
||||||
|
defer core.Shutdown()
|
||||||
keys, root := TestCoreInit(t, core)
|
keys, root := TestCoreInit(t, core)
|
||||||
for _, key := range keys {
|
for _, key := range keys {
|
||||||
if _, err := TestCoreUnseal(core, TestKeyCopy(key)); err != nil {
|
if _, err := TestCoreUnseal(core, TestKeyCopy(key)); err != nil {
|
||||||
|
@ -1308,6 +1311,7 @@ func TestCore_StepDown(t *testing.T) {
|
||||||
DisableMlock: true,
|
DisableMlock: true,
|
||||||
Logger: logger.Named("core2"),
|
Logger: logger.Named("core2"),
|
||||||
})
|
})
|
||||||
|
defer core2.Shutdown()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("err: %v", err)
|
t.Fatalf("err: %v", err)
|
||||||
}
|
}
|
||||||
|
@ -1463,6 +1467,7 @@ func TestCore_CleanLeaderPrefix(t *testing.T) {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("err: %v", err)
|
t.Fatalf("err: %v", err)
|
||||||
}
|
}
|
||||||
|
defer core.Shutdown()
|
||||||
keys, root := TestCoreInit(t, core)
|
keys, root := TestCoreInit(t, core)
|
||||||
for _, key := range keys {
|
for _, key := range keys {
|
||||||
if _, err := TestCoreUnseal(core, TestKeyCopy(key)); err != nil {
|
if _, err := TestCoreUnseal(core, TestKeyCopy(key)); err != nil {
|
||||||
|
@ -1528,6 +1533,7 @@ func TestCore_CleanLeaderPrefix(t *testing.T) {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("err: %v", err)
|
t.Fatalf("err: %v", err)
|
||||||
}
|
}
|
||||||
|
defer core2.Shutdown()
|
||||||
for _, key := range keys {
|
for _, key := range keys {
|
||||||
if _, err := TestCoreUnseal(core2, TestKeyCopy(key)); err != nil {
|
if _, err := TestCoreUnseal(core2, TestKeyCopy(key)); err != nil {
|
||||||
t.Fatalf("unseal err: %s", err)
|
t.Fatalf("unseal err: %s", err)
|
||||||
|
@ -1640,6 +1646,7 @@ func testCore_Standby_Common(t *testing.T, inm physical.Backend, inmha physical.
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("err: %v", err)
|
t.Fatalf("err: %v", err)
|
||||||
}
|
}
|
||||||
|
defer core.Shutdown()
|
||||||
keys, root := TestCoreInit(t, core)
|
keys, root := TestCoreInit(t, core)
|
||||||
for _, key := range keys {
|
for _, key := range keys {
|
||||||
if _, err := TestCoreUnseal(core, TestKeyCopy(key)); err != nil {
|
if _, err := TestCoreUnseal(core, TestKeyCopy(key)); err != nil {
|
||||||
|
@ -1694,6 +1701,7 @@ func testCore_Standby_Common(t *testing.T, inm physical.Backend, inmha physical.
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("err: %v", err)
|
t.Fatalf("err: %v", err)
|
||||||
}
|
}
|
||||||
|
defer core2.Shutdown()
|
||||||
for _, key := range keys {
|
for _, key := range keys {
|
||||||
if _, err := TestCoreUnseal(core2, TestKeyCopy(key)); err != nil {
|
if _, err := TestCoreUnseal(core2, TestKeyCopy(key)); err != nil {
|
||||||
t.Fatalf("unseal err: %s", err)
|
t.Fatalf("unseal err: %s", err)
|
||||||
|
@ -2214,6 +2222,7 @@ func TestCore_Standby_Rotate(t *testing.T) {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("err: %v", err)
|
t.Fatalf("err: %v", err)
|
||||||
}
|
}
|
||||||
|
defer core.Shutdown()
|
||||||
keys, root := TestCoreInit(t, core)
|
keys, root := TestCoreInit(t, core)
|
||||||
for _, key := range keys {
|
for _, key := range keys {
|
||||||
if _, err := TestCoreUnseal(core, TestKeyCopy(key)); err != nil {
|
if _, err := TestCoreUnseal(core, TestKeyCopy(key)); err != nil {
|
||||||
|
@ -2235,6 +2244,7 @@ func TestCore_Standby_Rotate(t *testing.T) {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("err: %v", err)
|
t.Fatalf("err: %v", err)
|
||||||
}
|
}
|
||||||
|
defer core2.Shutdown()
|
||||||
for _, key := range keys {
|
for _, key := range keys {
|
||||||
if _, err := TestCoreUnseal(core2, TestKeyCopy(key)); err != nil {
|
if _, err := TestCoreUnseal(core2, TestKeyCopy(key)); err != nil {
|
||||||
t.Fatalf("unseal err: %s", err)
|
t.Fatalf("unseal err: %s", err)
|
||||||
|
@ -2530,6 +2540,7 @@ func TestCore_ServiceRegistration(t *testing.T) {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
|
defer core.Shutdown()
|
||||||
|
|
||||||
// Vault should not yet be registered
|
// Vault should not yet be registered
|
||||||
if diff := deep.Equal(sr, &mockServiceRegistration{}); diff != nil {
|
if diff := deep.Equal(sr, &mockServiceRegistration{}); diff != nil {
|
||||||
|
|
|
@ -41,6 +41,15 @@ func testCore_NewTestCoreLicensing(t *testing.T, seal Seal, licensingConfig *Lic
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("err: %v", err)
|
t.Fatalf("err: %v", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
t.Cleanup(func() {
|
||||||
|
defer func() {
|
||||||
|
if r := recover(); r != nil {
|
||||||
|
t.Log("panic closing core during cleanup", "panic", r)
|
||||||
|
}
|
||||||
|
}()
|
||||||
|
c.Shutdown()
|
||||||
|
})
|
||||||
return c, conf
|
return c, conf
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -126,6 +126,7 @@ func TestCore_DefaultMountTable(t *testing.T) {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("err: %v", err)
|
t.Fatalf("err: %v", err)
|
||||||
}
|
}
|
||||||
|
defer c2.Shutdown()
|
||||||
for i, key := range keys {
|
for i, key := range keys {
|
||||||
unseal, err := TestCoreUnseal(c2, key)
|
unseal, err := TestCoreUnseal(c2, key)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -170,6 +171,7 @@ func TestCore_Mount(t *testing.T) {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("err: %v", err)
|
t.Fatalf("err: %v", err)
|
||||||
}
|
}
|
||||||
|
defer c2.Shutdown()
|
||||||
for i, key := range keys {
|
for i, key := range keys {
|
||||||
unseal, err := TestCoreUnseal(c2, key)
|
unseal, err := TestCoreUnseal(c2, key)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -312,6 +314,7 @@ func TestCore_Unmount(t *testing.T) {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("err: %v", err)
|
t.Fatalf("err: %v", err)
|
||||||
}
|
}
|
||||||
|
defer c2.Shutdown()
|
||||||
for i, key := range keys {
|
for i, key := range keys {
|
||||||
unseal, err := TestCoreUnseal(c2, key)
|
unseal, err := TestCoreUnseal(c2, key)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -539,6 +542,7 @@ func TestCore_Remount(t *testing.T) {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("err: %v", err)
|
t.Fatalf("err: %v", err)
|
||||||
}
|
}
|
||||||
|
defer c2.Shutdown()
|
||||||
for i, key := range keys {
|
for i, key := range keys {
|
||||||
unseal, err := TestCoreUnseal(c2, key)
|
unseal, err := TestCoreUnseal(c2, key)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
|
@ -415,6 +415,7 @@ func TestCore_Rekey_Standby(t *testing.T) {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("err: %v", err)
|
t.Fatalf("err: %v", err)
|
||||||
}
|
}
|
||||||
|
defer core.Shutdown()
|
||||||
keys, root := TestCoreInit(t, core)
|
keys, root := TestCoreInit(t, core)
|
||||||
for _, key := range keys {
|
for _, key := range keys {
|
||||||
if _, err := TestCoreUnseal(core, TestKeyCopy(key)); err != nil {
|
if _, err := TestCoreUnseal(core, TestKeyCopy(key)); err != nil {
|
||||||
|
@ -437,6 +438,7 @@ func TestCore_Rekey_Standby(t *testing.T) {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("err: %v", err)
|
t.Fatalf("err: %v", err)
|
||||||
}
|
}
|
||||||
|
defer core2.Shutdown()
|
||||||
for _, key := range keys {
|
for _, key := range keys {
|
||||||
if _, err := TestCoreUnseal(core2, TestKeyCopy(key)); err != nil {
|
if _, err := TestCoreUnseal(core2, TestKeyCopy(key)); err != nil {
|
||||||
t.Fatalf("unseal err: %s", err)
|
t.Fatalf("unseal err: %s", err)
|
||||||
|
|
|
@ -178,6 +178,15 @@ func TestCoreWithSealAndUI(t testing.T, opts *CoreConfig) *Core {
|
||||||
t.Fatalf("err: %s", err)
|
t.Fatalf("err: %s", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
t.Cleanup(func() {
|
||||||
|
defer func() {
|
||||||
|
if r := recover(); r != nil {
|
||||||
|
t.Log("panic closing core during cleanup", "panic", r)
|
||||||
|
}
|
||||||
|
}()
|
||||||
|
c.Shutdown()
|
||||||
|
})
|
||||||
|
|
||||||
return c
|
return c
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -346,6 +355,14 @@ func testCoreUnsealed(t testing.T, core *Core) (*Core, [][]byte, string) {
|
||||||
|
|
||||||
testCoreAddSecretMount(t, core, token)
|
testCoreAddSecretMount(t, core, token)
|
||||||
|
|
||||||
|
t.Cleanup(func() {
|
||||||
|
defer func() {
|
||||||
|
if r := recover(); r != nil {
|
||||||
|
t.Log("panic closing core during cleanup", "panic", r)
|
||||||
|
}
|
||||||
|
}()
|
||||||
|
core.Shutdown()
|
||||||
|
})
|
||||||
return core, keys, token
|
return core, keys, token
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -399,6 +416,15 @@ func TestCoreUnsealedBackend(t testing.T, backend physical.Backend) (*Core, [][]
|
||||||
t.Fatal("should not be sealed")
|
t.Fatal("should not be sealed")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
t.Cleanup(func() {
|
||||||
|
defer func() {
|
||||||
|
if r := recover(); r != nil {
|
||||||
|
t.Log("panic closing core during cleanup", "panic", r)
|
||||||
|
}
|
||||||
|
}()
|
||||||
|
core.Shutdown()
|
||||||
|
})
|
||||||
|
|
||||||
return core, keys, token
|
return core, keys, token
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -575,6 +575,9 @@ func convertType(t FieldType) schemaType {
|
||||||
case TypeTime:
|
case TypeTime:
|
||||||
ret.baseType = "string"
|
ret.baseType = "string"
|
||||||
ret.format = "date-time"
|
ret.format = "date-time"
|
||||||
|
case TypeFloat:
|
||||||
|
ret.baseType = "number"
|
||||||
|
ret.format = "float"
|
||||||
default:
|
default:
|
||||||
log.L().Warn("error parsing field type", "type", t)
|
log.L().Warn("error parsing field type", "type", t)
|
||||||
ret.format = "unknown"
|
ret.format = "unknown"
|
||||||
|
|
|
@ -38,6 +38,14 @@ You can also call the test helper at runtime if needed:
|
||||||
TestHelper(&testing.RuntimeT{})
|
TestHelper(&testing.RuntimeT{})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
## Versioning
|
||||||
|
|
||||||
|
The tagged version matches the version of Go that the interface is
|
||||||
|
compatible with. For example, the version "1.14.0" is for Go 1.14 and
|
||||||
|
introduced the `Cleanup` function. The patch version (the ".0" in the
|
||||||
|
prior example) is used to fix any bugs found in this library and has no
|
||||||
|
correlation to the supported Go version.
|
||||||
|
|
||||||
## Why?!
|
## Why?!
|
||||||
|
|
||||||
**Why would I call a test helper that takes a *testing.T at runtime?**
|
**Why would I call a test helper that takes a *testing.T at runtime?**
|
||||||
|
|
|
@ -1 +1,3 @@
|
||||||
module github.com/mitchellh/go-testing-interface
|
module github.com/mitchellh/go-testing-interface
|
||||||
|
|
||||||
|
go 1.14
|
||||||
|
|
|
@ -1,5 +1,3 @@
|
||||||
// +build !go1.9
|
|
||||||
|
|
||||||
package testing
|
package testing
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
@ -12,6 +10,7 @@ import (
|
||||||
// In unit tests you can just pass a *testing.T struct. At runtime, outside
|
// In unit tests you can just pass a *testing.T struct. At runtime, outside
|
||||||
// of tests, you can pass in a RuntimeT struct from this package.
|
// of tests, you can pass in a RuntimeT struct from this package.
|
||||||
type T interface {
|
type T interface {
|
||||||
|
Cleanup(func())
|
||||||
Error(args ...interface{})
|
Error(args ...interface{})
|
||||||
Errorf(format string, args ...interface{})
|
Errorf(format string, args ...interface{})
|
||||||
Fail()
|
Fail()
|
||||||
|
@ -19,6 +18,7 @@ type T interface {
|
||||||
Failed() bool
|
Failed() bool
|
||||||
Fatal(args ...interface{})
|
Fatal(args ...interface{})
|
||||||
Fatalf(format string, args ...interface{})
|
Fatalf(format string, args ...interface{})
|
||||||
|
Helper()
|
||||||
Log(args ...interface{})
|
Log(args ...interface{})
|
||||||
Logf(format string, args ...interface{})
|
Logf(format string, args ...interface{})
|
||||||
Name() string
|
Name() string
|
||||||
|
@ -31,10 +31,13 @@ type T interface {
|
||||||
// RuntimeT implements T and can be instantiated and run at runtime to
|
// RuntimeT implements T and can be instantiated and run at runtime to
|
||||||
// mimic *testing.T behavior. Unlike *testing.T, this will simply panic
|
// mimic *testing.T behavior. Unlike *testing.T, this will simply panic
|
||||||
// for calls to Fatal. For calls to Error, you'll have to check the errors
|
// for calls to Fatal. For calls to Error, you'll have to check the errors
|
||||||
// list to determine whether to exit yourself. Name and Skip methods are
|
// list to determine whether to exit yourself.
|
||||||
// unimplemented noops.
|
//
|
||||||
|
// Cleanup does NOT work, so if you're using a helper that uses Cleanup,
|
||||||
|
// there may be dangling resources.
|
||||||
type RuntimeT struct {
|
type RuntimeT struct {
|
||||||
failed bool
|
skipped bool
|
||||||
|
failed bool
|
||||||
}
|
}
|
||||||
|
|
||||||
func (t *RuntimeT) Error(args ...interface{}) {
|
func (t *RuntimeT) Error(args ...interface{}) {
|
||||||
|
@ -43,20 +46,10 @@ func (t *RuntimeT) Error(args ...interface{}) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (t *RuntimeT) Errorf(format string, args ...interface{}) {
|
func (t *RuntimeT) Errorf(format string, args ...interface{}) {
|
||||||
log.Println(fmt.Sprintf(format, args...))
|
log.Printf(format, args...)
|
||||||
t.Fail()
|
t.Fail()
|
||||||
}
|
}
|
||||||
|
|
||||||
func (t *RuntimeT) Fatal(args ...interface{}) {
|
|
||||||
log.Println(fmt.Sprintln(args...))
|
|
||||||
t.FailNow()
|
|
||||||
}
|
|
||||||
|
|
||||||
func (t *RuntimeT) Fatalf(format string, args ...interface{}) {
|
|
||||||
log.Println(fmt.Sprintf(format, args...))
|
|
||||||
t.FailNow()
|
|
||||||
}
|
|
||||||
|
|
||||||
func (t *RuntimeT) Fail() {
|
func (t *RuntimeT) Fail() {
|
||||||
t.failed = true
|
t.failed = true
|
||||||
}
|
}
|
||||||
|
@ -69,6 +62,16 @@ func (t *RuntimeT) Failed() bool {
|
||||||
return t.failed
|
return t.failed
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (t *RuntimeT) Fatal(args ...interface{}) {
|
||||||
|
log.Print(args...)
|
||||||
|
t.FailNow()
|
||||||
|
}
|
||||||
|
|
||||||
|
func (t *RuntimeT) Fatalf(format string, args ...interface{}) {
|
||||||
|
log.Printf(format, args...)
|
||||||
|
t.FailNow()
|
||||||
|
}
|
||||||
|
|
||||||
func (t *RuntimeT) Log(args ...interface{}) {
|
func (t *RuntimeT) Log(args ...interface{}) {
|
||||||
log.Println(fmt.Sprintln(args...))
|
log.Println(fmt.Sprintln(args...))
|
||||||
}
|
}
|
||||||
|
@ -77,8 +80,28 @@ func (t *RuntimeT) Logf(format string, args ...interface{}) {
|
||||||
log.Println(fmt.Sprintf(format, args...))
|
log.Println(fmt.Sprintf(format, args...))
|
||||||
}
|
}
|
||||||
|
|
||||||
func (t *RuntimeT) Name() string { return "" }
|
func (t *RuntimeT) Name() string {
|
||||||
func (t *RuntimeT) Skip(args ...interface{}) {}
|
return ""
|
||||||
func (t *RuntimeT) SkipNow() {}
|
}
|
||||||
func (t *RuntimeT) Skipf(format string, args ...interface{}) {}
|
|
||||||
func (t *RuntimeT) Skipped() bool { return false }
|
func (t *RuntimeT) Skip(args ...interface{}) {
|
||||||
|
log.Print(args...)
|
||||||
|
t.SkipNow()
|
||||||
|
}
|
||||||
|
|
||||||
|
func (t *RuntimeT) SkipNow() {
|
||||||
|
t.skipped = true
|
||||||
|
}
|
||||||
|
|
||||||
|
func (t *RuntimeT) Skipf(format string, args ...interface{}) {
|
||||||
|
log.Printf(format, args...)
|
||||||
|
t.SkipNow()
|
||||||
|
}
|
||||||
|
|
||||||
|
func (t *RuntimeT) Skipped() bool {
|
||||||
|
return t.skipped
|
||||||
|
}
|
||||||
|
|
||||||
|
func (t *RuntimeT) Helper() {}
|
||||||
|
|
||||||
|
func (t *RuntimeT) Cleanup(func()) {}
|
||||||
|
|
|
@ -1,108 +0,0 @@
|
||||||
// +build go1.9
|
|
||||||
|
|
||||||
// NOTE: This is a temporary copy of testing.go for Go 1.9 with the addition
|
|
||||||
// of "Helper" to the T interface. Go 1.9 at the time of typing is in RC
|
|
||||||
// and is set for release shortly. We'll support this on master as the default
|
|
||||||
// as soon as 1.9 is released.
|
|
||||||
|
|
||||||
package testing
|
|
||||||
|
|
||||||
import (
|
|
||||||
"fmt"
|
|
||||||
"log"
|
|
||||||
)
|
|
||||||
|
|
||||||
// T is the interface that mimics the standard library *testing.T.
|
|
||||||
//
|
|
||||||
// In unit tests you can just pass a *testing.T struct. At runtime, outside
|
|
||||||
// of tests, you can pass in a RuntimeT struct from this package.
|
|
||||||
type T interface {
|
|
||||||
Error(args ...interface{})
|
|
||||||
Errorf(format string, args ...interface{})
|
|
||||||
Fail()
|
|
||||||
FailNow()
|
|
||||||
Failed() bool
|
|
||||||
Fatal(args ...interface{})
|
|
||||||
Fatalf(format string, args ...interface{})
|
|
||||||
Log(args ...interface{})
|
|
||||||
Logf(format string, args ...interface{})
|
|
||||||
Name() string
|
|
||||||
Skip(args ...interface{})
|
|
||||||
SkipNow()
|
|
||||||
Skipf(format string, args ...interface{})
|
|
||||||
Skipped() bool
|
|
||||||
Helper()
|
|
||||||
}
|
|
||||||
|
|
||||||
// RuntimeT implements T and can be instantiated and run at runtime to
|
|
||||||
// mimic *testing.T behavior. Unlike *testing.T, this will simply panic
|
|
||||||
// for calls to Fatal. For calls to Error, you'll have to check the errors
|
|
||||||
// list to determine whether to exit yourself.
|
|
||||||
type RuntimeT struct {
|
|
||||||
skipped bool
|
|
||||||
failed bool
|
|
||||||
}
|
|
||||||
|
|
||||||
func (t *RuntimeT) Error(args ...interface{}) {
|
|
||||||
log.Println(fmt.Sprintln(args...))
|
|
||||||
t.Fail()
|
|
||||||
}
|
|
||||||
|
|
||||||
func (t *RuntimeT) Errorf(format string, args ...interface{}) {
|
|
||||||
log.Printf(format, args...)
|
|
||||||
t.Fail()
|
|
||||||
}
|
|
||||||
|
|
||||||
func (t *RuntimeT) Fail() {
|
|
||||||
t.failed = true
|
|
||||||
}
|
|
||||||
|
|
||||||
func (t *RuntimeT) FailNow() {
|
|
||||||
panic("testing.T failed, see logs for output (if any)")
|
|
||||||
}
|
|
||||||
|
|
||||||
func (t *RuntimeT) Failed() bool {
|
|
||||||
return t.failed
|
|
||||||
}
|
|
||||||
|
|
||||||
func (t *RuntimeT) Fatal(args ...interface{}) {
|
|
||||||
log.Print(args...)
|
|
||||||
t.FailNow()
|
|
||||||
}
|
|
||||||
|
|
||||||
func (t *RuntimeT) Fatalf(format string, args ...interface{}) {
|
|
||||||
log.Printf(format, args...)
|
|
||||||
t.FailNow()
|
|
||||||
}
|
|
||||||
|
|
||||||
func (t *RuntimeT) Log(args ...interface{}) {
|
|
||||||
log.Println(fmt.Sprintln(args...))
|
|
||||||
}
|
|
||||||
|
|
||||||
func (t *RuntimeT) Logf(format string, args ...interface{}) {
|
|
||||||
log.Println(fmt.Sprintf(format, args...))
|
|
||||||
}
|
|
||||||
|
|
||||||
func (t *RuntimeT) Name() string {
|
|
||||||
return ""
|
|
||||||
}
|
|
||||||
|
|
||||||
func (t *RuntimeT) Skip(args ...interface{}) {
|
|
||||||
log.Print(args...)
|
|
||||||
t.SkipNow()
|
|
||||||
}
|
|
||||||
|
|
||||||
func (t *RuntimeT) SkipNow() {
|
|
||||||
t.skipped = true
|
|
||||||
}
|
|
||||||
|
|
||||||
func (t *RuntimeT) Skipf(format string, args ...interface{}) {
|
|
||||||
log.Printf(format, args...)
|
|
||||||
t.SkipNow()
|
|
||||||
}
|
|
||||||
|
|
||||||
func (t *RuntimeT) Skipped() bool {
|
|
||||||
return t.skipped
|
|
||||||
}
|
|
||||||
|
|
||||||
func (t *RuntimeT) Helper() {}
|
|
|
@ -779,7 +779,7 @@ github.com/mitchellh/cli
|
||||||
github.com/mitchellh/copystructure
|
github.com/mitchellh/copystructure
|
||||||
# github.com/mitchellh/go-homedir v1.1.0
|
# github.com/mitchellh/go-homedir v1.1.0
|
||||||
github.com/mitchellh/go-homedir
|
github.com/mitchellh/go-homedir
|
||||||
# github.com/mitchellh/go-testing-interface v1.0.0
|
# github.com/mitchellh/go-testing-interface v1.14.0
|
||||||
github.com/mitchellh/go-testing-interface
|
github.com/mitchellh/go-testing-interface
|
||||||
# github.com/mitchellh/gox v1.0.1
|
# github.com/mitchellh/gox v1.0.1
|
||||||
github.com/mitchellh/gox
|
github.com/mitchellh/gox
|
||||||
|
|
Loading…
Reference in New Issue