modinfo_test.go 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. // Copyright (c) Tailscale Inc & AUTHORS
  2. // SPDX-License-Identifier: BSD-3-Clause
  3. package version_test
  4. import (
  5. "flag"
  6. "os/exec"
  7. "path/filepath"
  8. "strings"
  9. "testing"
  10. "tailscale.com/version"
  11. )
  12. var (
  13. findModuleInfo = version.ExportFindModuleInfo
  14. cmdName = version.ExportCmdName
  15. )
  16. func TestFindModuleInfo(t *testing.T) {
  17. dir := t.TempDir()
  18. name := filepath.Join(dir, "tailscaled-version-test")
  19. out, err := exec.Command("go", "build", "-o", name, "tailscale.com/cmd/tailscaled").CombinedOutput()
  20. if err != nil {
  21. t.Fatalf("failed to build tailscaled: %v\n%s", err, out)
  22. }
  23. modinfo, err := findModuleInfo(name)
  24. if err != nil {
  25. t.Fatal(err)
  26. }
  27. prefix := "path\ttailscale.com/cmd/tailscaled\nmod\ttailscale.com"
  28. if !strings.HasPrefix(modinfo, prefix) {
  29. t.Errorf("unexpected modinfo contents %q", modinfo)
  30. }
  31. }
  32. var findModuleInfoName = flag.String("module-info-file", "", "if non-empty, test findModuleInfo against this filename")
  33. func TestFindModuleInfoManual(t *testing.T) {
  34. exe := *findModuleInfoName
  35. if exe == "" {
  36. t.Skip("skipping without --module-info-file filename")
  37. }
  38. cmd := cmdName(exe)
  39. mod, err := findModuleInfo(exe)
  40. if err != nil {
  41. t.Fatal(err)
  42. }
  43. t.Logf("Got %q from: %s", cmd, mod)
  44. }