diff --git a/script/test b/script/test index e9479e2945..b297812c13 100755 --- a/script/test +++ b/script/test @@ -1,4 +1,12 @@ #!/bin/sh set -e + +ARGS=$@ +if [ -z "$ARGS" ]; then + ARGS="./..." +fi + +echo $ARGS + docker build -t docker-machine . -exec docker run --rm docker-machine go test -v -short ./... +exec docker run --rm docker-machine godep go test -v -short $ARGS diff --git a/utils/b2d_test.go b/utils/b2d_test.go new file mode 100644 index 0000000000..d4b585bf78 --- /dev/null +++ b/utils/b2d_test.go @@ -0,0 +1 @@ +package utils diff --git a/utils/certs_test.go b/utils/certs_test.go new file mode 100644 index 0000000000..d4b585bf78 --- /dev/null +++ b/utils/certs_test.go @@ -0,0 +1 @@ +package utils diff --git a/utils/utils.go b/utils/utils.go index 39e4b24c7f..fb4bd17126 100644 --- a/utils/utils.go +++ b/utils/utils.go @@ -7,14 +7,17 @@ import ( "runtime" ) +func GetHomeDir() string { + if runtime.GOOS == "windows" { + return os.Getenv("USERPROFILE") + } + return os.Getenv("HOME") +} + func GetBaseDir() string { baseDir := os.Getenv("MACHINE_DIR") if baseDir == "" { - if runtime.GOOS == "windows" { - baseDir = os.Getenv("USERPROFILE") - } else { - baseDir = os.Getenv("HOME") - } + baseDir = GetHomeDir() } return baseDir } diff --git a/utils/utils_test.go b/utils/utils_test.go new file mode 100644 index 0000000000..e94fc223a7 --- /dev/null +++ b/utils/utils_test.go @@ -0,0 +1,144 @@ +package utils + +import ( + "io/ioutil" + "os" + "path" + "path/filepath" + "runtime" + "strings" + "testing" +) + +func TestGetBaseDir(t *testing.T) { + homeDir := GetHomeDir() + baseDir := GetBaseDir() + + if strings.Index(homeDir, baseDir) != 0 { + t.Fatalf("expected base dir with prefix %s; received %s", homeDir, baseDir) + } +} + +func TestGetCustomBaseDir(t *testing.T) { + root := "/tmp" + os.Setenv("MACHINE_DIR", root) + baseDir := GetBaseDir() + + if strings.Index(root, baseDir) != 0 { + t.Fatalf("expected base dir with prefix %s; received %s", root, baseDir) + } +} + +func TestGetDockerDir(t *testing.T) { + root := "/tmp" + os.Setenv("MACHINE_DIR", root) + dockerDir := GetDockerDir() + + if strings.Index(dockerDir, root) != 0 { + t.Fatalf("expected docker dir with prefix %s; received %s", root, dockerDir) + } + + path, filename := path.Split(dockerDir) + if strings.Index(path, root) != 0 { + t.Fatalf("expected base path of %s; received %s", root, path) + } + if filename != ".docker" { + t.Fatalf("expected docker dir \".docker\"; received %s", filename) + } +} + +func TestGetMachineDir(t *testing.T) { + root := "/tmp" + os.Setenv("MACHINE_DIR", root) + machineDir := GetMachineDir() + + if strings.Index(machineDir, root) != 0 { + t.Fatalf("expected machine dir with prefix %s; received %s", root, machineDir) + } + + path, filename := path.Split(machineDir) + if strings.Index(path, root) != 0 { + t.Fatalf("expected base path of %s; received %s", root, path) + } + if filename != "machines" { + t.Fatalf("expected machine dir \"machines\"; received %s", filename) + } +} + +func TestGetMachineClientCertDir(t *testing.T) { + root := "/tmp" + os.Setenv("MACHINE_DIR", root) + clientDir := GetMachineClientCertDir() + + if strings.Index(clientDir, root) != 0 { + t.Fatalf("expected machine client cert dir with prefix %s; received %s", root, clientDir) + } + + path, filename := path.Split(clientDir) + if strings.Index(path, root) != 0 { + t.Fatalf("expected base path of %s; received %s", root, path) + } + if filename != ".client" { + t.Fatalf("expected machine client dir \".client\"; received %s", filename) + } +} + +func TestCopyFile(t *testing.T) { + testStr := "test-machine" + + srcFile, err := ioutil.TempFile("", "machine-test-") + if err != nil { + t.Fatal(err) + } + srcFi, err := srcFile.Stat() + if err != nil { + t.Fatal(err) + } + + srcFile.Write([]byte(testStr)) + srcFile.Close() + + srcFilePath := filepath.Join(os.TempDir(), srcFi.Name()) + + destFile, err := ioutil.TempFile("", "machine-copy-test-") + if err != nil { + t.Fatal(err) + } + + destFi, err := destFile.Stat() + if err != nil { + t.Fatal(err) + } + + destFile.Close() + + destFilePath := filepath.Join(os.TempDir(), destFi.Name()) + + if err := CopyFile(srcFilePath, destFilePath); err != nil { + t.Fatal(err) + } + + data, err := ioutil.ReadFile(destFilePath) + if err != nil { + t.Fatal(err) + } + + if string(data) != testStr { + t.Fatalf("expected data \"%s\"; received \"%\"", testStr, string(data)) + } +} + +func TestGetUsername(t *testing.T) { + currentUser := "unknown" + switch runtime.GOOS { + case "darwin,linux": + currentUser = os.Getenv("USER") + case "windows": + currentUser = os.Getenv("USERNAME") + } + + username := GetUsername() + if username != currentUser { + t.Fatalf("expected username %s; received %s", currentUser, username) + } +}