From 0ab9320ab28afbf62a8b81e5f151db908897df86 Mon Sep 17 00:00:00 2001 From: Vincent Demeester Date: Mon, 12 Dec 2016 09:28:32 +0100 Subject: [PATCH] Move utils.TestDirectory to pkg/testutil/tempfile Signed-off-by: Vincent Demeester --- distribution/registry_unit_test.go | 41 ++++++++++++++++++++++++++-- pkg/testutil/tempfile/tempfile.go | 3 +- utils/utils.go | 44 ------------------------------ 3 files changed, 40 insertions(+), 48 deletions(-) diff --git a/distribution/registry_unit_test.go b/distribution/registry_unit_test.go index 23edc095e1..7270258735 100644 --- a/distribution/registry_unit_test.go +++ b/distribution/registry_unit_test.go @@ -1,19 +1,23 @@ package distribution import ( + "fmt" + "io/ioutil" "net/http" "net/http/httptest" "net/url" "os" + "runtime" "strings" "testing" "github.com/Sirupsen/logrus" "github.com/docker/docker/api/types" registrytypes "github.com/docker/docker/api/types/registry" + "github.com/docker/docker/pkg/archive" + "github.com/docker/docker/pkg/stringid" "github.com/docker/docker/reference" "github.com/docker/docker/registry" - "github.com/docker/docker/utils" "golang.org/x/net/context" ) @@ -38,7 +42,7 @@ func (h *tokenPassThruHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) } func testTokenPassThru(t *testing.T, ts *httptest.Server) { - tmp, err := utils.TestDirectory("") + tmp, err := testDirectory("") if err != nil { t.Fatal(err) } @@ -131,3 +135,36 @@ func TestTokenPassThruDifferentHost(t *testing.T) { t.Fatal("Redirect should not forward Authorization header to another host") } } + +// TestDirectory creates a new temporary directory and returns its path. +// The contents of directory at path `templateDir` is copied into the +// new directory. +func testDirectory(templateDir string) (dir string, err error) { + testID := stringid.GenerateNonCryptoID()[:4] + prefix := fmt.Sprintf("docker-test%s-%s-", testID, getCallerName(2)) + if prefix == "" { + prefix = "docker-test-" + } + dir, err = ioutil.TempDir("", prefix) + if err = os.Remove(dir); err != nil { + return + } + if templateDir != "" { + if err = archive.CopyWithTar(templateDir, dir); err != nil { + return + } + } + return +} + +// getCallerName introspects the call stack and returns the name of the +// function `depth` levels down in the stack. +func getCallerName(depth int) string { + // Use the caller function name as a prefix. + // This helps trace temp directories back to their test. + pc, _, _, _ := runtime.Caller(depth + 1) + callerLongName := runtime.FuncForPC(pc).Name() + parts := strings.Split(callerLongName, ".") + callerShortName := parts[len(parts)-1] + return callerShortName +} diff --git a/pkg/testutil/tempfile/tempfile.go b/pkg/testutil/tempfile/tempfile.go index 0e09d99dae..48c654d1f4 100644 --- a/pkg/testutil/tempfile/tempfile.go +++ b/pkg/testutil/tempfile/tempfile.go @@ -1,10 +1,9 @@ package tempfile import ( + "github.com/docker/docker/pkg/testutil/assert" "io/ioutil" "os" - - "github.com/docker/docker/pkg/testutil/assert" ) // TempFile is a temporary file that can be used with unit tests. TempFile diff --git a/utils/utils.go b/utils/utils.go index d3dd00abf4..9a7acca419 100644 --- a/utils/utils.go +++ b/utils/utils.go @@ -1,53 +1,9 @@ package utils import ( - "fmt" - "io/ioutil" - "os" - "runtime" "strings" - - "github.com/docker/docker/pkg/archive" - "github.com/docker/docker/pkg/stringid" ) -var globalTestID string - -// TestDirectory creates a new temporary directory and returns its path. -// The contents of directory at path `templateDir` is copied into the -// new directory. -func TestDirectory(templateDir string) (dir string, err error) { - if globalTestID == "" { - globalTestID = stringid.GenerateNonCryptoID()[:4] - } - prefix := fmt.Sprintf("docker-test%s-%s-", globalTestID, GetCallerName(2)) - if prefix == "" { - prefix = "docker-test-" - } - dir, err = ioutil.TempDir("", prefix) - if err = os.Remove(dir); err != nil { - return - } - if templateDir != "" { - if err = archive.CopyWithTar(templateDir, dir); err != nil { - return - } - } - return -} - -// GetCallerName introspects the call stack and returns the name of the -// function `depth` levels down in the stack. -func GetCallerName(depth int) string { - // Use the caller function name as a prefix. - // This helps trace temp directories back to their test. - pc, _, _, _ := runtime.Caller(depth + 1) - callerLongName := runtime.FuncForPC(pc).Name() - parts := strings.Split(callerLongName, ".") - callerShortName := parts[len(parts)-1] - return callerShortName -} - // ReplaceOrAppendEnvValues returns the defaults with the overrides either // replaced by env key or appended to the list func ReplaceOrAppendEnvValues(defaults, overrides []string) []string {