modinfo_test.go 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  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. "runtime"
  9. "strings"
  10. "testing"
  11. "tailscale.com/version"
  12. )
  13. var (
  14. findModuleInfo = version.ExportFindModuleInfo
  15. cmdName = version.ExportCmdName
  16. )
  17. func TestFindModuleInfo(t *testing.T) {
  18. dir := t.TempDir()
  19. name := filepath.Join(dir, "tailscaled-version-test")
  20. out, err := exec.Command("go", "build", "-o", name, "tailscale.com/cmd/tailscaled").CombinedOutput()
  21. if err != nil {
  22. t.Fatalf("failed to build tailscaled: %v\n%s", err, out)
  23. }
  24. modinfo, err := findModuleInfo(name)
  25. if err != nil {
  26. t.Fatal(err)
  27. }
  28. prefix := "path\ttailscale.com/cmd/tailscaled\nmod\ttailscale.com"
  29. if !strings.HasPrefix(modinfo, prefix) {
  30. t.Errorf("unexpected modinfo contents %q", modinfo)
  31. }
  32. }
  33. func exe() string {
  34. if runtime.GOOS == "windows" {
  35. return ".exe"
  36. }
  37. return ""
  38. }
  39. var findModuleInfoName = flag.String("module-info-file", "", "if non-empty, test findModuleInfo against this filename")
  40. func TestFindModuleInfoManual(t *testing.T) {
  41. exe := *findModuleInfoName
  42. if exe == "" {
  43. t.Skip("skipping without --module-info-file filename")
  44. }
  45. cmd := cmdName(exe)
  46. mod, err := findModuleInfo(exe)
  47. if err != nil {
  48. t.Fatal(err)
  49. }
  50. t.Logf("Got %q from: %s", cmd, mod)
  51. }