зеркало из https://github.com/microsoft/docker.git
Move utils.TestDirectory to pkg/testutil/tempfile
Signed-off-by: Vincent Demeester <vincent@sbr.pm>
This commit is contained in:
Родитель
b1322e3de9
Коммит
0ab9320ab2
|
@ -1,19 +1,23 @@
|
||||||
package distribution
|
package distribution
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"fmt"
|
||||||
|
"io/ioutil"
|
||||||
"net/http"
|
"net/http"
|
||||||
"net/http/httptest"
|
"net/http/httptest"
|
||||||
"net/url"
|
"net/url"
|
||||||
"os"
|
"os"
|
||||||
|
"runtime"
|
||||||
"strings"
|
"strings"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"github.com/Sirupsen/logrus"
|
"github.com/Sirupsen/logrus"
|
||||||
"github.com/docker/docker/api/types"
|
"github.com/docker/docker/api/types"
|
||||||
registrytypes "github.com/docker/docker/api/types/registry"
|
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/reference"
|
||||||
"github.com/docker/docker/registry"
|
"github.com/docker/docker/registry"
|
||||||
"github.com/docker/docker/utils"
|
|
||||||
"golang.org/x/net/context"
|
"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) {
|
func testTokenPassThru(t *testing.T, ts *httptest.Server) {
|
||||||
tmp, err := utils.TestDirectory("")
|
tmp, err := testDirectory("")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
|
@ -131,3 +135,36 @@ func TestTokenPassThruDifferentHost(t *testing.T) {
|
||||||
t.Fatal("Redirect should not forward Authorization header to another host")
|
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
|
||||||
|
}
|
||||||
|
|
|
@ -1,10 +1,9 @@
|
||||||
package tempfile
|
package tempfile
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"github.com/docker/docker/pkg/testutil/assert"
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
"os"
|
"os"
|
||||||
|
|
||||||
"github.com/docker/docker/pkg/testutil/assert"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// TempFile is a temporary file that can be used with unit tests. TempFile
|
// TempFile is a temporary file that can be used with unit tests. TempFile
|
||||||
|
|
|
@ -1,53 +1,9 @@
|
||||||
package utils
|
package utils
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
|
||||||
"io/ioutil"
|
|
||||||
"os"
|
|
||||||
"runtime"
|
|
||||||
"strings"
|
"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
|
// ReplaceOrAppendEnvValues returns the defaults with the overrides either
|
||||||
// replaced by env key or appended to the list
|
// replaced by env key or appended to the list
|
||||||
func ReplaceOrAppendEnvValues(defaults, overrides []string) []string {
|
func ReplaceOrAppendEnvValues(defaults, overrides []string) []string {
|
||||||
|
|
Загрузка…
Ссылка в новой задаче