Skip to content

Commit a8ff2dd

Browse files
authored
Enable errcheck linter (open-telemetry#4462)
* Check or explicitly ignore all errors * Enable errcheck * Use `t.Cleanup` instead of `defer` * Point to issue on `Set` ignored error
1 parent 7059878 commit a8ff2dd

File tree

17 files changed

+68
-56
lines changed

17 files changed

+68
-56
lines changed

.golangci.yml

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -96,9 +96,8 @@ linters-settings:
9696
- kilometres
9797

9898
linters:
99-
disable:
100-
- errcheck
10199
enable:
100+
- errcheck
102101
- exportloopref
103102
- gocritic
104103
- gofmt
@@ -129,7 +128,7 @@ issues:
129128
# The list of ids of default excludes to include or disable. By default it's empty.
130129
# See the list of default excludes here https://golangci-lint.run/usage/configuration.
131130
include:
132-
- EXC0001
131+
# - EXC0001 - errcheck checks that are not usually checked
133132
- EXC0002
134133
- EXC0003
135134
- EXC0004

config/configgrpc/configgrpc_test.go

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ import (
4040
func TestDefaultGrpcClientSettings(t *testing.T) {
4141
tt, err := obsreporttest.SetupTelemetry()
4242
require.NoError(t, err)
43-
defer tt.Shutdown(context.Background())
43+
t.Cleanup(func() { require.NoError(t, tt.Shutdown(context.Background())) })
4444

4545
gcs := &GRPCClientSettings{
4646
TLSSetting: configtls.TLSClientSetting{
@@ -55,7 +55,7 @@ func TestDefaultGrpcClientSettings(t *testing.T) {
5555
func TestAllGrpcClientSettings(t *testing.T) {
5656
tt, err := obsreporttest.SetupTelemetry()
5757
require.NoError(t, err)
58-
defer tt.Shutdown(context.Background())
58+
t.Cleanup(func() { require.NoError(t, tt.Shutdown(context.Background())) })
5959

6060
gcs := &GRPCClientSettings{
6161
Headers: map[string]string{
@@ -160,7 +160,7 @@ func TestGrpcServerAuthSettings(t *testing.T) {
160160
func TestGRPCClientSettingsError(t *testing.T) {
161161
tt, err := obsreporttest.SetupTelemetry()
162162
require.NoError(t, err)
163-
defer tt.Shutdown(context.Background())
163+
t.Cleanup(func() { require.NoError(t, tt.Shutdown(context.Background())) })
164164

165165
tests := []struct {
166166
settings GRPCClientSettings
@@ -251,7 +251,7 @@ func TestGRPCClientSettingsError(t *testing.T) {
251251
func TestUseSecure(t *testing.T) {
252252
tt, err := obsreporttest.SetupTelemetry()
253253
require.NoError(t, err)
254-
defer tt.Shutdown(context.Background())
254+
t.Cleanup(func() { require.NoError(t, tt.Shutdown(context.Background())) })
255255

256256
gcs := &GRPCClientSettings{
257257
Headers: nil,
@@ -371,7 +371,7 @@ func TestGetGRPCCompressionKey(t *testing.T) {
371371
func TestHttpReception(t *testing.T) {
372372
tt, err := obsreporttest.SetupTelemetry()
373373
require.NoError(t, err)
374-
defer tt.Shutdown(context.Background())
374+
t.Cleanup(func() { require.NoError(t, tt.Shutdown(context.Background())) })
375375

376376
tests := []struct {
377377
name string
@@ -526,7 +526,7 @@ func TestReceiveOnUnixDomainSocket(t *testing.T) {
526526
}
527527
tt, err := obsreporttest.SetupTelemetry()
528528
require.NoError(t, err)
529-
defer tt.Shutdown(context.Background())
529+
t.Cleanup(func() { require.NoError(t, tt.Shutdown(context.Background())) })
530530

531531
socketName := tempSocketName(t)
532532
gss := &GRPCServerSettings{

config/configmap.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,8 @@ func (l *Map) Set(key string, value interface{}) {
116116
// koanf doesn't offer a direct setting mechanism so merging is required.
117117
merged := koanf.New(KeyDelimiter)
118118
_ = merged.Load(confmap.Provider(map[string]interface{}{key: value}, KeyDelimiter), nil)
119-
l.k.Merge(merged)
119+
// TODO (issue 4467): return this error on `Set`.
120+
_ = l.k.Merge(merged)
120121
}
121122

122123
// IsSet checks to see if the key has been set in any of the data locations.

exporter/exporterhelper/internal/persistent_queue_test.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ func TestPersistentQueue_Capacity(t *testing.T) {
5252

5353
for i := 0; i < 100; i++ {
5454
ext := createStorageExtension(path)
55-
defer ext.Shutdown(context.Background())
55+
t.Cleanup(func() { require.NoError(t, ext.Shutdown(context.Background())) })
5656

5757
wq := createTestQueue(ext, 5)
5858
require.Equal(t, 0, wq.Size())
@@ -85,7 +85,7 @@ func TestPersistentQueue_Close(t *testing.T) {
8585
defer os.RemoveAll(path)
8686

8787
ext := createStorageExtension(path)
88-
defer ext.Shutdown(context.Background())
88+
t.Cleanup(func() { require.NoError(t, ext.Shutdown(context.Background())) })
8989

9090
wq := createTestQueue(ext, 1001)
9191
traces := newTraces(1, 10)
@@ -147,7 +147,7 @@ func TestPersistentQueue_ConsumersProducers(t *testing.T) {
147147

148148
defer os.RemoveAll(path)
149149
defer tq.Stop()
150-
defer ext.Shutdown(context.Background())
150+
t.Cleanup(func() { require.NoError(t, ext.Shutdown(context.Background())) })
151151

152152
numMessagesConsumed := int32(0)
153153
tq.StartConsumers(c.numConsumers, func(item interface{}) {

exporter/exporterhelper/internal/persistent_storage_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -216,7 +216,7 @@ func TestPersistentStorage_RepeatPutCloseReadClose(t *testing.T) {
216216
ext := createStorageExtension(path)
217217
wq := createTestQueue(ext, 5000)
218218
require.Equal(t, 0, wq.Size())
219-
ext.Shutdown(context.Background())
219+
require.NoError(t, ext.Shutdown(context.Background()))
220220
}
221221

222222
func TestPersistentStorage_EmptyRequest(t *testing.T) {
@@ -279,7 +279,7 @@ func BenchmarkPersistentStorage_TraceSpans(b *testing.B) {
279279
req := ps.get()
280280
require.NotNil(bb, req)
281281
}
282-
ext.Shutdown(context.Background())
282+
require.NoError(b, ext.Shutdown(context.Background()))
283283
})
284284
}
285285
}

exporter/exporterhelper/logs_test.go

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,7 @@ func TestLogsExporter_WithRecordLogs_ReturnError(t *testing.T) {
127127
func TestLogsExporter_WithRecordEnqueueFailedMetrics(t *testing.T) {
128128
tt, err := obsreporttest.SetupTelemetry()
129129
require.NoError(t, err)
130-
defer tt.Shutdown(context.Background())
130+
t.Cleanup(func() { require.NoError(t, tt.Shutdown(context.Background())) })
131131

132132
rCfg := DefaultRetrySettings()
133133
qCfg := DefaultQueueSettings()
@@ -141,7 +141,8 @@ func TestLogsExporter_WithRecordEnqueueFailedMetrics(t *testing.T) {
141141
md := testdata.GenerateLogsTwoLogRecordsSameResourceOneDifferent()
142142
const numBatches = 7
143143
for i := 0; i < numBatches; i++ {
144-
te.ConsumeLogs(context.Background(), md)
144+
// errors are checked in the checkExporterEnqueueFailedLogsStats function below.
145+
_ = te.ConsumeLogs(context.Background(), md)
145146
}
146147

147148
// 2 batched must be in queue, and 5 batches (15 log records) rejected due to queue overflow
@@ -207,7 +208,7 @@ func newPushLogsData(retError error) consumerhelper.ConsumeLogsFunc {
207208
func checkRecordedMetricsForLogsExporter(t *testing.T, le component.LogsExporter, wantError error) {
208209
tt, err := obsreporttest.SetupTelemetry()
209210
require.NoError(t, err)
210-
defer tt.Shutdown(context.Background())
211+
t.Cleanup(func() { require.NoError(t, tt.Shutdown(context.Background())) })
211212

212213
ld := testdata.GenerateLogsTwoLogRecordsSameResource()
213214
const numBatches = 7

exporter/exporterhelper/metrics_test.go

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,7 @@ func TestMetricsExporter_WithRecordMetrics_ReturnError(t *testing.T) {
126126
func TestMetricsExporter_WithRecordEnqueueFailedMetrics(t *testing.T) {
127127
tt, err := obsreporttest.SetupTelemetry()
128128
require.NoError(t, err)
129-
defer tt.Shutdown(context.Background())
129+
t.Cleanup(func() { require.NoError(t, tt.Shutdown(context.Background())) })
130130

131131
rCfg := DefaultRetrySettings()
132132
qCfg := DefaultQueueSettings()
@@ -140,7 +140,8 @@ func TestMetricsExporter_WithRecordEnqueueFailedMetrics(t *testing.T) {
140140
md := testdata.GenerateMetricsOneMetric()
141141
const numBatches = 7
142142
for i := 0; i < numBatches; i++ {
143-
te.ConsumeMetrics(context.Background(), md)
143+
// errors are checked in the checkExporterEnqueueFailedMetricsStats function below.
144+
_ = te.ConsumeMetrics(context.Background(), md)
144145
}
145146

146147
// 2 batched must be in queue, and 10 metric points rejected due to queue overflow
@@ -208,7 +209,7 @@ func newPushMetricsData(retError error) consumerhelper.ConsumeMetricsFunc {
208209
func checkRecordedMetricsForMetricsExporter(t *testing.T, me component.MetricsExporter, wantError error) {
209210
tt, err := obsreporttest.SetupTelemetry()
210211
require.NoError(t, err)
211-
defer tt.Shutdown(context.Background())
212+
t.Cleanup(func() { require.NoError(t, tt.Shutdown(context.Background())) })
212213

213214
md := testdata.GenerateMetricsTwoMetrics()
214215
const numBatches = 7

exporter/exporterhelper/obsreport_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ import (
3131
func TestExportEnqueueFailure(t *testing.T) {
3232
tt, err := obsreporttest.SetupTelemetry()
3333
require.NoError(t, err)
34-
defer tt.Shutdown(context.Background())
34+
t.Cleanup(func() { require.NoError(t, tt.Shutdown(context.Background())) })
3535

3636
exporter := config.NewComponentID("fakeExporter")
3737

exporter/exporterhelper/queued_retry_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -302,7 +302,7 @@ func TestQueuedRetry_DropOnFull(t *testing.T) {
302302
func TestQueuedRetryHappyPath(t *testing.T) {
303303
tt, err := obsreporttest.SetupTelemetry()
304304
require.NoError(t, err)
305-
defer tt.Shutdown(context.Background())
305+
t.Cleanup(func() { require.NoError(t, tt.Shutdown(context.Background())) })
306306

307307
qCfg := DefaultQueueSettings()
308308
rCfg := DefaultRetrySettings()

exporter/exporterhelper/traces_test.go

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -124,7 +124,7 @@ func TestTracesExporter_WithRecordMetrics_ReturnError(t *testing.T) {
124124
func TestTracesExporter_WithRecordEnqueueFailedMetrics(t *testing.T) {
125125
tt, err := obsreporttest.SetupTelemetry()
126126
require.NoError(t, err)
127-
defer tt.Shutdown(context.Background())
127+
t.Cleanup(func() { require.NoError(t, tt.Shutdown(context.Background())) })
128128

129129
rCfg := DefaultRetrySettings()
130130
qCfg := DefaultQueueSettings()
@@ -138,7 +138,8 @@ func TestTracesExporter_WithRecordEnqueueFailedMetrics(t *testing.T) {
138138
td := testdata.GenerateTracesTwoSpansSameResource()
139139
const numBatches = 7
140140
for i := 0; i < numBatches; i++ {
141-
te.ConsumeTraces(context.Background(), td)
141+
// errors are checked in the checkExporterEnqueueFailedTracesStats function below.
142+
_ = te.ConsumeTraces(context.Background(), td)
142143
}
143144

144145
// 2 batched must be in queue, and 5 batches (10 spans) rejected due to queue overflow
@@ -208,7 +209,7 @@ func newTraceDataPusher(retError error) consumerhelper.ConsumeTracesFunc {
208209
func checkRecordedMetricsForTracesExporter(t *testing.T, te component.TracesExporter, wantError error) {
209210
tt, err := obsreporttest.SetupTelemetry()
210211
require.NoError(t, err)
211-
defer tt.Shutdown(context.Background())
212+
t.Cleanup(func() { require.NoError(t, tt.Shutdown(context.Background())) })
212213

213214
td := testdata.GenerateTracesTwoSpansSameResource()
214215
const numBatches = 7

0 commit comments

Comments
 (0)