mirror of
https://github.com/tailscale/tailscale.git
synced 2026-04-13 17:41:11 +02:00
Add a new vet analyzer that checks t.Run subtest names don't contain characters requiring quoting when re-running via "go test -run". This enforces the style guide rule: don't use spaces or punctuation in subtest names. The analyzer flags: - Direct t.Run calls with string literal names containing spaces, regex metacharacters, quotes, or other problematic characters - Table-driven t.Run(tt.name, ...) calls where tt ranges over a slice/map literal with bad name field values Also fix all 978 existing violations across 81 test files, replacing spaces with hyphens and shortening long sentence-like names to concise hyphenated forms. Updates #19242 Change-Id: Ib0ad96a111bd8e764582d1d4902fe2599454ab65 Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
57 lines
1.5 KiB
Go
57 lines
1.5 KiB
Go
// Copyright (c) Tailscale Inc & contributors
|
|
// SPDX-License-Identifier: BSD-3-Clause
|
|
|
|
package main
|
|
|
|
import (
|
|
"encoding/json"
|
|
"strings"
|
|
"testing"
|
|
|
|
"tailscale.com/client/tailscale"
|
|
)
|
|
|
|
func TestEmbeddedTypeUnmarshal(t *testing.T) {
|
|
var gitopsErr ACLGitopsTestError
|
|
gitopsErr.Message = "gitops response error"
|
|
gitopsErr.Data = []tailscale.ACLTestFailureSummary{
|
|
{
|
|
User: "GitopsError",
|
|
Errors: []string{"this was initially created as a gitops error"},
|
|
},
|
|
}
|
|
|
|
var aclTestErr tailscale.ACLTestError
|
|
aclTestErr.Message = "native ACL response error"
|
|
aclTestErr.Data = []tailscale.ACLTestFailureSummary{
|
|
{
|
|
User: "ACLError",
|
|
Errors: []string{"this was initially created as an ACL error"},
|
|
},
|
|
}
|
|
|
|
t.Run("unmarshal-gitops-from-acl", func(t *testing.T) {
|
|
b, _ := json.Marshal(aclTestErr)
|
|
var e ACLGitopsTestError
|
|
err := json.Unmarshal(b, &e)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if !strings.Contains(e.Error(), "For user ACLError") { // the gitops error prints out the user, the acl error doesn't
|
|
t.Fatalf("user heading for 'ACLError' not found in gitops error: %v", e.Error())
|
|
}
|
|
})
|
|
t.Run("unmarshal-acl-from-gitops", func(t *testing.T) {
|
|
b, _ := json.Marshal(gitopsErr)
|
|
var e tailscale.ACLTestError
|
|
err := json.Unmarshal(b, &e)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
expectedErr := `Status: 0, Message: "gitops response error", Data: [{User:GitopsError Errors:[this was initially created as a gitops error] Warnings:[]}]`
|
|
if e.Error() != expectedErr {
|
|
t.Fatalf("got %v\n, expected %v", e.Error(), expectedErr)
|
|
}
|
|
})
|
|
}
|