diff options
-rw-r--r-- | internal/testhelper/testhelper.go | 12 | ||||
-rw-r--r-- | internal/testhelper/testserver.go | 16 |
2 files changed, 18 insertions, 10 deletions
diff --git a/internal/testhelper/testhelper.go b/internal/testhelper/testhelper.go index 66aaa7b06..b833d378a 100644 --- a/internal/testhelper/testhelper.go +++ b/internal/testhelper/testhelper.go @@ -127,6 +127,14 @@ func MustRunCommand(t testing.TB, stdin io.Reader, name string, args ...string) return output } +// MustClose calls Close() on the Closer and fails the test in case it returns +// an error. This function is useful when closing via `defer`, as a simple +// `defer require.NoError(t, closer.Close())` would cause `closer.Close()` to +// be executed early already. +func MustClose(t testing.TB, closer io.Closer) { + require.NoError(t, closer.Close()) +} + // GetTemporaryGitalySocketFileName will return a unique, useable socket file name func GetTemporaryGitalySocketFileName(t testing.TB) string { require.NotEmpty(t, testDirectory, "you must call testhelper.Configure() before GetTemporaryGitalySocketFileName()") @@ -425,7 +433,7 @@ func GenerateTestCerts(t *testing.T) (string, string, Cleanup) { certFile, err := ioutil.TempFile("", "") require.NoError(t, err) - defer certFile.Close() + defer MustClose(t, certFile) // create chained PEM file with CA and entity cert for _, cert := range [][]byte{entityCert, caCert} { @@ -439,7 +447,7 @@ func GenerateTestCerts(t *testing.T) (string, string, Cleanup) { keyFile, err := ioutil.TempFile("", "") require.NoError(t, err) - defer keyFile.Close() + defer MustClose(t, keyFile) entityKeyBytes, err := x509.MarshalECPrivateKey(entityKey) require.NoError(t, err) diff --git a/internal/testhelper/testserver.go b/internal/testhelper/testserver.go index d977afce8..85563981f 100644 --- a/internal/testhelper/testserver.go +++ b/internal/testhelper/testserver.go @@ -143,11 +143,6 @@ func (p *TestServer) Start(t testing.TB) { praefectServerSocketPath := GetTemporaryGitalySocketFileName(t) - configFilePath := filepath.Join(tempDir, "config.toml") - configFile, err := os.Create(configFilePath) - require.NoError(t, err) - defer configFile.Close() - c := praefectconfig.Config{ SocketPath: praefectServerSocketPath, Auth: auth.Config{ @@ -178,8 +173,13 @@ func (p *TestServer) Start(t testing.TB) { }) } + configFilePath := filepath.Join(tempDir, "config.toml") + configFile, err := os.Create(configFilePath) + require.NoError(t, err) + defer MustClose(t, configFile) + require.NoError(t, toml.NewEncoder(configFile).Encode(&c)) - require.NoError(t, configFile.Close()) + require.NoError(t, configFile.Sync()) cmd := exec.Command(praefectBinPath, "-config", configFilePath) cmd.Stderr = os.Stderr @@ -202,7 +202,7 @@ func (p *TestServer) Start(t testing.TB) { conn, err := grpc.Dial("unix://"+praefectServerSocketPath, opts...) require.NoError(t, err) - defer conn.Close() + defer MustClose(t, conn) waitHealthy(t, conn, 3, time.Second) @@ -233,7 +233,7 @@ func (p *TestServer) listen(t testing.TB) string { conn, err := grpc.Dial("unix://"+socket, opts...) require.NoError(t, err) - defer conn.Close() + defer MustClose(t, conn) waitHealthy(t, conn, 3, time.Second) } |