tstest/deptest: add check that x/exp/{maps,slices} imported as xfoo

Updates #cleanup

Change-Id: I4cbb5e477c739deddf7a46b66f286c9fdb106279
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
pull/9656/head
Brad Fitzpatrick 1 year ago committed by Brad Fitzpatrick
parent 91b9899402
commit 93c6e1d53b

@ -186,7 +186,6 @@ tailscale.com/cmd/derper dependencies: (generated by github.com/tailscale/depawa
golang.org/x/crypto/nacl/box from tailscale.com/types/key golang.org/x/crypto/nacl/box from tailscale.com/types/key
golang.org/x/crypto/nacl/secretbox from golang.org/x/crypto/nacl/box golang.org/x/crypto/nacl/secretbox from golang.org/x/crypto/nacl/box
golang.org/x/crypto/salsa20/salsa from golang.org/x/crypto/nacl/box+ golang.org/x/crypto/salsa20/salsa from golang.org/x/crypto/nacl/box+
golang.org/x/exp/maps from tailscale.com/tailcfg
L golang.org/x/net/bpf from github.com/mdlayher/netlink+ L golang.org/x/net/bpf from github.com/mdlayher/netlink+
golang.org/x/net/dns/dnsmessage from net+ golang.org/x/net/dns/dnsmessage from net+
golang.org/x/net/http/httpguts from net/http golang.org/x/net/http/httpguts from net/http

@ -8,11 +8,11 @@ package main
import ( import (
"context" "context"
"fmt" "fmt"
"slices"
"strings" "strings"
"sync" "sync"
"go.uber.org/zap" "go.uber.org/zap"
"golang.org/x/exp/slices"
corev1 "k8s.io/api/core/v1" corev1 "k8s.io/api/core/v1"
networkingv1 "k8s.io/api/networking/v1" networkingv1 "k8s.io/api/networking/v1"
apierrors "k8s.io/apimachinery/pkg/api/errors" apierrors "k8s.io/apimachinery/pkg/api/errors"

@ -9,11 +9,11 @@ import (
"context" "context"
"fmt" "fmt"
"net/netip" "net/netip"
"slices"
"strings" "strings"
"sync" "sync"
"go.uber.org/zap" "go.uber.org/zap"
"golang.org/x/exp/slices"
corev1 "k8s.io/api/core/v1" corev1 "k8s.io/api/core/v1"
apierrors "k8s.io/apimachinery/pkg/api/errors" apierrors "k8s.io/apimachinery/pkg/api/errors"
"k8s.io/apimachinery/pkg/types" "k8s.io/apimachinery/pkg/types"

@ -194,7 +194,7 @@ tailscale.com/cmd/tailscale dependencies: (generated by github.com/tailscale/dep
golang.org/x/crypto/pbkdf2 from software.sslmate.com/src/go-pkcs12 golang.org/x/crypto/pbkdf2 from software.sslmate.com/src/go-pkcs12
golang.org/x/crypto/salsa20/salsa from golang.org/x/crypto/nacl/box+ golang.org/x/crypto/salsa20/salsa from golang.org/x/crypto/nacl/box+
W golang.org/x/exp/constraints from github.com/dblohm7/wingoes/pe W golang.org/x/exp/constraints from github.com/dblohm7/wingoes/pe
golang.org/x/exp/maps from tailscale.com/cmd/tailscale/cli+ golang.org/x/exp/maps from tailscale.com/cmd/tailscale/cli
golang.org/x/net/bpf from github.com/mdlayher/netlink+ golang.org/x/net/bpf from github.com/mdlayher/netlink+
golang.org/x/net/dns/dnsmessage from net+ golang.org/x/net/dns/dnsmessage from net+
golang.org/x/net/http/httpguts from net/http+ golang.org/x/net/http/httpguts from net/http+

@ -19,12 +19,12 @@ import (
"log" "log"
"os" "os"
"os/exec" "os/exec"
"slices"
"sort" "sort"
"strings" "strings"
"time" "time"
xmaps "golang.org/x/exp/maps" xmaps "golang.org/x/exp/maps"
"golang.org/x/exp/slices"
"tailscale.com/cmd/testwrapper/flakytest" "tailscale.com/cmd/testwrapper/flakytest"
) )

@ -10,13 +10,13 @@ import (
"encoding/json" "encoding/json"
"errors" "errors"
"fmt" "fmt"
"maps"
"net/netip" "net/netip"
"reflect" "reflect"
"slices" "slices"
"strings" "strings"
"time" "time"
"golang.org/x/exp/maps"
"tailscale.com/types/dnstype" "tailscale.com/types/dnstype"
"tailscale.com/types/key" "tailscale.com/types/key"
"tailscale.com/types/opt" "tailscale.com/types/opt"

@ -10,7 +10,10 @@ import (
"encoding/json" "encoding/json"
"os" "os"
"os/exec" "os/exec"
"path/filepath"
"regexp"
"runtime" "runtime"
"strings"
"testing" "testing"
) )
@ -52,5 +55,30 @@ func (c DepChecker) Check(t *testing.T) {
} }
} }
t.Logf("got %d dependencies", len(res.Deps)) t.Logf("got %d dependencies", len(res.Deps))
}
// ImportAliasCheck checks that all packages are imported according to Tailscale
// conventions.
func ImportAliasCheck(t testing.TB, relDir string) {
dir, err := os.Getwd()
if err != nil {
t.Fatal(err)
}
dir = filepath.Join(dir, relDir)
cmd := exec.Command("git", "grep", "-n", "-F", `"golang.org/x/exp/`)
cmd.Dir = dir
matches, err := cmd.CombinedOutput()
if err != nil {
t.Logf("ignoring error: %v, %s", err, matches)
return
}
badRx := regexp.MustCompile(`^([^:]+:\d+):\s+"golang.org/x/exp/(slices|maps)"`)
if s := strings.TrimSpace(string(matches)); s != "" {
for _, line := range strings.Split(s, "\n") {
if m := badRx.FindStringSubmatch(line); m != nil {
t.Errorf("%s: the x/exp/%s package should be imported as x%s", m[1], m[2], m[2])
}
}
}
} }

@ -0,0 +1,10 @@
// Copyright (c) Tailscale Inc & AUTHORS
// SPDX-License-Identifier: BSD-3-Clause
package deptest
import "testing"
func TestImports(t *testing.T) {
ImportAliasCheck(t, "../../")
}
Loading…
Cancel
Save