Fix TLS directory path on WSL

This commit is contained in:
Riccardo Biraghi
2018-04-11 09:25:08 +01:00
parent d56fce65c2
commit 9851743ae2
3 changed files with 24 additions and 12 deletions

View File

@@ -78,7 +78,7 @@ func TestDevSecure(t *testing.T) {
hostConfig := container.HostConfig{ hostConfig := container.HostConfig{
Binds: []string{ Binds: []string{
coverageBind(t), coverageBind(t),
tlsDir(t) + ":/var/tls", tlsDir(t, false) + ":/var/tls",
}, },
// Assign a random port for the web server on the host // Assign a random port for the web server on the host
// TODO: Don't do this for all tests // TODO: Don't do this for all tests
@@ -98,7 +98,7 @@ func TestDevSecure(t *testing.T) {
defer cleanContainer(t, cli, ctr.ID) defer cleanContainer(t, cli, ctr.ID)
startContainer(t, cli, ctr.ID) startContainer(t, cli, ctr.ID)
waitForReady(t, cli, ctr.ID) waitForReady(t, cli, ctr.ID)
cert := filepath.Join(tlsDir(t), "server.crt") cert := filepath.Join(tlsDir(t, true), "server.crt")
waitForWebReady(t, cli, ctr.ID, createTLSConfig(t, cert, tlsPassPhrase)) waitForWebReady(t, cli, ctr.ID, createTLSConfig(t, cert, tlsPassPhrase))
runJMSTests(t, cli, ctr.ID, true, "app", devAppPassword) runJMSTests(t, cli, ctr.ID, true, "app", devAppPassword)
// Stop the container cleanly // Stop the container cleanly

View File

@@ -73,11 +73,21 @@ func waitForWebReady(t *testing.T, cli *client.Client, ID string, tlsConfig *tls
} }
// tlsDir returns the host directory where the test certificate(s) are located // tlsDir returns the host directory where the test certificate(s) are located
func tlsDir(t *testing.T) string { func tlsDir(t *testing.T, unixPath bool) string {
dir, err := os.Getwd() dir, err := os.Getwd()
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
if isWSL(t) {
// Check if the cwd is a symlink
dir, err = filepath.EvalSymlinks(dir)
if err != nil {
t.Fatal(err)
}
if !unixPath {
dir = strings.Replace(dir, getWindowsRoot(true), getWindowsRoot(false), 1)
}
}
return filepath.Join(dir, "../tls") return filepath.Join(dir, "../tls")
} }
@@ -106,7 +116,7 @@ func runJMSTests(t *testing.T, cli *client.Client, ID string, tls bool, user, pa
hostConfig := container.HostConfig{ hostConfig := container.HostConfig{
Binds: []string{ Binds: []string{
coverageBind(t), coverageBind(t),
tlsDir(t) + ":/var/tls", tlsDir(t, false) + ":/var/tls",
}, },
} }
networkingConfig := network.NetworkingConfig{} networkingConfig := network.NetworkingConfig{}

View File

@@ -85,27 +85,29 @@ func coverageBind(t *testing.T) string {
// isWSL return whether we are running in the Windows Subsystem for Linux // isWSL return whether we are running in the Windows Subsystem for Linux
func isWSL(t *testing.T) bool { func isWSL(t *testing.T) bool {
if runtime.GOOS == "linux" { if runtime.GOOS == "linux" {
uname, err := exec.Command("uname", "-r").Output() uname, err := exec.Command("uname", "-r").Output()
if (err != nil) { if (err != nil) {
t.Fatal(err) t.Fatal(err)
} }
return strings.Contains(string(uname), "Microsoft") return strings.Contains(string(uname), "Microsoft")
} else { } else {
return false return false
} }
} }
// getWindowsRoot get the path of the root directory on Windows, in UNIX or OS-specific style
func getWindowsRoot(unixStylePath bool) string {
if unixStylePath {
return "/mnt/c/"
} else {
return "C:/"
}
}
// getTempDir get the path of the tmp directory, in UNIX or OS-specific style // getTempDir get the path of the tmp directory, in UNIX or OS-specific style
func getTempDir(t *testing.T, unixStylePath bool) string { func getTempDir(t *testing.T, unixStylePath bool) string {
if isWSL(t) { if isWSL(t) {
if unixStylePath { return getWindowsRoot(unixStylePath) + "Temp/"
return "/mnt/c/Temp/"
} else {
return "C:/Temp/"
}
} else { } else {
return "/tmp/" return "/tmp/"
} }