mirror of
https://github.com/juanfont/headscale.git
synced 2026-01-23 02:24:10 +00:00
all: fix exptostd, ineffassign, unconvert, intrange, predeclared issues
- Replace exp/maps and exp/slices with stdlib (Go 1.21+) - Fix ineffective assignments by checking errors or using blank identifier - Remove unnecessary type conversions - Use integer range syntax for loops (Go 1.22+) - Rename variables shadowing predeclared identifiers (min, max)
This commit is contained in:
parent
3b59a91112
commit
d3bddbf172
10 changed files with 26 additions and 20 deletions
|
|
@ -409,25 +409,25 @@ func calculateStatsSummary(values []float64) StatsSummary {
|
||||||
return StatsSummary{}
|
return StatsSummary{}
|
||||||
}
|
}
|
||||||
|
|
||||||
min := values[0]
|
minVal := values[0]
|
||||||
max := values[0]
|
maxVal := values[0]
|
||||||
sum := 0.0
|
sum := 0.0
|
||||||
|
|
||||||
for _, value := range values {
|
for _, value := range values {
|
||||||
if value < min {
|
if value < minVal {
|
||||||
min = value
|
minVal = value
|
||||||
}
|
}
|
||||||
|
|
||||||
if value > max {
|
if value > maxVal {
|
||||||
max = value
|
maxVal = value
|
||||||
}
|
}
|
||||||
|
|
||||||
sum += value
|
sum += value
|
||||||
}
|
}
|
||||||
|
|
||||||
return StatsSummary{
|
return StatsSummary{
|
||||||
Min: min,
|
Min: minVal,
|
||||||
Max: max,
|
Max: maxVal,
|
||||||
Average: sum / float64(len(values)),
|
Average: sum / float64(len(values)),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -3113,7 +3113,7 @@ func TestWebFlowReauthDifferentUser(t *testing.T) {
|
||||||
user1Nodes := 0
|
user1Nodes := 0
|
||||||
user2Nodes := 0
|
user2Nodes := 0
|
||||||
|
|
||||||
for i := 0; i < allNodesSlice.Len(); i++ {
|
for i := range allNodesSlice.Len() {
|
||||||
n := allNodesSlice.At(i)
|
n := allNodesSlice.At(i)
|
||||||
if n.UserID().Get() == user1.ID {
|
if n.UserID().Get() == user1.ID {
|
||||||
user1Nodes++
|
user1Nodes++
|
||||||
|
|
|
||||||
|
|
@ -173,6 +173,9 @@ AND auth_key_id NOT IN (
|
||||||
routes = slices.Compact(routes)
|
routes = slices.Compact(routes)
|
||||||
|
|
||||||
data, err := json.Marshal(routes)
|
data, err := json.Marshal(routes)
|
||||||
|
if err != nil {
|
||||||
|
return fmt.Errorf("marshaling routes for node %d: %w", nodeID, err)
|
||||||
|
}
|
||||||
|
|
||||||
err = tx.Model(&types.Node{}).Where("id = ?", nodeID).Update("approved_routes", data).Error
|
err = tx.Model(&types.Node{}).Where("id = ?", nodeID).Update("approved_routes", data).Error
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
|
||||||
|
|
@ -754,6 +754,9 @@ func TestNodeNaming(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
_, err = RegisterNodeForTest(tx, nodeInvalidHostname, new(mpp("100.64.0.66/32").Addr()), nil)
|
_, err = RegisterNodeForTest(tx, nodeInvalidHostname, new(mpp("100.64.0.66/32").Addr()), nil)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
_, err = RegisterNodeForTest(tx, nodeShortHostname, new(mpp("100.64.0.67/32").Addr()), nil)
|
_, err = RegisterNodeForTest(tx, nodeShortHostname, new(mpp("100.64.0.67/32").Addr()), nil)
|
||||||
|
|
||||||
return err
|
return err
|
||||||
|
|
|
||||||
|
|
@ -1860,7 +1860,7 @@ func TestResolvePolicy(t *testing.T) {
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "autogroup-member-comprehensive",
|
name: "autogroup-member-comprehensive",
|
||||||
toResolve: new(AutoGroup(AutoGroupMember)),
|
toResolve: new(AutoGroupMember),
|
||||||
nodes: types.Nodes{
|
nodes: types.Nodes{
|
||||||
// Node with no tags (should be included - is a member)
|
// Node with no tags (should be included - is a member)
|
||||||
{
|
{
|
||||||
|
|
@ -1910,7 +1910,7 @@ func TestResolvePolicy(t *testing.T) {
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "autogroup-tagged",
|
name: "autogroup-tagged",
|
||||||
toResolve: new(AutoGroup(AutoGroupTagged)),
|
toResolve: new(AutoGroupTagged),
|
||||||
nodes: types.Nodes{
|
nodes: types.Nodes{
|
||||||
// Node with no tags (should be excluded - not tagged)
|
// Node with no tags (should be excluded - not tagged)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -749,7 +749,7 @@ func (s *State) RenameNode(nodeID types.NodeID, newName string) (types.NodeView,
|
||||||
|
|
||||||
// Check name uniqueness against NodeStore
|
// Check name uniqueness against NodeStore
|
||||||
allNodes := s.nodeStore.ListNodes()
|
allNodes := s.nodeStore.ListNodes()
|
||||||
for i := 0; i < allNodes.Len(); i++ {
|
for i := range allNodes.Len() {
|
||||||
node := allNodes.At(i)
|
node := allNodes.At(i)
|
||||||
if node.ID() != nodeID && node.AsStruct().GivenName == newName {
|
if node.ID() != nodeID && node.AsStruct().GivenName == newName {
|
||||||
return types.NodeView{}, change.Change{}, fmt.Errorf("%w: %s", ErrNodeNameNotUnique, newName)
|
return types.NodeView{}, change.Change{}, fmt.Errorf("%w: %s", ErrNodeNameNotUnique, newName)
|
||||||
|
|
|
||||||
|
|
@ -245,7 +245,7 @@ func TestAuthWebFlowLogoutAndReloginNewUser(t *testing.T) {
|
||||||
allClients, err := scenario.ListTailscaleClients()
|
allClients, err := scenario.ListTailscaleClients()
|
||||||
requireNoErrListClients(t, err)
|
requireNoErrListClients(t, err)
|
||||||
|
|
||||||
allIps, err := scenario.ListTailscaleClientsIPs()
|
_, err = scenario.ListTailscaleClientsIPs()
|
||||||
requireNoErrListClientIPs(t, err)
|
requireNoErrListClientIPs(t, err)
|
||||||
|
|
||||||
err = scenario.WaitForTailscaleSync()
|
err = scenario.WaitForTailscaleSync()
|
||||||
|
|
@ -367,7 +367,7 @@ func TestAuthWebFlowLogoutAndReloginNewUser(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Test connectivity after user switch
|
// Test connectivity after user switch
|
||||||
allIps, err = scenario.ListTailscaleClientsIPs()
|
allIps, err := scenario.ListTailscaleClientsIPs()
|
||||||
requireNoErrListClientIPs(t, err)
|
requireNoErrListClientIPs(t, err)
|
||||||
|
|
||||||
allAddrs := lo.Map(allIps, func(x netip.Addr, index int) string {
|
allAddrs := lo.Map(allIps, func(x netip.Addr, index int) string {
|
||||||
|
|
|
||||||
|
|
@ -23,8 +23,8 @@ import (
|
||||||
"github.com/oauth2-proxy/mockoidc"
|
"github.com/oauth2-proxy/mockoidc"
|
||||||
"github.com/stretchr/testify/assert"
|
"github.com/stretchr/testify/assert"
|
||||||
"github.com/stretchr/testify/require"
|
"github.com/stretchr/testify/require"
|
||||||
"golang.org/x/exp/maps"
|
"maps"
|
||||||
"golang.org/x/exp/slices"
|
"slices"
|
||||||
"tailscale.com/tailcfg"
|
"tailscale.com/tailcfg"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
@ -332,7 +332,7 @@ func requireAllClientsOnlineWithSingleTimeout(t *testing.T, headscale ControlSer
|
||||||
|
|
||||||
var failureReport strings.Builder
|
var failureReport strings.Builder
|
||||||
|
|
||||||
ids := types.NodeIDs(maps.Keys(nodeStatus))
|
ids := slices.Collect(maps.Keys(nodeStatus))
|
||||||
slices.Sort(ids)
|
slices.Sort(ids)
|
||||||
|
|
||||||
for _, nodeID := range ids {
|
for _, nodeID := range ids {
|
||||||
|
|
|
||||||
|
|
@ -1158,7 +1158,7 @@ var errParseAuthPage = errors.New("failed to parse auth page")
|
||||||
|
|
||||||
func (s *Scenario) runHeadscaleRegister(userStr string, body string) error {
|
func (s *Scenario) runHeadscaleRegister(userStr string, body string) error {
|
||||||
// see api.go HTML template
|
// see api.go HTML template
|
||||||
codeSep := strings.Split(string(body), "</code>")
|
codeSep := strings.Split(body, "</code>")
|
||||||
if len(codeSep) != expectedHTMLSplitParts {
|
if len(codeSep) != expectedHTMLSplitParts {
|
||||||
return errParseAuthPage
|
return errParseAuthPage
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -731,12 +731,12 @@ func (t *TailscaleInContainer) LoginWithURL(
|
||||||
|
|
||||||
// Logout runs the logout routine on the given Tailscale instance.
|
// Logout runs the logout routine on the given Tailscale instance.
|
||||||
func (t *TailscaleInContainer) Logout() error {
|
func (t *TailscaleInContainer) Logout() error {
|
||||||
stdout, stderr, err := t.Execute([]string{"tailscale", "logout"})
|
_, _, err := t.Execute([]string{"tailscale", "logout"})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
stdout, stderr, _ = t.Execute([]string{"tailscale", "status"})
|
stdout, stderr, _ := t.Execute([]string{"tailscale", "status"})
|
||||||
if !strings.Contains(stdout+stderr, "Logged out.") {
|
if !strings.Contains(stdout+stderr, "Logged out.") {
|
||||||
return fmt.Errorf("%w: stdout: %s, stderr: %s", errLogoutFailed, stdout, stderr)
|
return fmt.Errorf("%w: stdout: %s, stderr: %s", errLogoutFailed, stdout, stderr)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue