Add test.Helper, also works with Go 1.8

This commit is contained in:
Alexander Neumann 2018-03-30 22:49:49 +02:00
parent a472868e06
commit 0532f08048
4 changed files with 41 additions and 0 deletions

View file

@ -3,6 +3,8 @@ package fs
import (
"os"
"testing"
"github.com/restic/restic/internal/test"
)
// IsRegularFile returns true if fi belongs to a normal file. If fi is nil,
@ -17,6 +19,8 @@ func IsRegularFile(fi os.FileInfo) bool {
// TestChdir changes the current directory to dest, the function back returns to the previous directory.
func TestChdir(t testing.TB, dest string) (back func()) {
test.Helper(t).Helper()
prev, err := os.Getwd()
if err != nil {
t.Fatal(err)
@ -29,6 +33,7 @@ func TestChdir(t testing.TB, dest string) (back func()) {
}
return func() {
test.Helper(t).Helper()
t.Logf("chdir back to %v", prev)
err = os.Chdir(prev)
if err != nil {

View file

@ -42,6 +42,7 @@ const testChunkerPol = chunker.Pol(0x3DA3358B4DC173)
// password. If be is nil, an in-memory backend is used. A constant polynomial
// is used for the chunker and low-security test parameters.
func TestRepositoryWithBackend(t testing.TB, be restic.Backend) (r restic.Repository, cleanup func()) {
test.Helper(t).Helper()
TestUseLowSecurityKDFParameters(t)
restic.TestDisableCheckPolynomial(t)
@ -70,6 +71,7 @@ func TestRepositoryWithBackend(t testing.TB, be restic.Backend) (r restic.Reposi
// a non-existing directory, a local backend is created there and this is used
// instead. The directory is not removed, but left there for inspection.
func TestRepository(t testing.TB) (r restic.Repository, cleanup func()) {
test.Helper(t).Helper()
dir := os.Getenv("RESTIC_TEST_REPO")
if dir != "" {
_, err := os.Stat(dir)

15
internal/test/helper.go Normal file
View file

@ -0,0 +1,15 @@
// +build go1.9
package test
import "testing"
// Helperer marks the current function as a test helper.
type Helperer interface {
Helper()
}
// Helper returns a function that marks the current function as a helper function.
func Helper(t testing.TB) Helperer {
return t
}

View file

@ -0,0 +1,19 @@
// +build !go1.9
package test
import "testing"
// Helperer marks the current function as a test helper.
type Helperer interface {
Helper()
}
type fakeHelper struct{}
func (fakeHelper) Helper() {}
// Helper returns a function that marks the current function as a helper function.
func Helper(t testing.TB) Helperer {
return fakeHelper{}
}