| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- // Copyright (c) 2021 Tailscale Inc & AUTHORS All rights reserved.
- // Use of this source code is governed by a BSD-style
- // license that can be found in the LICENSE file.
- package version
- import (
- "flag"
- "os/exec"
- "path/filepath"
- "runtime"
- "strings"
- "testing"
- )
- func TestFindModuleInfo(t *testing.T) {
- dir := t.TempDir()
- name := filepath.Join(dir, "tailscaled-version-test")
- goTool := filepath.Join(runtime.GOROOT(), "bin", "go"+exe())
- out, err := exec.Command(goTool, "build", "-o", name, "tailscale.com/cmd/tailscaled").CombinedOutput()
- if err != nil {
- t.Fatalf("failed to build tailscaled: %v\n%s", err, out)
- }
- modinfo, err := findModuleInfo(name)
- if err != nil {
- t.Fatal(err)
- }
- prefix := "path\ttailscale.com/cmd/tailscaled\nmod\ttailscale.com"
- if !strings.HasPrefix(modinfo, prefix) {
- t.Errorf("unexpected modinfo contents %q", modinfo)
- }
- }
- func exe() string {
- if runtime.GOOS == "windows" {
- return ".exe"
- }
- 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)
- }
|