util/testenv: add new package to hold InTest

Removes duplicated code.

Updates #cleanup

Signed-off-by: Maisem Ali <maisem@tailscale.com>
This commit is contained in:
Maisem Ali 2023-08-08 09:29:35 -07:00 committed by Maisem Ali
parent 3e255d76e1
commit 682fd72f7b
10 changed files with 53 additions and 25 deletions

View File

@ -12,6 +12,8 @@
"strings"
"syscall"
"time"
"tailscale.com/util/testenv"
)
var (
@ -56,7 +58,7 @@ func presentRiskToUser(riskType, riskMessage, acceptedRisks string) error {
if isRiskAccepted(riskType, acceptedRisks) {
return nil
}
if inTest() {
if testenv.InTest() {
return errAborted
}
outln(riskMessage)

View File

@ -91,8 +91,6 @@ func acceptRouteDefault(goos string) bool {
var upFlagSet = newUpFlagSet(effectiveGOOS(), &upArgsGlobal, "up")
func inTest() bool { return flag.Lookup("test.v") != nil }
// newUpFlagSet returns a new flag set for the "up" and "login" commands.
func newUpFlagSet(goos string, upArgs *upArgsT, cmd string) *flag.FlagSet {
if cmd != "up" && cmd != "login" {

View File

@ -145,6 +145,7 @@ tailscale.com/cmd/tailscale dependencies: (generated by github.com/tailscale/dep
tailscale.com/util/set from tailscale.com/health+
tailscale.com/util/singleflight from tailscale.com/net/dnscache
tailscale.com/util/slicesx from tailscale.com/net/dnscache+
tailscale.com/util/testenv from tailscale.com/cmd/tailscale/cli
💣 tailscale.com/util/winutil from tailscale.com/hostinfo+
W 💣 tailscale.com/util/winutil/authenticode from tailscale.com/cmd/tailscale/cli
tailscale.com/version from tailscale.com/cmd/tailscale/cli+

View File

@ -343,6 +343,7 @@ tailscale.com/cmd/tailscaled dependencies: (generated by github.com/tailscale/de
tailscale.com/util/slicesx from tailscale.com/net/dnscache+
tailscale.com/util/sysresources from tailscale.com/wgengine/magicsock
tailscale.com/util/systemd from tailscale.com/control/controlclient+
tailscale.com/util/testenv from tailscale.com/ipn/ipnlocal+
tailscale.com/util/uniq from tailscale.com/wgengine/magicsock+
💣 tailscale.com/util/winutil from tailscale.com/control/controlclient+
W 💣 tailscale.com/util/winutil/authenticode from tailscale.com/util/osdiag

View File

@ -8,7 +8,6 @@
"encoding/base64"
"encoding/json"
"errors"
"flag"
"fmt"
"io"
"log"
@ -65,7 +64,6 @@
"tailscale.com/types/dnstype"
"tailscale.com/types/empty"
"tailscale.com/types/key"
"tailscale.com/types/lazy"
"tailscale.com/types/logger"
"tailscale.com/types/logid"
"tailscale.com/types/netmap"
@ -81,6 +79,7 @@
"tailscale.com/util/osshare"
"tailscale.com/util/set"
"tailscale.com/util/systemd"
"tailscale.com/util/testenv"
"tailscale.com/util/uniq"
"tailscale.com/version"
"tailscale.com/version/distro"
@ -93,14 +92,6 @@
"tailscale.com/wgengine/wgcfg/nmcfg"
)
var lazyInTest lazy.SyncValue[bool]
func inTest() bool {
return lazyInTest.Get(func() bool {
return flag.Lookup("test.v") != nil
})
}
var controlDebugFlags = getControlDebugFlags()
func getControlDebugFlags() []string {
@ -506,7 +497,7 @@ func (b *LocalBackend) maybePauseControlClientLocked() {
return
}
networkUp := b.prevIfState.AnyInterfaceUp()
b.cc.SetPaused((b.state == ipn.Stopped && b.netMap != nil) || (!networkUp && !inTest()))
b.cc.SetPaused((b.state == ipn.Stopped && b.netMap != nil) || (!networkUp && !testenv.InTest()))
}
// linkChange is our network monitor callback, called whenever the network changes.

View File

@ -13,7 +13,6 @@
"crypto/tls"
"encoding/json"
"errors"
"flag"
"fmt"
"io"
"log"
@ -49,13 +48,12 @@
"tailscale.com/util/clientmetric"
"tailscale.com/util/must"
"tailscale.com/util/racebuild"
"tailscale.com/util/testenv"
"tailscale.com/util/winutil"
"tailscale.com/version"
"tailscale.com/version/distro"
)
func inTest() bool { return flag.Lookup("test.v") != nil }
var getLogTargetOnce struct {
sync.Once
v string // URL of logs server, or empty for default
@ -576,7 +574,7 @@ func NewWithConfigPath(collection, dir, cmdName string, netMon *netmon.Monitor,
conf.IncludeProcSequence = true
}
if envknob.NoLogsNoSupport() || inTest() {
if envknob.NoLogsNoSupport() || testenv.InTest() {
logf("You have disabled logging. Tailscale will not be able to provide support.")
conf.HTTPC = &http.Client{Transport: noopPretendSuccessTransport{}}
} else if val := getLogTarget(); val != "" {
@ -756,7 +754,7 @@ func dialContext(ctx context.Context, netw, addr string, netMon *netmon.Monitor,
// The logf parameter is optional; if non-nil, logs are printed using the
// provided function; if nil, log.Printf will be used instead.
func NewLogtailTransport(host string, netMon *netmon.Monitor, logf logger.Logf) http.RoundTripper {
if inTest() {
if testenv.InTest() {
return noopPretendSuccessTransport{}
}
// Start with a copy of http.DefaultTransport and tweak it a bit.

View File

@ -12,7 +12,6 @@
"crypto/tls"
"encoding/hex"
"errors"
"flag"
"fmt"
"io"
"log"
@ -53,12 +52,11 @@
"tailscale.com/types/logid"
"tailscale.com/types/nettype"
"tailscale.com/util/mak"
"tailscale.com/util/testenv"
"tailscale.com/wgengine"
"tailscale.com/wgengine/netstack"
)
func inTest() bool { return flag.Lookup("test.v") != nil }
// Server is an embedded Tailscale server.
//
// Its exported fields may be changed until the first method call.
@ -605,7 +603,7 @@ func (s *Server) start() (reterr error) {
}
func (s *Server) startLogger(closePool *closeOnErrorPool) error {
if inTest() {
if testenv.InTest() {
return nil
}
cfgPath := filepath.Join(s.rootPath, "tailscaled.log.conf")

View File

@ -15,8 +15,8 @@
)
type DepChecker struct {
GOOS string
GOARCH string
GOOS string // optional
GOARCH string // optional
BadDeps map[string]string // package => why
}

21
util/testenv/testenv.go Normal file
View File

@ -0,0 +1,21 @@
// Copyright (c) Tailscale Inc & AUTHORS
// SPDX-License-Identifier: BSD-3-Clause
// Package testenv provides utility functions for tests. It does not depend on
// the `testing` package to allow usage in non-test code.
package testenv
import (
"flag"
"tailscale.com/types/lazy"
)
var lazyInTest lazy.SyncValue[bool]
// InTest reports whether the current binary is a test binary.
func InTest() bool {
return lazyInTest.Get(func() bool {
return flag.Lookup("test.v") != nil
})
}

View File

@ -0,0 +1,18 @@
// Copyright (c) Tailscale Inc & AUTHORS
// SPDX-License-Identifier: BSD-3-Clause
package testenv
import (
"testing"
"tailscale.com/tstest/deptest"
)
func TestDeps(t *testing.T) {
deptest.DepChecker{
BadDeps: map[string]string{
"testing": "see pkg docs",
},
}.Check(t)
}