mirror of
https://github.com/juanfont/headscale.git
synced 2026-05-23 18:48:42 +09:00
Every Go-identifier reference in // and /* */ comments now uses
godoc's [Name] linking syntax so pkg.go.dev and `go doc` render
them as clickable cross-references. No behaviour change.
Pattern applied across the tree:
In-package [Foo], [Foo.Bar]
Cross-package [pkg.Foo], [pkg.Foo.Bar]
Stdlib [netip.Prefix], [errors.Is], [context.Context]
Tailscale [tailcfg.MapResponse], [tailcfg.Node.CapMap],
[tailcfg.NodeAttrSuggestExitNode]
Skip rules:
- File:line refs left as plain text
- HuJSON wire keys inside backtick raw strings untouched
- ACL/policy syntax tokens (tag:foo, autogroup:self, ...) not Go
symbols, left as plain text
- JSON/OIDC wire keys, gorm tags, RFC IPv6 placeholders, markdown
link tags, decorative dividers — all left as-is
49 lines
1.6 KiB
Go
49 lines
1.6 KiB
Go
package types
|
|
|
|
import (
|
|
"os"
|
|
"testing"
|
|
|
|
"github.com/rs/zerolog"
|
|
)
|
|
|
|
// EnvTestLogLevel overrides the default test log level. Accepts any zerolog
|
|
// level string: trace, debug, info, warn, error, fatal, panic, disabled.
|
|
const EnvTestLogLevel = "HEADSCALE_TEST_LOG_LEVEL"
|
|
|
|
// init quiets zerolog when this package is loaded inside a test binary.
|
|
//
|
|
// hscontrol/types is transitively imported by every test in the repo that
|
|
// emits zerolog output, so this init() runs once per test binary and is
|
|
// the only place that needs to know about test logging configuration.
|
|
//
|
|
// Default: [zerolog.ErrorLevel] (silent in green-path runs, real errors still surface).
|
|
// Override: HEADSCALE_TEST_LOG_LEVEL=debug (or trace, info, warn, disabled).
|
|
//
|
|
// Production binaries are unaffected because [testing.Testing] returns false
|
|
// outside of test execution. The same [testing.Testing] pattern is already
|
|
// used in hscontrol/db/users.go and hscontrol/db/node.go, so importing the
|
|
// testing package here is consistent with existing project conventions.
|
|
//
|
|
// Pitfalls:
|
|
// - log.Fatal still calls [os.Exit] and log.Panic still panics regardless of
|
|
// level — only the rendered message is suppressed.
|
|
// - Local buffer loggers ([zerolog.New] with a buffer) are also gated by the global
|
|
// level. Tests that assert on log output (currently only
|
|
// hscontrol/util/zlog) re-enable trace level via their own init_test.go.
|
|
func init() {
|
|
if !testing.Testing() {
|
|
return
|
|
}
|
|
|
|
if raw := os.Getenv(EnvTestLogLevel); raw != "" {
|
|
lvl, err := zerolog.ParseLevel(raw)
|
|
if err == nil {
|
|
zerolog.SetGlobalLevel(lvl)
|
|
return
|
|
}
|
|
}
|
|
|
|
zerolog.SetGlobalLevel(zerolog.ErrorLevel)
|
|
}
|