From 6491128ed6fece9380a82ef28b1abcc9744075db Mon Sep 17 00:00:00 2001 From: Mike Morris Date: Fri, 8 Nov 2019 13:55:26 -0500 Subject: [PATCH 1/2] add NewTestServerT, deprecate NewTestServer to prevent nil pointer deref from t.Logf usage --- sdk/testutil/README.md | 4 ++-- sdk/testutil/server.go | 9 +++++++-- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/sdk/testutil/README.md b/sdk/testutil/README.md index 2462d55dfb86..641e7f44adaf 100644 --- a/sdk/testutil/README.md +++ b/sdk/testutil/README.md @@ -27,7 +27,7 @@ import ( func TestFoo_bar(t *testing.T) { // Create a test Consul server - srv1, err := testutil.NewTestServer() + srv1, err := testutil.NewTestServerT(t) if err != nil { t.Fatal(err) } @@ -35,7 +35,7 @@ func TestFoo_bar(t *testing.T) { // Create a secondary server, passing in configuration // to avoid bootstrapping as we are forming a cluster. - srv2, err := testutil.NewTestServerConfig(t, func(c *testutil.TestServerConfig) { + srv2, err := testutil.NewTestServerConfigT(t, func(c *testutil.TestServerConfig) { c.Bootstrap = false }) if err != nil { diff --git a/sdk/testutil/server.go b/sdk/testutil/server.go index 6d01578a8b7e..5d1d47d9112c 100644 --- a/sdk/testutil/server.go +++ b/sdk/testutil/server.go @@ -211,12 +211,17 @@ type TestServer struct { tmpdir string } -// NewTestServer is an easy helper method to create a new Consul -// test server with the most basic configuration. +// Deprecated: Use NewTestServerT instead. func NewTestServer() (*TestServer, error) { return NewTestServerConfigT(nil, nil) } +// NewTestServerT is an easy helper method to create a new Consul +// test server with the most basic configuration. +func NewTestServerT(t *testing.T) (*TestServer, error) { + return NewTestServerConfigT(t, nil) +} + func NewTestServerConfig(cb ServerConfigCallback) (*TestServer, error) { return NewTestServerConfigT(nil, cb) } From 15ddd5a593cf4cafbde482e2c93f7e6cc64d1656 Mon Sep 17 00:00:00 2001 From: Mike Morris Date: Fri, 8 Nov 2019 17:34:24 -0500 Subject: [PATCH 2/2] sdk: enforce non-nil *testing.T in testutil::NewTestServerT --- sdk/testutil/server.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/sdk/testutil/server.go b/sdk/testutil/server.go index 5d1d47d9112c..6091754e1ded 100644 --- a/sdk/testutil/server.go +++ b/sdk/testutil/server.go @@ -219,6 +219,9 @@ func NewTestServer() (*TestServer, error) { // NewTestServerT is an easy helper method to create a new Consul // test server with the most basic configuration. func NewTestServerT(t *testing.T) (*TestServer, error) { + if t == nil { + return nil, errors.New("testutil: a non-nil *testing.T is required") + } return NewTestServerConfigT(t, nil) }