Workhorse: Replace cleanup with t.Cleanup

Overview

Before t.Cleanup was introduced in 1.14 we had to return a cleanup function from a helper and defer its execution in order to perform cleanup after the tests: for example, to stop the test HTTP server or remove a temp dir.

Examples:

internal/upload/artifacts_upload_test.go
128:	cleanup    func()
146:	cleanup := func() {
157:	return &testServer{url: ts.URL + Path + qs, writer: writer, buffer: &buffer, fileWriter: fileWriter, cleanup: cleanup}
214:			defer s.cleanup()
...

internal/lsif_transformer/parser/ranges_test.go
11:	r, cleanup := setup(t)
...

List of files/functions that can be potentially refactored:

  • (cleanup) -- internal/upload/artifacts_upload_test.go
  • (setup) -- internal/lsif_transformer/parser/ranges_test.go
  • (testAuthServer) -- main_test.go -- this function can close the started server in t.Cleanup: it will save us from calling defer ts.Close() everytime
  • (startWorkhorseServerWithConfig, startWorkhorseServer) -- main_test.go -- these two functions can accept *testing.T and internally cleanup: it will save us from calling defer ws.Close() everytime
  • (startWebsocketServer) -- channel_test.go -- this function can accept *testing.T and internally cleanup: it will save us from calling defer ws.Close() everytime
  • (wireupChannel) -- channel_test.go -- contains calls to testAuthServer, startWorkhorseServer, startWebsocketServer: when these functions are refactored, wireupChannel don't need to explicitly cleanup anything
  • (startRemoteServer) -- internal/upstream/upstream_test.go -- this function can close the started server in t.Cleanup: it will save us from calling defer rs.Close() everytime
  • (startRailsServer) -- internal/upstream/upstream_test.go -- this function can close the started server in t.Cleanup: it will save us from calling defer rs.Close() everytime
  • (startWorkhorseServer) -- internal/upstream/upstream_test.go -- this function can close the started server in t.Cleanup: it will save us from calling defer ws.Close() everytime

Proposal

With t.Cleanup the cleanup function can be registered, which means it will be called after the test is complete.

Example: Refactor testhelper.PrepareTestRootDir using t.... (gitlab-shell!493 - merged)

Edited by Gavin Hinfey