Harness adds some functionality to testing.T, in particular resource cleanup. It embeds testing.T, so should have the same signature.
Example usage: ```
func MyTest(tt *testing.T) { t := harness.For(tt) defer t.Close() ... }
```
type Harness struct { *testing.T // contains filtered or unexported fields }
func For(t *testing.T) *Harness
For creates a Harness from a testing.T Callers must call Close on the Harness so that resources can be cleaned up
func (h *Harness) Close()
Close cleans up any owned resources, and should be called in a defer block after For
func (h *Harness) TempDir(baseDir string, prefix string) string
TempDir is a wrapper around os.MkdirTemp for tests. It automatically fails the test if we can't create a temp file, and deletes the temp directory when Close is called on the Harness