Explorar el Código

version: fix CmdName on the tailscale-ipn.exe binary

Don't return "wg64", "wg32", etc.

Signed-off-by: Brad Fitzpatrick <[email protected]>
Brad Fitzpatrick hace 4 años
padre
commit
2db877caa3
Se han modificado 2 ficheros con 27 adiciones y 2 borrados
  1. 11 2
      version/cmdname.go
  2. 16 0
      version/modinfo_test.go

+ 11 - 2
version/cmdname.go

@@ -26,13 +26,16 @@ func CmdName() string {
 	if err != nil {
 		return "cmd"
 	}
+	return cmdName(e)
+}
 
+func cmdName(exe string) string {
 	// fallbackName, the lowercase basename of the executable, is what we return if
 	// we can't find the Go module metadata embedded in the file.
-	fallbackName := filepath.Base(strings.TrimSuffix(strings.ToLower(e), ".exe"))
+	fallbackName := filepath.Base(strings.TrimSuffix(strings.ToLower(exe), ".exe"))
 
 	var ret string
-	info, err := findModuleInfo(e)
+	info, err := findModuleInfo(exe)
 	if err != nil {
 		return fallbackName
 	}
@@ -45,6 +48,12 @@ func CmdName() string {
 			break
 		}
 	}
+	if strings.HasPrefix(ret, "wg") && fallbackName == "tailscale-ipn" {
+		// The tailscale-ipn.exe binary for internal build system packaging reasons
+		// has a path of "tailscale.io/win/wg64", "tailscale.io/win/wg32", etc.
+		// Ignore that name and use "tailscale-ipn" instead.
+		return fallbackName
+	}
 	if ret == "" {
 		return fallbackName
 	}

+ 16 - 0
version/modinfo_test.go

@@ -5,6 +5,7 @@
 package version
 
 import (
+	"flag"
 	"os/exec"
 	"path/filepath"
 	"runtime"
@@ -36,3 +37,18 @@ func exe() string {
 	}
 	return ""
 }
+
+var findModuleInfoName = flag.String("module-info-file", "", "if non-empty, test findModuleInfo against this filename")
+
+func TestFindModuleInfoManual(t *testing.T) {
+	exe := *findModuleInfoName
+	if exe == "" {
+		t.Skip("skipping without --module-info-file filename")
+	}
+	cmd := cmdName(exe)
+	mod, err := findModuleInfo(exe)
+	if err != nil {
+		t.Fatal(err)
+	}
+	t.Logf("Got %q from: %s", cmd, mod)
+}