From 6b9858085f8e10d50df3bf09d0a5dfd59b683d05 Mon Sep 17 00:00:00 2001 From: Martin Holst Swende Date: Tue, 17 Nov 2020 12:01:19 +0100 Subject: [PATCH] cmd/geth: improve les test on windows (#21860) --- cmd/geth/les_test.go | 28 ++++++++++++++++++++++++++-- 1 file changed, 26 insertions(+), 2 deletions(-) diff --git a/cmd/geth/les_test.go b/cmd/geth/les_test.go index 259d4a806..242564651 100644 --- a/cmd/geth/les_test.go +++ b/cmd/geth/les_test.go @@ -2,7 +2,10 @@ package main import ( "context" + "os" "path/filepath" + "runtime" + "strings" "testing" "time" @@ -95,6 +98,27 @@ func (g *gethrpc) waitSynced() { } } +// ipcEndpoint resolves an IPC endpoint based on a configured value, taking into +// account the set data folders as well as the designated platform we're currently +// running on. +func ipcEndpoint(ipcPath, datadir string) string { + // On windows we can only use plain top-level pipes + if runtime.GOOS == "windows" { + if strings.HasPrefix(ipcPath, `\\.\pipe\`) { + return ipcPath + } + return `\\.\pipe\` + ipcPath + } + // Resolve names into the data directory full paths otherwise + if filepath.Base(ipcPath) == ipcPath { + if datadir == "" { + return filepath.Join(os.TempDir(), ipcPath) + } + return filepath.Join(datadir, ipcPath) + } + return ipcPath +} + func startGethWithIpc(t *testing.T, name string, args ...string) *gethrpc { g := &gethrpc{name: name} args = append([]string{"--networkid=42", "--port=0", "--nousb"}, args...) @@ -103,10 +127,10 @@ func startGethWithIpc(t *testing.T, name string, args ...string) *gethrpc { // wait before we can attach to it. TODO: probe for it properly time.Sleep(1 * time.Second) var err error - ipcpath := filepath.Join(g.geth.Datadir, "geth.ipc") + ipcpath := ipcEndpoint("geth.ipc", g.geth.Datadir) g.rpc, err = rpc.Dial(ipcpath) if err != nil { - t.Fatalf("%v rpc connect: %v", name, err) + t.Fatalf("%v rpc connect to %v: %v", name, ipcpath, err) } return g }