Explorar el Código

Merge pull request #21815 from Microsoft/jjh/fixunittest

Windows: Fix failing unit tests
Brian Goff hace 9 años
padre
commit
3e14070c88
Se han modificado 2 ficheros con 11 adiciones y 4 borrados
  1. 1 1
      builder/context.go
  2. 10 3
      builder/context_test.go

+ 1 - 1
builder/context.go

@@ -174,7 +174,7 @@ func GetContextFromLocalDir(localDir, dockerfileName string) (absContextDir, rel
 // the dockerfile in that context directory, and a non-nil error on success.
 func getDockerfileRelPath(givenContextDir, givenDockerfile string) (absContextDir, relDockerfile string, err error) {
 	if absContextDir, err = filepath.Abs(givenContextDir); err != nil {
-		return "", "", fmt.Errorf("unable to get absolute context directory: %v", err)
+		return "", "", fmt.Errorf("unable to get absolute context directory of given context directory %q: %v", givenContextDir, err)
 	}
 
 	// The context dir might be a symbolic link, so follow it to the actual

+ 10 - 3
builder/context_test.go

@@ -7,6 +7,7 @@ import (
 	"io/ioutil"
 	"os"
 	"path/filepath"
+	"runtime"
 	"strings"
 	"testing"
 
@@ -53,7 +54,6 @@ func testValidateContextDirectory(t *testing.T, prepare func(t *testing.T) strin
 	contextDir := prepare(t)
 
 	defer os.RemoveAll(contextDir)
-
 	err := ValidateContextDirectory(contextDir, excludes)
 
 	if err != nil {
@@ -166,8 +166,7 @@ func TestGetContextFromLocalDirWithNoDirectory(t *testing.T) {
 	if err != nil {
 		t.Fatalf("Error when changing directory to %s: %s", contextDir, err)
 	}
-
-	absContextDir, relDockerfile, err := GetContextFromLocalDir("", "")
+	absContextDir, relDockerfile, err := GetContextFromLocalDir(contextDir, "")
 
 	if err != nil {
 		t.Fatalf("Error when getting context from local dir: %s", err)
@@ -400,6 +399,14 @@ func TestGetContextFromReaderTar(t *testing.T) {
 }
 
 func TestValidateContextDirectoryEmptyContext(t *testing.T) {
+	// This isn't a valid test on Windows. See https://play.golang.org/p/RR6z6jxR81.
+	// The test will ultimately end up calling filepath.Abs(""). On Windows,
+	// golang will error. On Linux, golang will return /. Due to there being
+	// drive letters on Windows, this is probably the correct behaviour for
+	// Windows.
+	if runtime.GOOS == "windows" {
+		t.Skip("Invalid test on Windows")
+	}
 	testValidateContextDirectory(t, prepareEmpty, []string{})
 }