diff --git a/doctor/ethtool/ethtool_test.go b/doctor/ethtool/ethtool_test.go new file mode 100644 index 000000000..32918079e --- /dev/null +++ b/doctor/ethtool/ethtool_test.go @@ -0,0 +1,21 @@ +// Copyright (c) Tailscale Inc & AUTHORS +// SPDX-License-Identifier: BSD-3-Clause + +package ethtool + +import ( + "runtime" + "testing" +) + +func TestGetUDPGROTable(t *testing.T) { + if runtime.GOOS != "linux" { + t.Skip("ethtool only on Linux") + } + + table, err := GetUDPGROTable() + if err != nil { + t.Logf("GetUDPGROTable returned error (expected on non-Linux or without permissions): %v", err) + } + _ = table +} diff --git a/doctor/routetable/routetable_test.go b/doctor/routetable/routetable_test.go new file mode 100644 index 000000000..6e822b96e --- /dev/null +++ b/doctor/routetable/routetable_test.go @@ -0,0 +1,19 @@ +// Copyright (c) Tailscale Inc & AUTHORS +// SPDX-License-Identifier: BSD-3-Clause + +package routetable + +import "testing" + +func TestGet(t *testing.T) { + routes, err := Get(10000) + if err != nil { + t.Logf("Get returned error: %v", err) + } + _ = routes +} + +func TestRouteTable(t *testing.T) { + rt := RouteTable{} + _ = rt.String() +} diff --git a/gokrazy/gokrazy_test.go b/gokrazy/gokrazy_test.go new file mode 100644 index 000000000..18421b448 --- /dev/null +++ b/gokrazy/gokrazy_test.go @@ -0,0 +1,11 @@ +// Copyright (c) Tailscale Inc & AUTHORS +// SPDX-License-Identifier: BSD-3-Clause + +package gokrazy + +import "testing" + +func TestIsGokrazy(t *testing.T) { + _ = IsGokrazy() + // Just verify it doesn't panic +} diff --git a/kube/kubeclient/kubeclient_test.go b/kube/kubeclient/kubeclient_test.go new file mode 100644 index 000000000..2b6587ec8 --- /dev/null +++ b/kube/kubeclient/kubeclient_test.go @@ -0,0 +1,17 @@ +// Copyright (c) Tailscale Inc & AUTHORS +// SPDX-License-Identifier: BSD-3-Clause + +package kubeclient + +import "testing" + +func TestIsNotFoundErr(t *testing.T) { + if IsNotFoundErr(nil) { + t.Error("IsNotFoundErr(nil) = true, want false") + } +} + +func TestNamespaceFile(t *testing.T) { + _ = namespaceFile + // Constant should be defined +} diff --git a/wgengine/capture/capture_test.go b/wgengine/capture/capture_test.go new file mode 100644 index 000000000..c2ee5c6fe --- /dev/null +++ b/wgengine/capture/capture_test.go @@ -0,0 +1,24 @@ +// Copyright (c) Tailscale Inc & AUTHORS +// SPDX-License-Identifier: BSD-3-Clause + +package capture + +import "testing" + +func TestNew(t *testing.T) { + c := New() + if c == nil { + t.Fatal("New() returned nil") + } +} + +func TestCapture_Start(t *testing.T) { + c := New() + defer c.Close() + + // Basic test - should not panic + err := c.Start("test.pcap") + if err != nil { + t.Logf("Start returned error (expected on some platforms): %v", err) + } +} diff --git a/wgengine/netlog/logger_test.go b/wgengine/netlog/logger_test.go new file mode 100644 index 000000000..eb3318322 --- /dev/null +++ b/wgengine/netlog/logger_test.go @@ -0,0 +1,25 @@ +// Copyright (c) Tailscale Inc & AUTHORS +// SPDX-License-Identifier: BSD-3-Clause + +package netlog + +import ( + "testing" + "time" +) + +func TestLogger(t *testing.T) { + logger := NewLogger(nil, nil) + if logger == nil { + t.Fatal("NewLogger returned nil") + } +} + +func TestMessage(t *testing.T) { + m := Message{ + Start: time.Now(), + } + if m.Start.IsZero() { + t.Error("Message.Start is zero") + } +}