From dac1ada52bf5588d7b2b9088d285dd0f9fab6a60 Mon Sep 17 00:00:00 2001 From: Pranav Motarwar Date: Sun, 18 Jan 2026 15:16:40 -0800 Subject: [PATCH] Add helper to detect empty configuration --- config/util.go | 8 ++++++++ config/util_test.go | 21 +++++++++++++++++++++ go.sum | 8 ++++---- 3 files changed, 33 insertions(+), 4 deletions(-) create mode 100644 config/util.go create mode 100644 config/util_test.go diff --git a/config/util.go b/config/util.go new file mode 100644 index 0000000..826b458 --- /dev/null +++ b/config/util.go @@ -0,0 +1,8 @@ +package config + +// IsZero reports whether the provided configuration struct is empty. +// This can be used to detect missing or unset configuration. +func IsZero[T comparable](cfg T) bool { + var zero T + return cfg == zero +} diff --git a/config/util_test.go b/config/util_test.go new file mode 100644 index 0000000..d61e7cf --- /dev/null +++ b/config/util_test.go @@ -0,0 +1,21 @@ +package config + +import "testing" + +type testConfig struct { + Name string + Port int +} + +func TestIsZero(t *testing.T) { + var empty testConfig + nonEmpty := testConfig{Name: "chaos", Port: 8080} + + if !IsZero(empty) { + t.Fatalf("expected empty config to be zero") + } + + if IsZero(nonEmpty) { + t.Fatalf("expected non-empty config to not be zero") + } +} diff --git a/go.sum b/go.sum index 652568f..ff26a57 100644 --- a/go.sum +++ b/go.sum @@ -59,10 +59,10 @@ github.com/ziutek/mymysql v1.5.4 h1:GB0qdRGsTwQSBVYuVShFBKaXSnSnYYC2d9knnE1LHFs= github.com/ziutek/mymysql v1.5.4/go.mod h1:LMSpPZ6DbqWFxNCHW77HeMg9I646SAhApZ/wKdgO/C0= golang.org/x/crypto v0.0.0-20160922170629-8e06e8ddd962 h1:mWFWs/KZ0R2cLgNYRn+C4pQvMDmpkqxF1Npt3NEAPg0= golang.org/x/crypto v0.0.0-20160922170629-8e06e8ddd962/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/sys v0.0.0-20160916181909-8f0908ab3b24 h1:BL/wcoHkjubwHn2wDTAD1fehKZ9lf67KOVzucRKWPtM= -golang.org/x/sys v0.0.0-20160916181909-8f0908ab3b24/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/text v0.0.0-20160922232553-a7c023693a94 h1:QmdGgXvDlzDdp+l90rsC+qLFmFhl2nn+rSfBnS8P4zI= -golang.org/x/text v0.0.0-20160922232553-a7c023693a94/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/sys v0.5.0 h1:MUK/U/4lj1t1oPg0HfuXDN/Z1wv31ZJ/YcPiGccS4DU= +golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/text v0.9.0 h1:2sjJmO8cDvYveuX97RDLsxlyUxLl+GHoLxBiRdHllBE= +golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=