This checker is a radically improved analogue of go vet's testinggoroutine check.
The point of the check is that, according to the documentation, functions leading to t.FailNow (essentially to runtime.GoExit) must only be used in the goroutine that runs the test. Otherwise, they will not work as declared, namely, finish the test function.
You can continue to use require as the current goroutine finisher, but this could lead
to possible resource leaks in tests;
to increasing of confusion, because functions will be not used as intended.
Typically, any assertions inside goroutines are a marker of poor test architecture. Try to execute them in the main goroutine and distribute the data necessary for this into it (example).
Also a bad solution would be to simply replace all require in goroutines with assert (like here) – this will only mask the problem.
In addition, the checker warns about require in HTTP handlers (functions and methods whose signature matches http.HandlerFunc), because handlers run in a separate service goroutine that services the HTTP connection. Terminating these goroutines can lead to undefined behaviour and difficulty debugging tests. You can turn off the check using the --go-require.ignore-http-handlers flag.
P.S. Look at testify's issue, related to assertions in the goroutines.
Example
go func() {
conn, err = lis.Accept()
require.NoError(t, err) ❌
if assert.Error(err) { ✅
assert.FailNow(t, msg) ❌
}
}()
Expected output
Decision about enabling or not enabling this checker.
Findings
For this checker, the following findings were found in the current codebase:
config/config_test.go:523:3 testifylint go-require: do not use require in http handlers
migrations/inputs_httpjson/migration_test.go:116:6 testifylint go-require: do not use require in http handlers
plugins/common/cookie/cookie_test.go:64:5 testifylint go-require: do not use require in http handlers
plugins/common/cookie/cookie_test.go:91:5 testifylint go-require: do not use require in http handlers
plugins/common/proxy/socks5_test.go:35:14 testifylint go-require: require must only be used in the goroutine running the test function
plugins/common/shim/goshim_test.go:54:3 testifylint go-require: require must only be used in the goroutine running the test function
plugins/common/shim/input_test.go:51:3 testifylint go-require: require must only be used in the goroutine running the test function
plugins/common/shim/input_test.go:78:3 testifylint go-require: require must only be used in the goroutine running the test function
plugins/common/shim/output_test.go:32:3 testifylint go-require: require must only be used in the goroutine running the test function
plugins/common/shim/processor_test.go:51:3 testifylint go-require: require must only be used in the goroutine running the test function
plugins/common/shim/processor_test.go:92:3 testifylint go-require: require must only be used in the goroutine running the test function
plugins/inputs/activemq/activemq_test.go:153:4 testifylint go-require: do not use require in http handlers
plugins/inputs/activemq/activemq_test.go:157:4 testifylint go-require: do not use require in http handlers
plugins/inputs/activemq/activemq_test.go:161:4 testifylint go-require: do not use require in http handlers
plugins/inputs/apache/apache_test.go:36:3 testifylint go-require: do not use require in http handlers
plugins/inputs/apcupsd/apcupsd_test.go:47:5 testifylint go-require: require must only be used in the goroutine running the test function
plugins/inputs/apcupsd/apcupsd_test.go:51:5 testifylint go-require: require must only be used in the goroutine running the test function
plugins/inputs/apcupsd/apcupsd_test.go:55:5 testifylint go-require: require must only be used in the goroutine running the test function
plugins/inputs/apcupsd/apcupsd_test.go:62:6 testifylint go-require: require must only be used in the goroutine running the test function
plugins/inputs/aurora/aurora_test.go:251:5 testifylint go-require: do not use require in http handlers
plugins/inputs/aurora/aurora_test.go:252:5 testifylint go-require: do not use require in http handlers
plugins/inputs/aurora/aurora_test.go:255:5 testifylint go-require: do not use require in http handlers
plugins/inputs/beat/beat_test.go:32:4 testifylint go-require: do not use require in http handlers
plugins/inputs/beat/beat_test.go:36:3 testifylint go-require: do not use require in http handlers
plugins/inputs/beat/beat_test.go:38:3 testifylint go-require: do not use require in http handlers
plugins/inputs/beat/beat_test.go:176:4 testifylint go-require: do not use require in http handlers
plugins/inputs/beat/beat_test.go:180:3 testifylint go-require: do not use require in http handlers
plugins/inputs/beat/beat_test.go:181:3 testifylint go-require: do not use require in http handlers
plugins/inputs/beat/beat_test.go:182:3 testifylint go-require: do not use require in http handlers
plugins/inputs/beat/beat_test.go:183:3 testifylint go-require: do not use require in http handlers
plugins/inputs/beat/beat_test.go:184:3 testifylint go-require: do not use require in http handlers
plugins/inputs/beat/beat_test.go:187:3 testifylint go-require: do not use require in http handlers
plugins/inputs/chrony/chrony_test.go:746:5 testifylint go-require: s.serve contains assertions that must only be used in the goroutine running the test function
plugins/inputs/clickhouse/clickhouse_test.go:77:5 testifylint go-require: do not use require in http handlers
plugins/inputs/clickhouse/clickhouse_test.go:94:5 testifylint go-require: do not use require in http handlers
plugins/inputs/clickhouse/clickhouse_test.go:111:5 testifylint go-require: do not use require in http handlers
plugins/inputs/clickhouse/clickhouse_test.go:128:5 testifylint go-require: do not use require in http handlers
plugins/inputs/clickhouse/clickhouse_test.go:139:5 testifylint go-require: do not use require in http handlers
plugins/inputs/clickhouse/clickhouse_test.go:150:5 testifylint go-require: do not use require in http handlers
plugins/inputs/clickhouse/clickhouse_test.go:161:5 testifylint go-require: do not use require in http handlers
plugins/inputs/clickhouse/clickhouse_test.go:174:5 testifylint go-require: do not use require in http handlers
plugins/inputs/clickhouse/clickhouse_test.go:185:5 testifylint go-require: do not use require in http handlers
plugins/inputs/clickhouse/clickhouse_test.go:200:5 testifylint go-require: do not use require in http handlers
plugins/inputs/clickhouse/clickhouse_test.go:215:5 testifylint go-require: do not use require in http handlers
plugins/inputs/clickhouse/clickhouse_test.go:232:5 testifylint go-require: do not use require in http handlers
plugins/inputs/clickhouse/clickhouse_test.go:261:5 testifylint go-require: do not use require in http handlers
plugins/inputs/clickhouse/clickhouse_test.go:272:5 testifylint go-require: do not use require in http handlers
plugins/inputs/clickhouse/clickhouse_test.go:301:5 testifylint go-require: do not use require in http handlers
plugins/inputs/clickhouse/clickhouse_test.go:454:5 testifylint go-require: do not use require in http handlers
plugins/inputs/clickhouse/clickhouse_test.go:465:5 testifylint go-require: do not use require in http handlers
plugins/inputs/clickhouse/clickhouse_test.go:476:5 testifylint go-require: do not use require in http handlers
plugins/inputs/clickhouse/clickhouse_test.go:512:4 testifylint go-require: do not use require in http handlers
plugins/inputs/clickhouse/clickhouse_test.go:523:4 testifylint go-require: do not use require in http handlers
plugins/inputs/clickhouse/clickhouse_test.go:548:4 testifylint go-require: do not use require in http handlers
plugins/inputs/clickhouse/clickhouse_test.go:634:5 testifylint go-require: do not use require in http handlers
plugins/inputs/consul_agent/consul_agent_test.go:79:6 testifylint go-require: do not use require in http handlers
plugins/inputs/ctrlx_datalayer/ctrlx_datalayer_test.go:40:3 testifylint go-require: do not use require in http handlers
plugins/inputs/ctrlx_datalayer/ctrlx_datalayer_test.go:84:5 testifylint go-require: do not use require in http handlers
plugins/inputs/ctrlx_datalayer/ctrlx_datalayer_test.go:122:3 testifylint go-require: do not use require in http handlers
plugins/inputs/ctrlx_datalayer/ctrlx_datalayer_test.go:127:3 testifylint go-require: do not use require in http handlers
plugins/inputs/ctrlx_datalayer/ctrlx_datalayer_test.go:133:3 testifylint go-require: do not use require in http handlers
plugins/inputs/ctrlx_datalayer/ctrlx_datalayer_test.go:140:4 testifylint go-require: do not use require in http handlers
plugins/inputs/ctrlx_datalayer/ctrlx_datalayer_test.go:142:4 testifylint go-require: do not use require in http handlers
plugins/inputs/ctrlx_datalayer/ctrlx_datalayer_test.go:146:5 testifylint go-require: do not use require in http handlers
plugins/inputs/ctrlx_datalayer/ctrlx_datalayer_test.go:149:5 testifylint go-require: do not use require in http handlers
plugins/inputs/ctrlx_datalayer/ctrlx_datalayer_test.go:152:5 testifylint go-require: do not use require in http handlers
plugins/inputs/ctrlx_datalayer/ctrlx_datalayer_test.go:156:5 testifylint go-require: do not use require in http handlers
plugins/inputs/ctrlx_datalayer/ctrlx_datalayer_test.go:159:4 testifylint go-require: do not use require in http handlers
plugins/inputs/dovecot/dovecot_test.go:62:3 testifylint go-require: require must only be used in the goroutine running the test function
plugins/inputs/dovecot/dovecot_test.go:65:3 testifylint go-require: require must only be used in the goroutine running the test function
plugins/inputs/dovecot/dovecot_test.go:71:3 testifylint go-require: require must only be used in the goroutine running the test function
plugins/inputs/dovecot/dovecot_test.go:76:3 testifylint go-require: require must only be used in the goroutine running the test function
plugins/inputs/dovecot/dovecot_test.go:80:3 testifylint go-require: require must only be used in the goroutine running the test function
plugins/inputs/dpdk/dpdk_connector_test.go:99:6 testifylint go-require: simulateSocketResponse contains assertions that must only be used in the goroutine running the test function
plugins/inputs/dpdk/dpdk_test.go:151:6 testifylint go-require: simulateSocketResponse contains assertions that must only be used in the goroutine running the test function
plugins/inputs/dpdk/dpdk_test.go:200:6 testifylint go-require: simulateSocketResponse contains assertions that must only be used in the goroutine running the test function
plugins/inputs/dpdk/dpdk_test.go:226:7 testifylint go-require: simulateSocketResponse contains assertions that must only be used in the goroutine running the test function
plugins/inputs/dpdk/dpdk_test.go:245:6 testifylint go-require: simulateSocketResponse contains assertions that must only be used in the goroutine running the test function
plugins/inputs/dpdk/dpdk_test.go:258:6 testifylint go-require: simulateSocketResponse contains assertions that must only be used in the goroutine running the test function
plugins/inputs/dpdk/dpdk_test.go:278:6 testifylint go-require: simulateSocketResponse contains assertions that must only be used in the goroutine running the test function
plugins/inputs/dpdk/dpdk_test.go:279:6 testifylint go-require: simulateSocketResponse contains assertions that must only be used in the goroutine running the test function
plugins/inputs/dpdk/dpdk_test.go:306:6 testifylint go-require: simulateSocketResponse contains assertions that must only be used in the goroutine running the test function
plugins/inputs/execd/shim/shim_posix_test.go:40:5 testifylint go-require: require must only be used in the goroutine running the test function
plugins/inputs/execd/shim/shim_test.go:77:3 testifylint go-require: require must only be used in the goroutine running the test function
plugins/inputs/fibaro/fibaro_test.go:45:4 testifylint go-require: do not use require in http handlers
plugins/inputs/fibaro/fibaro_test.go:49:4 testifylint go-require: do not use require in http handlers
plugins/inputs/fibaro/fibaro_test.go:53:4 testifylint go-require: do not use require in http handlers
plugins/inputs/fibaro/fibaro_test.go:58:3 testifylint go-require: do not use require in http handlers
plugins/inputs/fibaro/fibaro_test.go:161:4 testifylint go-require: do not use require in http handlers
plugins/inputs/fibaro/fibaro_test.go:165:4 testifylint go-require: do not use require in http handlers
plugins/inputs/fibaro/fibaro_test.go:169:4 testifylint go-require: do not use require in http handlers
plugins/inputs/fibaro/fibaro_test.go:174:3 testifylint go-require: do not use require in http handlers
plugins/inputs/fireboard/fireboard_test.go:21:3 testifylint go-require: do not use require in http handlers
plugins/inputs/fluentd/fluentd_test.go:175:3 testifylint go-require: do not use require in http handlers
plugins/inputs/gnmi/gnmi_test.go:99:3 testifylint go-require: require must only be used in the goroutine running the test function
plugins/inputs/gnmi/gnmi_test.go:158:3 testifylint go-require: require must only be used in the goroutine running the test function
plugins/inputs/gnmi/gnmi_test.go:1015:5 testifylint go-require: require must only be used in the goroutine running the test function
plugins/inputs/gnmi/gnmi_test.go:1067:3 testifylint go-require: require must only be used in the goroutine running the test function
plugins/inputs/gnmi/gnmi_test.go:1099:3 testifylint go-require: require must only be used in the goroutine running the test function
plugins/inputs/gnmi/gnmi_test.go:1203:5 testifylint go-require: require must only be used in the goroutine running the test function
plugins/inputs/google_cloud_storage/google_cloud_storage_test.go:208:4 testifylint go-require: do not use require in http handlers
plugins/inputs/google_cloud_storage/google_cloud_storage_test.go:212:4 testifylint go-require: do not use require in http handlers
plugins/inputs/google_cloud_storage/google_cloud_storage_test.go:269:5 testifylint go-require: do not use require in http handlers
plugins/inputs/google_cloud_storage/google_cloud_storage_test.go:318:5 testifylint go-require: do not use require in http handlers
plugins/inputs/haproxy/haproxy_test.go:50:4 testifylint go-require: do not use require in http handlers
plugins/inputs/haproxy/haproxy_test.go:56:4 testifylint go-require: do not use require in http handlers
plugins/inputs/haproxy/haproxy_test.go:60:4 testifylint go-require: do not use require in http handlers
plugins/inputs/haproxy/haproxy_test.go:97:3 testifylint go-require: do not use require in http handlers
plugins/inputs/haproxy/haproxy_test.go:218:3 testifylint go-require: do not use require in http handlers
plugins/inputs/hddtemp/go-hddtemp/hddtemp_test.go:83:3 testifylint go-require: require must only be used in the goroutine running the test function
plugins/inputs/hddtemp/go-hddtemp/hddtemp_test.go:86:3 testifylint go-require: require must only be used in the goroutine running the test function
plugins/inputs/hddtemp/go-hddtemp/hddtemp_test.go:87:3 testifylint go-require: require must only be used in the goroutine running the test function
plugins/inputs/http_response/http_response_test.go:182:3 testifylint go-require: do not use require in http handlers
plugins/inputs/http_response/http_response_test.go:183:3 testifylint go-require: do not use require in http handlers
plugins/inputs/http_response/http_response_test.go:184:3 testifylint go-require: do not use require in http handlers
plugins/inputs/http_response/http_response_test.go:1124:3 testifylint go-require: do not use require in http handlers
plugins/inputs/http_response/http_response_test.go:1167:3 testifylint go-require: do not use require in http handlers
plugins/inputs/http_response/http_response_test.go:1344:3 testifylint go-require: do not use require in http handlers
plugins/inputs/icinga2/icinga2_test.go:73:4 testifylint go-require: do not use require in http handlers
plugins/inputs/icinga2/icinga2_test.go:136:4 testifylint go-require: do not use require in http handlers
plugins/inputs/icinga2/icinga2_test.go:195:4 testifylint go-require: do not use require in http handlers
plugins/inputs/icinga2/icinga2_test.go:265:4 testifylint go-require: do not use require in http handlers
plugins/inputs/influxdb/influxdb_test.go:22:4 testifylint go-require: do not use require in http handlers
plugins/inputs/influxdb/influxdb_test.go:73:4 testifylint go-require: do not use require in http handlers
plugins/inputs/influxdb/influxdb_test.go:145:4 testifylint go-require: do not use require in http handlers
plugins/inputs/influxdb/influxdb_test.go:185:4 testifylint go-require: do not use require in http handlers
plugins/inputs/influxdb/influxdb_test.go:220:4 testifylint go-require: do not use require in http handlers
plugins/inputs/influxdb/influxdb_test.go:239:4 testifylint go-require: do not use require in http handlers
plugins/inputs/influxdb/influxdb_test.go:258:3 testifylint go-require: do not use require in http handlers
plugins/inputs/intel_dlb/intel_dlb_test.go:428:6 testifylint go-require: simulateSocketResponseForGather contains assertions that must only be used in the goroutine running the test function
plugins/inputs/jolokia2_agent/jolokia2_agent_test.go:631:3 testifylint go-require: do not use require in http handlers
plugins/inputs/jolokia2_proxy/jolokia2_proxy_test.go:88:3 testifylint go-require: do not use require in http handlers
plugins/inputs/jolokia2_proxy/jolokia2_proxy_test.go:91:3 testifylint go-require: do not use require in http handlers
plugins/inputs/kafka_consumer/kafka_consumer_test.go:354:3 testifylint go-require: require must only be used in the goroutine running the test function
plugins/inputs/kafka_consumer/kafka_consumer_test.go:355:3 testifylint go-require: require must only be used in the goroutine running the test function
plugins/inputs/kapacitor/kapacitor_test.go:83:3 testifylint go-require: do not use require in http handlers
plugins/inputs/kapacitor/kapacitor_test.go:102:4 testifylint go-require: do not use require in http handlers
plugins/inputs/kubernetes/kubernetes_test.go:19:4 testifylint go-require: do not use require in http handlers
plugins/inputs/kubernetes/kubernetes_test.go:24:4 testifylint go-require: do not use require in http handlers
plugins/inputs/logstash/logstash_test.go:32:3 testifylint go-require: do not use require in http handlers
plugins/inputs/logstash/logstash_test.go:77:3 testifylint go-require: do not use require in http handlers
plugins/inputs/logstash/logstash_test.go:123:3 testifylint go-require: do not use require in http handlers
plugins/inputs/logstash/logstash_test.go:221:3 testifylint go-require: do not use require in http handlers
plugins/inputs/logstash/logstash_test.go:563:3 testifylint go-require: do not use require in http handlers
plugins/inputs/logstash/logstash_test.go:627:3 testifylint go-require: do not use require in http handlers
plugins/inputs/mailchimp/mailchimp_test.go:21:5 testifylint go-require: do not use require in http handlers
plugins/inputs/mailchimp/mailchimp_test.go:86:5 testifylint go-require: do not use require in http handlers
plugins/inputs/mailchimp/mailchimp_test.go:152:5 testifylint go-require: do not use require in http handlers
plugins/inputs/marklogic/marklogic_test.go:20:3 testifylint go-require: do not use require in http handlers
plugins/inputs/monit/monit_test.go:594:3 testifylint go-require: do not use require in http handlers
plugins/inputs/monit/monit_test.go:621:3 testifylint go-require: do not use require in http handlers
plugins/inputs/nats/nats_test.go:74:3 testifylint go-require: do not use require in http handlers
plugins/inputs/nats/nats_test.go:78:3 testifylint go-require: do not use require in http handlers
plugins/inputs/neptune_apex/neptune_apex_test.go:21:3 testifylint go-require: do not use require in http handlers
plugins/inputs/neptune_apex/neptune_apex_test.go:413:5 testifylint go-require: do not use require in http handlers
plugins/inputs/net_response/net_response_test.go:109:5 testifylint go-require: TCPServer contains assertions that must only be used in the goroutine running the test function
plugins/inputs/net_response/net_response_test.go:154:5 testifylint go-require: TCPServer contains assertions that must only be used in the goroutine running the test function
plugins/inputs/net_response/net_response_test.go:236:5 testifylint go-require: UDPServer contains assertions that must only be used in the goroutine running the test function
plugins/inputs/nginx/nginx_test.go:49:4 testifylint go-require: do not use require in http handlers
plugins/inputs/nginx/nginx_test.go:53:3 testifylint go-require: do not use require in http handlers
plugins/inputs/nginx_plus/nginx_plus_test.go:256:3 testifylint go-require: do not use require in http handlers
plugins/inputs/nginx_plus/nginx_plus_test.go:262:3 testifylint go-require: do not use require in http handlers
plugins/inputs/nginx_plus_api/nginx_plus_api_metrics_test.go:1500:3 testifylint go-require: do not use require in http handlers
plugins/inputs/nginx_plus_api/nginx_plus_api_metrics_test.go:1557:3 testifylint go-require: do not use require in http handlers
plugins/inputs/nginx_plus_api/nginx_plus_api_metrics_test.go:1561:3 testifylint go-require: do not use require in http handlers
plugins/inputs/nginx_sts/nginx_sts_test.go:170:3 testifylint go-require: do not use require in http handlers
plugins/inputs/nginx_sts/nginx_sts_test.go:176:3 testifylint go-require: do not use require in http handlers
plugins/inputs/nginx_upstream_check/nginx_upstream_check_test.go:49:3 testifylint go-require: do not use require in http handlers
plugins/inputs/nginx_upstream_check/nginx_upstream_check_test.go:55:3 testifylint go-require: do not use require in http handlers
plugins/inputs/nginx_upstream_check/nginx_upstream_check_test.go:106:3 testifylint go-require: do not use require in http handlers
plugins/inputs/nginx_upstream_check/nginx_upstream_check_test.go:112:3 testifylint go-require: do not use require in http handlers
plugins/inputs/nginx_upstream_check/nginx_upstream_check_test.go:114:3 testifylint go-require: do not use require in http handlers
plugins/inputs/nginx_upstream_check/nginx_upstream_check_test.go:115:3 testifylint go-require: do not use require in http handlers
plugins/inputs/nginx_upstream_check/nginx_upstream_check_test.go:116:3 testifylint go-require: do not use require in http handlers
plugins/inputs/nginx_upstream_check/nginx_upstream_check_test.go:117:3 testifylint go-require: do not use require in http handlers
plugins/inputs/nginx_vts/nginx_vts_test.go:207:3 testifylint go-require: do not use require in http handlers
plugins/inputs/nginx_vts/nginx_vts_test.go:213:3 testifylint go-require: do not use require in http handlers
plugins/inputs/nomad/nomad_test.go:86:6 testifylint go-require: do not use require in http handlers
plugins/inputs/nsq/nsq_test.go:19:3 testifylint go-require: do not use require in http handlers
plugins/inputs/nsq/nsq_test.go:276:3 testifylint go-require: do not use require in http handlers
plugins/inputs/phpfpm/fcgi_test.go:247:4 testifylint go-require: do not use require in http handlers
plugins/inputs/phpfpm/phpfpm_test.go:45:3 testifylint go-require: do not use require in http handlers
plugins/inputs/phpfpm/phpfpm_test.go:49:3 testifylint go-require: do not use require in http handlers
plugins/inputs/phpfpm/phpfpm_test.go:92:3 testifylint go-require: do not use require in http handlers
plugins/inputs/prometheus/prometheus_test.go:57:3 testifylint go-require: do not use require in http handlers
plugins/inputs/prometheus/prometheus_test.go:87:4 testifylint go-require: do not use require in http handlers
plugins/inputs/prometheus/prometheus_test.go:90:4 testifylint go-require: do not use require in http handlers
plugins/inputs/prometheus/prometheus_test.go:93:4 testifylint go-require: do not use require in http handlers
plugins/inputs/prometheus/prometheus_test.go:143:3 testifylint go-require: do not use require in http handlers
plugins/inputs/prometheus/prometheus_test.go:177:3 testifylint go-require: do not use require in http handlers
plugins/inputs/prometheus/prometheus_test.go:213:3 testifylint go-require: do not use require in http handlers
plugins/inputs/prometheus/prometheus_test.go:240:3 testifylint go-require: do not use require in http handlers
plugins/inputs/prometheus/prometheus_test.go:272:3 testifylint go-require: do not use require in http handlers
plugins/inputs/prometheus/prometheus_test.go:301:3 testifylint go-require: do not use require in http handlers
plugins/inputs/prometheus/prometheus_test.go:331:3 testifylint go-require: do not use require in http handlers
plugins/inputs/prometheus/prometheus_test.go:353:3 testifylint go-require: do not use require in http handlers
plugins/inputs/prometheus/prometheus_test.go:373:3 testifylint go-require: do not use require in http handlers
plugins/inputs/prometheus/prometheus_test.go:407:3 testifylint go-require: do not use require in http handlers
plugins/inputs/prometheus/prometheus_test.go:476:3 testifylint go-require: do not use require in http handlers
plugins/inputs/prometheus/prometheus_test.go:502:3 testifylint go-require: do not use require in http handlers
plugins/inputs/prometheus/prometheus_test.go:601:3 testifylint go-require: do not use require in http handlers
plugins/inputs/prometheus/prometheus_test.go:642:3 testifylint go-require: do not use require in http handlers
plugins/inputs/rabbitmq/rabbitmq_test.go:41:3 testifylint go-require: do not use require in http handlers
plugins/inputs/rabbitmq/rabbitmq_test.go:44:3 testifylint go-require: do not use require in http handlers
plugins/inputs/rabbitmq/rabbitmq_test.go:252:3 testifylint go-require: do not use require in http handlers
plugins/inputs/rabbitmq/rabbitmq_test.go:255:3 testifylint go-require: do not use require in http handlers
plugins/inputs/radius/radius_test.go:53:5 testifylint go-require: require must only be used in the goroutine running the test function
plugins/inputs/radius/radius_test.go:121:5 testifylint go-require: require must only be used in the goroutine running the test function
plugins/inputs/raindrops/raindrops_test.go:52:3 testifylint go-require: do not use require in http handlers
plugins/inputs/raindrops/raindrops_test.go:56:3 testifylint go-require: do not use require in http handlers
plugins/inputs/ravendb/ravendb_test.go:30:4 testifylint go-require: do not use require in http handlers
plugins/inputs/ravendb/ravendb_test.go:34:3 testifylint go-require: do not use require in http handlers
plugins/inputs/ravendb/ravendb_test.go:37:3 testifylint go-require: do not use require in http handlers
plugins/inputs/ravendb/ravendb_test.go:230:4 testifylint go-require: do not use require in http handlers
plugins/inputs/ravendb/ravendb_test.go:234:3 testifylint go-require: do not use require in http handlers
plugins/inputs/ravendb/ravendb_test.go:237:3 testifylint go-require: do not use require in http handlers
plugins/inputs/riak/riak_test.go:20:3 testifylint go-require: do not use require in http handlers
plugins/inputs/statsd/statsd_test.go:206:5 testifylint go-require: require must only be used in the goroutine running the test function
plugins/inputs/statsd/statsd_test.go:243:5 testifylint go-require: require must only be used in the goroutine running the test function
plugins/inputs/statsd/statsd_test.go:280:5 testifylint go-require: require must only be used in the goroutine running the test function
plugins/inputs/tacacs/tacacs_test.go:149:3 testifylint go-require: require must only be used in the goroutine running the test function
plugins/inputs/teamspeak/teamspeak_test.go:64:5 testifylint go-require: handleRequest contains assertions that must only be used in the goroutine running the test function
plugins/inputs/tengine/tengine_test.go:32:3 testifylint go-require: do not use require in http handlers
plugins/inputs/tomcat/tomcat_test.go:45:3 testifylint go-require: do not use require in http handlers
plugins/inputs/tomcat/tomcat_test.go:130:3 testifylint go-require: do not use require in http handlers
plugins/inputs/vault/vault_test.go:81:6 testifylint go-require: do not use require in http handlers
plugins/inputs/vault/vault_test.go:83:6 testifylint go-require: do not use require in http handlers
plugins/inputs/x509_cert/x509_cert_test.go:92:5 testifylint go-require: require must only be used in the goroutine running the test function
plugins/inputs/x509_cert/x509_cert_test.go:103:5 testifylint go-require: require must only be used in the goroutine running the test function
plugins/inputs/xtremio/xtremio_test.go:85:6 testifylint go-require: do not use require in http handlers
plugins/inputs/xtremio/xtremio_test.go:88:6 testifylint go-require: do not use require in http handlers
plugins/inputs/xtremio/xtremio_test.go:91:6 testifylint go-require: do not use require in http handlers
plugins/inputs/xtremio/xtremio_test.go:94:6 testifylint go-require: do not use require in http handlers
plugins/inputs/xtremio/xtremio_test.go:97:6 testifylint go-require: do not use require in http handlers
plugins/inputs/xtremio/xtremio_test.go:159:5 testifylint go-require: do not use require in http handlers
plugins/outputs/bigquery/bigquery_test.go:270:4 testifylint go-require: do not use require in http handlers
plugins/outputs/bigquery/bigquery_test.go:274:4 testifylint go-require: do not use require in http handlers
plugins/outputs/bigquery/bigquery_test.go:278:4 testifylint go-require: do not use require in http handlers
plugins/outputs/bigquery/bigquery_test.go:282:4 testifylint go-require: do not use require in http handlers
plugins/outputs/dynatrace/dynatrace_test.go:29:3 testifylint go-require: do not use require in http handlers
plugins/outputs/dynatrace/dynatrace_test.go:54:3 testifylint go-require: do not use require in http handlers
plugins/outputs/dynatrace/dynatrace_test.go:78:3 testifylint go-require: do not use require in http handlers
plugins/outputs/dynatrace/dynatrace_test.go:135:3 testifylint go-require: do not use require in http handlers
plugins/outputs/dynatrace/dynatrace_test.go:150:3 testifylint go-require: do not use require in http handlers
plugins/outputs/dynatrace/dynatrace_test.go:220:3 testifylint go-require: do not use require in http handlers
plugins/outputs/dynatrace/dynatrace_test.go:223:3 testifylint go-require: do not use require in http handlers
plugins/outputs/dynatrace/dynatrace_test.go:224:3 testifylint go-require: do not use require in http handlers
plugins/outputs/dynatrace/dynatrace_test.go:225:3 testifylint go-require: do not use require in http handlers
plugins/outputs/dynatrace/dynatrace_test.go:226:3 testifylint go-require: do not use require in http handlers
plugins/outputs/dynatrace/dynatrace_test.go:227:3 testifylint go-require: do not use require in http handlers
plugins/outputs/dynatrace/dynatrace_test.go:228:3 testifylint go-require: do not use require in http handlers
plugins/outputs/dynatrace/dynatrace_test.go:229:3 testifylint go-require: do not use require in http handlers
plugins/outputs/dynatrace/dynatrace_test.go:232:3 testifylint go-require: do not use require in http handlers
plugins/outputs/dynatrace/dynatrace_test.go:266:3 testifylint go-require: do not use require in http handlers
plugins/outputs/dynatrace/dynatrace_test.go:273:3 testifylint go-require: do not use require in http handlers
plugins/outputs/dynatrace/dynatrace_test.go:307:3 testifylint go-require: do not use require in http handlers
plugins/outputs/dynatrace/dynatrace_test.go:311:3 testifylint go-require: do not use require in http handlers
plugins/outputs/dynatrace/dynatrace_test.go:312:3 testifylint go-require: do not use require in http handlers
plugins/outputs/dynatrace/dynatrace_test.go:313:3 testifylint go-require: do not use require in http handlers
plugins/outputs/dynatrace/dynatrace_test.go:314:3 testifylint go-require: do not use require in http handlers
plugins/outputs/dynatrace/dynatrace_test.go:315:3 testifylint go-require: do not use require in http handlers
plugins/outputs/dynatrace/dynatrace_test.go:316:3 testifylint go-require: do not use require in http handlers
plugins/outputs/dynatrace/dynatrace_test.go:317:3 testifylint go-require: do not use require in http handlers
plugins/outputs/dynatrace/dynatrace_test.go:320:3 testifylint go-require: do not use require in http handlers
plugins/outputs/dynatrace/dynatrace_test.go:354:3 testifylint go-require: do not use require in http handlers
plugins/outputs/dynatrace/dynatrace_test.go:357:3 testifylint go-require: do not use require in http handlers
plugins/outputs/dynatrace/dynatrace_test.go:358:3 testifylint go-require: do not use require in http handlers
plugins/outputs/dynatrace/dynatrace_test.go:359:3 testifylint go-require: do not use require in http handlers
plugins/outputs/dynatrace/dynatrace_test.go:361:3 testifylint go-require: do not use require in http handlers
plugins/outputs/dynatrace/dynatrace_test.go:395:3 testifylint go-require: do not use require in http handlers
plugins/outputs/dynatrace/dynatrace_test.go:398:3 testifylint go-require: do not use require in http handlers
plugins/outputs/dynatrace/dynatrace_test.go:399:3 testifylint go-require: do not use require in http handlers
plugins/outputs/dynatrace/dynatrace_test.go:400:3 testifylint go-require: do not use require in http handlers
plugins/outputs/dynatrace/dynatrace_test.go:401:3 testifylint go-require: do not use require in http handlers
plugins/outputs/dynatrace/dynatrace_test.go:402:3 testifylint go-require: do not use require in http handlers
plugins/outputs/dynatrace/dynatrace_test.go:404:3 testifylint go-require: do not use require in http handlers
plugins/outputs/dynatrace/dynatrace_test.go:438:3 testifylint go-require: do not use require in http handlers
plugins/outputs/dynatrace/dynatrace_test.go:441:3 testifylint go-require: do not use require in http handlers
plugins/outputs/dynatrace/dynatrace_test.go:442:3 testifylint go-require: do not use require in http handlers
plugins/outputs/dynatrace/dynatrace_test.go:443:3 testifylint go-require: do not use require in http handlers
plugins/outputs/dynatrace/dynatrace_test.go:444:3 testifylint go-require: do not use require in http handlers
plugins/outputs/dynatrace/dynatrace_test.go:445:3 testifylint go-require: do not use require in http handlers
plugins/outputs/dynatrace/dynatrace_test.go:447:3 testifylint go-require: do not use require in http handlers
plugins/outputs/dynatrace/dynatrace_test.go:481:3 testifylint go-require: do not use require in http handlers
plugins/outputs/dynatrace/dynatrace_test.go:484:3 testifylint go-require: do not use require in http handlers
plugins/outputs/dynatrace/dynatrace_test.go:485:3 testifylint go-require: do not use require in http handlers
plugins/outputs/dynatrace/dynatrace_test.go:486:3 testifylint go-require: do not use require in http handlers
plugins/outputs/dynatrace/dynatrace_test.go:487:3 testifylint go-require: do not use require in http handlers
plugins/outputs/dynatrace/dynatrace_test.go:489:3 testifylint go-require: do not use require in http handlers
plugins/outputs/elasticsearch/elasticsearch_test.go:660:4 testifylint go-require: do not use require in http handlers
plugins/outputs/elasticsearch/elasticsearch_test.go:661:4 testifylint go-require: do not use require in http handlers
plugins/outputs/elasticsearch/elasticsearch_test.go:663:4 testifylint go-require: do not use require in http handlers
plugins/outputs/elasticsearch/elasticsearch_test.go:667:4 testifylint go-require: do not use require in http handlers
plugins/outputs/elasticsearch/elasticsearch_test.go:695:4 testifylint go-require: do not use require in http handlers
plugins/outputs/elasticsearch/elasticsearch_test.go:697:4 testifylint go-require: do not use require in http handlers
plugins/outputs/elasticsearch/elasticsearch_test.go:701:4 testifylint go-require: do not use require in http handlers
plugins/outputs/elasticsearch/elasticsearch_test.go:729:4 testifylint go-require: do not use require in http handlers
plugins/outputs/elasticsearch/elasticsearch_test.go:731:4 testifylint go-require: do not use require in http handlers
plugins/outputs/elasticsearch/elasticsearch_test.go:735:4 testifylint go-require: do not use require in http handlers
plugins/outputs/file/file_test.go:268:3 testifylint go-require: require must only be used in the goroutine running the test function
plugins/outputs/graphite/graphite_test.go:86:3 testifylint go-require: require must only be used in the goroutine running the test function
plugins/outputs/graphite/graphite_test.go:87:3 testifylint go-require: require must only be used in the goroutine running the test function
plugins/outputs/graphite/graphite_test.go:88:3 testifylint go-require: require must only be used in the goroutine running the test function
plugins/outputs/graphite/graphite_test.go:170:3 testifylint go-require: require must only be used in the goroutine running the test function
plugins/outputs/graphite/graphite_test.go:171:3 testifylint go-require: require must only be used in the goroutine running the test function
plugins/outputs/graphite/graphite_test.go:172:3 testifylint go-require: require must only be used in the goroutine running the test function
plugins/outputs/graphite/graphite_test.go:703:3 testifylint go-require: require must only be used in the goroutine running the test function
plugins/outputs/graphite/graphite_test.go:704:3 testifylint go-require: require must only be used in the goroutine running the test function
plugins/outputs/graphite/graphite_test.go:705:3 testifylint go-require: require must only be used in the goroutine running the test function
plugins/outputs/graphite/graphite_test.go:718:3 testifylint go-require: require must only be used in the goroutine running the test function
plugins/outputs/graphite/graphite_test.go:720:3 testifylint go-require: require must only be used in the goroutine running the test function
plugins/outputs/graphite/graphite_test.go:721:3 testifylint go-require: require must only be used in the goroutine running the test function
plugins/outputs/graphite/graphite_test.go:722:3 testifylint go-require: require must only be used in the goroutine running the test function
plugins/outputs/graphite/graphite_test.go:735:3 testifylint go-require: require must only be used in the goroutine running the test function
plugins/outputs/graphite/graphite_test.go:736:3 testifylint go-require: require must only be used in the goroutine running the test function
plugins/outputs/graphite/graphite_test.go:737:3 testifylint go-require: require must only be used in the goroutine running the test function
plugins/outputs/graphite/graphite_test.go:750:3 testifylint go-require: require must only be used in the goroutine running the test function
plugins/outputs/graphite/graphite_test.go:752:3 testifylint go-require: require must only be used in the goroutine running the test function
plugins/outputs/graphite/graphite_test.go:753:3 testifylint go-require: require must only be used in the goroutine running the test function
plugins/outputs/graphite/graphite_test.go:754:3 testifylint go-require: require must only be used in the goroutine running the test function
plugins/outputs/graphite/graphite_test.go:767:3 testifylint go-require: require must only be used in the goroutine running the test function
plugins/outputs/graphite/graphite_test.go:768:3 testifylint go-require: require must only be used in the goroutine running the test function
plugins/outputs/graphite/graphite_test.go:769:3 testifylint go-require: require must only be used in the goroutine running the test function
plugins/outputs/graphite/graphite_test.go:782:3 testifylint go-require: require must only be used in the goroutine running the test function
plugins/outputs/graphite/graphite_test.go:784:3 testifylint go-require: require must only be used in the goroutine running the test function
plugins/outputs/graphite/graphite_test.go:785:3 testifylint go-require: require must only be used in the goroutine running the test function
plugins/outputs/graphite/graphite_test.go:786:3 testifylint go-require: require must only be used in the goroutine running the test function
plugins/outputs/graphite/graphite_test.go:799:3 testifylint go-require: require must only be used in the goroutine running the test function
plugins/outputs/graphite/graphite_test.go:800:3 testifylint go-require: require must only be used in the goroutine running the test function
plugins/outputs/graphite/graphite_test.go:801:3 testifylint go-require: require must only be used in the goroutine running the test function
plugins/outputs/graphite/graphite_test.go:814:3 testifylint go-require: require must only be used in the goroutine running the test function
plugins/outputs/graphite/graphite_test.go:816:3 testifylint go-require: require must only be used in the goroutine running the test function
plugins/outputs/graphite/graphite_test.go:817:3 testifylint go-require: require must only be used in the goroutine running the test function
plugins/outputs/graphite/graphite_test.go:818:3 testifylint go-require: require must only be used in the goroutine running the test function
plugins/outputs/graylog/graylog_test_linux.go:194:3 testifylint go-require: require must only be used in the goroutine running the test function
plugins/outputs/graylog/graylog_test_linux.go:195:3 testifylint go-require: require must only be used in the goroutine running the test function
plugins/outputs/graylog/graylog_test_linux.go:196:3 testifylint go-require: require must only be used in the goroutine running the test function
plugins/outputs/graylog/graylog_test_linux.go:197:3 testifylint go-require: require must only be used in the goroutine running the test function
plugins/outputs/groundwork/groundwork_test.go:33:3 testifylint go-require: do not use require in http handlers
plugins/outputs/groundwork/groundwork_test.go:38:3 testifylint go-require: do not use require in http handlers
plugins/outputs/groundwork/groundwork_test.go:41:3 testifylint go-require: do not use require in http handlers
plugins/outputs/groundwork/groundwork_test.go:42:3 testifylint go-require: do not use require in http handlers
plugins/outputs/groundwork/groundwork_test.go:43:3 testifylint go-require: do not use require in http handlers
plugins/outputs/groundwork/groundwork_test.go:44:3 testifylint go-require: do not use require in http handlers
plugins/outputs/groundwork/groundwork_test.go:45:3 testifylint go-require: do not use require in http handlers
plugins/outputs/groundwork/groundwork_test.go:46:3 testifylint go-require: do not use require in http handlers
plugins/outputs/groundwork/groundwork_test.go:47:3 testifylint go-require: do not use require in http handlers
plugins/outputs/groundwork/groundwork_test.go:50:3 testifylint go-require: do not use require in http handlers
plugins/outputs/groundwork/groundwork_test.go:85:3 testifylint go-require: do not use require in http handlers
plugins/outputs/groundwork/groundwork_test.go:90:3 testifylint go-require: do not use require in http handlers
plugins/outputs/groundwork/groundwork_test.go:93:3 testifylint go-require: do not use require in http handlers
plugins/outputs/groundwork/groundwork_test.go:94:3 testifylint go-require: do not use require in http handlers
plugins/outputs/groundwork/groundwork_test.go:95:3 testifylint go-require: do not use require in http handlers
plugins/outputs/groundwork/groundwork_test.go:96:3 testifylint go-require: do not use require in http handlers
plugins/outputs/groundwork/groundwork_test.go:97:3 testifylint go-require: do not use require in http handlers
plugins/outputs/groundwork/groundwork_test.go:100:3 testifylint go-require: do not use require in http handlers
plugins/outputs/groundwork/groundwork_test.go:146:3 testifylint go-require: do not use require in http handlers
plugins/outputs/groundwork/groundwork_test.go:151:3 testifylint go-require: do not use require in http handlers
plugins/outputs/groundwork/groundwork_test.go:154:3 testifylint go-require: do not use require in http handlers
plugins/outputs/groundwork/groundwork_test.go:155:3 testifylint go-require: do not use require in http handlers
plugins/outputs/groundwork/groundwork_test.go:156:3 testifylint go-require: do not use require in http handlers
plugins/outputs/groundwork/groundwork_test.go:157:3 testifylint go-require: do not use require in http handlers
plugins/outputs/groundwork/groundwork_test.go:158:3 testifylint go-require: do not use require in http handlers
plugins/outputs/groundwork/groundwork_test.go:159:3 testifylint go-require: do not use require in http handlers
plugins/outputs/groundwork/groundwork_test.go:160:3 testifylint go-require: do not use require in http handlers
plugins/outputs/groundwork/groundwork_test.go:161:3 testifylint go-require: do not use require in http handlers
plugins/outputs/groundwork/groundwork_test.go:162:3 testifylint go-require: do not use require in http handlers
plugins/outputs/groundwork/groundwork_test.go:163:3 testifylint go-require: do not use require in http handlers
plugins/outputs/groundwork/groundwork_test.go:164:3 testifylint go-require: do not use require in http handlers
plugins/outputs/groundwork/groundwork_test.go:165:3 testifylint go-require: do not use require in http handlers
plugins/outputs/groundwork/groundwork_test.go:166:3 testifylint go-require: do not use require in http handlers
plugins/outputs/groundwork/groundwork_test.go:169:3 testifylint go-require: do not use require in http handlers
plugins/outputs/http/http_test.go:111:5 testifylint go-require: do not use require in http handlers
plugins/outputs/http/http_test.go:319:5 testifylint go-require: do not use require in http handlers
plugins/outputs/http/http_test.go:368:5 testifylint go-require: do not use require in http handlers
plugins/outputs/http/http_test.go:374:6 testifylint go-require: do not use require in http handlers
plugins/outputs/http/http_test.go:378:5 testifylint go-require: do not use require in http handlers
plugins/outputs/http/http_test.go:379:5 testifylint go-require: do not use require in http handlers
plugins/outputs/http/http_test.go:435:5 testifylint go-require: do not use require in http handlers
plugins/outputs/http/http_test.go:436:5 testifylint go-require: do not use require in http handlers
plugins/outputs/http/http_test.go:663:4 testifylint go-require: do not use require in http handlers
plugins/outputs/influxdb/http_test.go:584:5 testifylint go-require: do not use require in http handlers
plugins/outputs/influxdb/http_test.go:587:5 testifylint go-require: do not use require in http handlers
plugins/outputs/influxdb/http_test.go:589:5 testifylint go-require: do not use require in http handlers
plugins/outputs/influxdb/http_test.go:591:5 testifylint go-require: do not use require in http handlers
plugins/outputs/influxdb/http_test.go:711:5 testifylint go-require: do not use require in http handlers
plugins/outputs/influxdb/http_test.go:712:5 testifylint go-require: do not use require in http handlers
plugins/outputs/influxdb/http_test.go:715:5 testifylint go-require: do not use require in http handlers
plugins/outputs/influxdb/http_test.go:716:5 testifylint go-require: do not use require in http handlers
plugins/outputs/influxdb/http_test.go:1028:6 testifylint go-require: do not use require in http handlers
plugins/outputs/influxdb/http_test.go:1101:6 testifylint go-require: do not use require in http handlers
plugins/outputs/influxdb/http_test.go:1111:6 testifylint go-require: do not use require in http handlers
plugins/outputs/influxdb_v2/http_test.go:73:5 testifylint go-require: do not use require in http handlers
plugins/outputs/influxdb_v2/http_test.go:74:5 testifylint go-require: do not use require in http handlers
plugins/outputs/influxdb_v2/http_test.go:77:5 testifylint go-require: do not use require in http handlers
plugins/outputs/influxdb_v2/http_test.go:78:5 testifylint go-require: do not use require in http handlers
plugins/outputs/influxdb_v2/http_test.go:133:5 testifylint go-require: do not use require in http handlers
plugins/outputs/influxdb_v2/http_test.go:134:5 testifylint go-require: do not use require in http handlers
plugins/outputs/influxdb_v2/http_test.go:137:5 testifylint go-require: do not use require in http handlers
plugins/outputs/influxdb_v2/http_test.go:138:5 testifylint go-require: do not use require in http handlers
plugins/outputs/influxdb_v2/http_test.go:191:5 testifylint go-require: do not use require in http handlers
plugins/outputs/influxdb_v2/http_test.go:194:5 testifylint go-require: do not use require in http handlers
plugins/outputs/instrumental/instrumental_test.go:92:3 testifylint go-require: require must only be used in the goroutine running the test function
plugins/outputs/instrumental/instrumental_test.go:97:3 testifylint go-require: require must only be used in the goroutine running the test function
plugins/outputs/instrumental/instrumental_test.go:99:3 testifylint go-require: require must only be used in the goroutine running the test function
plugins/outputs/instrumental/instrumental_test.go:101:3 testifylint go-require: require must only be used in the goroutine running the test function
plugins/outputs/instrumental/instrumental_test.go:104:3 testifylint go-require: require must only be used in the goroutine running the test function
plugins/outputs/instrumental/instrumental_test.go:106:3 testifylint go-require: require must only be used in the goroutine running the test function
plugins/outputs/instrumental/instrumental_test.go:110:3 testifylint go-require: require must only be used in the goroutine running the test function
plugins/outputs/instrumental/instrumental_test.go:115:3 testifylint go-require: require must only be used in the goroutine running the test function
plugins/outputs/instrumental/instrumental_test.go:117:3 testifylint go-require: require must only be used in the goroutine running the test function
plugins/outputs/instrumental/instrumental_test.go:119:3 testifylint go-require: require must only be used in the goroutine running the test function
plugins/outputs/instrumental/instrumental_test.go:122:3 testifylint go-require: require must only be used in the goroutine running the test function
plugins/outputs/instrumental/instrumental_test.go:125:3 testifylint go-require: require must only be used in the goroutine running the test function
plugins/outputs/instrumental/instrumental_test.go:128:3 testifylint go-require: require must only be used in the goroutine running the test function
plugins/outputs/instrumental/instrumental_test.go:131:3 testifylint go-require: require must only be used in the goroutine running the test function
plugins/outputs/instrumental/instrumental_test.go:134:3 testifylint go-require: require must only be used in the goroutine running the test function
...
and more, total: 557 findings
Additional configuration
For this checker, additional configuration can be provided:
Description
This issue starts a discussion about enabling:
This checker is a radically improved analogue of
go vet
's testinggoroutine check.The point of the check is that, according to the documentation, functions leading to
t.FailNow
(essentially toruntime.GoExit
) must only be used in the goroutine that runs the test. Otherwise, they will not work as declared, namely, finish the test function.You can continue to use
require
as the current goroutine finisher, but this could leadTypically, any assertions inside goroutines are a marker of poor test architecture. Try to execute them in the main goroutine and distribute the data necessary for this into it (example).
Also a bad solution would be to simply replace all
require
in goroutines withassert
(like here) – this will only mask the problem.In addition, the checker warns about
require
in HTTP handlers (functions and methods whose signature matches http.HandlerFunc), because handlers run in a separate service goroutine that services the HTTP connection. Terminating these goroutines can lead to undefined behaviour and difficulty debugging tests. You can turn off the check using the--go-require.ignore-http-handlers
flag.P.S. Look at testify's issue, related to assertions in the goroutines.
Example
Expected output
Decision about enabling or not enabling this checker.
Findings
For this checker, the following findings were found in the current codebase:
Additional configuration
For this checker, additional configuration can be provided: