From e49415f3b9f9cab3698bfa72da683b1c8f25e6dc Mon Sep 17 00:00:00 2001 From: Oliver Tan Date: Wed, 19 Jan 2022 15:53:53 +1100 Subject: [PATCH] *: replace `datadrive.Walk(t, "testdata"` with `...testutils.TestDataPath(t)` Generated with: ``` ag '"testdata"' -G '_test\.go$' -l | xargs sed -i '' -e 's/datadriven.Walk(t, "testdata"/datadriven.Walk(t, testutils.TestDataPath(t)/g' -- crlfmt and bazel generate ``` Release note: None --- pkg/ccl/multiregionccl/datadriven_test.go | 2 +- pkg/ccl/multitenantccl/tenantcostclient/tenant_side_test.go | 2 +- pkg/ccl/multitenantccl/tenantcostserver/server_test.go | 2 +- .../tenantcostserver/tenanttokenbucket/BUILD.bazel | 1 + .../tenanttokenbucket/tenant_token_bucket_test.go | 3 ++- pkg/cmd/testfilter/BUILD.bazel | 1 + pkg/cmd/testfilter/main_test.go | 3 ++- pkg/kv/kvserver/loqrecovery/BUILD.bazel | 1 + pkg/kv/kvserver/loqrecovery/recovery_test.go | 3 ++- pkg/kv/kvserver/tenantrate/limiter_test.go | 2 +- pkg/sql/colexec/execgen/BUILD.bazel | 1 + pkg/sql/colexec/execgen/datadriven_test.go | 3 ++- pkg/sql/opt/idxconstraint/index_constraints_test.go | 2 +- pkg/sql/opt/indexrec/BUILD.bazel | 1 + pkg/sql/opt/indexrec/indexrec_test.go | 3 ++- pkg/sql/opt/optbuilder/builder_test.go | 2 +- pkg/sql/opt/optgen/cmd/optfmt/BUILD.bazel | 5 ++++- pkg/sql/opt/optgen/cmd/optfmt/main_test.go | 3 ++- pkg/sql/opt/optgen/exprgen/BUILD.bazel | 1 + pkg/sql/opt/optgen/exprgen/expr_gen_test.go | 3 ++- pkg/sql/opt/testutils/opttester/BUILD.bazel | 1 + pkg/sql/opt/testutils/opttester/opt_tester_test.go | 3 ++- pkg/sql/opt/testutils/testcat/BUILD.bazel | 1 + pkg/sql/opt/testutils/testcat/test_catalog_test.go | 3 ++- pkg/sql/parser/parse_test.go | 2 +- pkg/sql/sqlstats/persistedsqlstats/datadriven_test.go | 3 ++- 26 files changed, 39 insertions(+), 18 deletions(-) diff --git a/pkg/ccl/multiregionccl/datadriven_test.go b/pkg/ccl/multiregionccl/datadriven_test.go index a5a18df43f97..d98649b5d1ca 100644 --- a/pkg/ccl/multiregionccl/datadriven_test.go +++ b/pkg/ccl/multiregionccl/datadriven_test.go @@ -113,7 +113,7 @@ func TestMultiRegionDataDriven(t *testing.T) { skip.UnderRace(t, "flaky test") ctx := context.Background() - datadriven.Walk(t, "testdata/", func(t *testing.T, path string) { + datadriven.Walk(t, testutils.TestDataPath(t), func(t *testing.T, path string) { ds := datadrivenTestState{} defer ds.cleanup(ctx) var mu syncutil.Mutex diff --git a/pkg/ccl/multitenantccl/tenantcostclient/tenant_side_test.go b/pkg/ccl/multitenantccl/tenantcostclient/tenant_side_test.go index 485dd83d0ec0..0bee3a737309 100644 --- a/pkg/ccl/multitenantccl/tenantcostclient/tenant_side_test.go +++ b/pkg/ccl/multitenantccl/tenantcostclient/tenant_side_test.go @@ -47,7 +47,7 @@ import ( func TestDataDriven(t *testing.T) { defer leaktest.AfterTest(t)() - datadriven.Walk(t, "testdata", func(t *testing.T, path string) { + datadriven.Walk(t, testutils.TestDataPath(t), func(t *testing.T, path string) { defer leaktest.AfterTest(t)() var ts testState diff --git a/pkg/ccl/multitenantccl/tenantcostserver/server_test.go b/pkg/ccl/multitenantccl/tenantcostserver/server_test.go index 91dc37b4877f..cafa49811b20 100644 --- a/pkg/ccl/multitenantccl/tenantcostserver/server_test.go +++ b/pkg/ccl/multitenantccl/tenantcostserver/server_test.go @@ -42,7 +42,7 @@ func TestDataDriven(t *testing.T) { defer leaktest.AfterTest(t)() defer log.Scope(t).Close(t) - datadriven.Walk(t, "testdata", func(t *testing.T, path string) { + datadriven.Walk(t, testutils.TestDataPath(t), func(t *testing.T, path string) { defer leaktest.AfterTest(t)() var ts testState diff --git a/pkg/ccl/multitenantccl/tenantcostserver/tenanttokenbucket/BUILD.bazel b/pkg/ccl/multitenantccl/tenantcostserver/tenanttokenbucket/BUILD.bazel index 0a6942ae2102..13c56fb4617e 100644 --- a/pkg/ccl/multitenantccl/tenantcostserver/tenanttokenbucket/BUILD.bazel +++ b/pkg/ccl/multitenantccl/tenantcostserver/tenanttokenbucket/BUILD.bazel @@ -15,6 +15,7 @@ go_test( embed = [":tenanttokenbucket"], deps = [ "//pkg/roachpb:with-mocks", + "//pkg/testutils", "//pkg/util/leaktest", "@com_github_cockroachdb_datadriven//:datadriven", "@in_gopkg_yaml_v2//:yaml_v2", diff --git a/pkg/ccl/multitenantccl/tenantcostserver/tenanttokenbucket/tenant_token_bucket_test.go b/pkg/ccl/multitenantccl/tenantcostserver/tenanttokenbucket/tenant_token_bucket_test.go index 778d919bf55b..d0a608b2940e 100644 --- a/pkg/ccl/multitenantccl/tenantcostserver/tenanttokenbucket/tenant_token_bucket_test.go +++ b/pkg/ccl/multitenantccl/tenantcostserver/tenanttokenbucket/tenant_token_bucket_test.go @@ -15,6 +15,7 @@ import ( "time" "github.com/cockroachdb/cockroach/pkg/roachpb" + "github.com/cockroachdb/cockroach/pkg/testutils" "github.com/cockroachdb/cockroach/pkg/util/leaktest" "github.com/cockroachdb/datadriven" "gopkg.in/yaml.v2" @@ -24,7 +25,7 @@ import ( func TestDataDriven(t *testing.T) { defer leaktest.AfterTest(t)() - datadriven.Walk(t, "testdata", func(t *testing.T, path string) { + datadriven.Walk(t, testutils.TestDataPath(t), func(t *testing.T, path string) { defer leaktest.AfterTest(t)() var ts testState diff --git a/pkg/cmd/testfilter/BUILD.bazel b/pkg/cmd/testfilter/BUILD.bazel index 5a84182bf033..3b4a6467e9fc 100644 --- a/pkg/cmd/testfilter/BUILD.bazel +++ b/pkg/cmd/testfilter/BUILD.bazel @@ -21,6 +21,7 @@ go_test( data = glob(["testdata/**"]), embed = [":testfilter_lib"], deps = [ + "//pkg/testutils", "//pkg/util/leaktest", "@com_github_cockroachdb_datadriven//:datadriven", ], diff --git a/pkg/cmd/testfilter/main_test.go b/pkg/cmd/testfilter/main_test.go index a70c2c7047db..853c8fe8c3a9 100644 --- a/pkg/cmd/testfilter/main_test.go +++ b/pkg/cmd/testfilter/main_test.go @@ -14,6 +14,7 @@ import ( "strings" "testing" + "github.com/cockroachdb/cockroach/pkg/testutils" "github.com/cockroachdb/cockroach/pkg/util/leaktest" "github.com/cockroachdb/datadriven" ) @@ -21,7 +22,7 @@ import ( func TestFilter(t *testing.T) { defer leaktest.AfterTest(t)() - datadriven.Walk(t, "testdata", func(t *testing.T, path string) { + datadriven.Walk(t, testutils.TestDataPath(t), func(t *testing.T, path string) { datadriven.RunTest(t, path, func(t *testing.T, td *datadriven.TestData) string { in := strings.NewReader(td.Input) var out strings.Builder diff --git a/pkg/kv/kvserver/loqrecovery/BUILD.bazel b/pkg/kv/kvserver/loqrecovery/BUILD.bazel index edb3ceff4329..70777b51d74d 100644 --- a/pkg/kv/kvserver/loqrecovery/BUILD.bazel +++ b/pkg/kv/kvserver/loqrecovery/BUILD.bazel @@ -43,6 +43,7 @@ go_test( "//pkg/roachpb:with-mocks", "//pkg/storage", "//pkg/storage/enginepb", + "//pkg/testutils", "//pkg/util/hlc", "//pkg/util/keysutil", "//pkg/util/leaktest", diff --git a/pkg/kv/kvserver/loqrecovery/recovery_test.go b/pkg/kv/kvserver/loqrecovery/recovery_test.go index befd222f29cd..49fb4337f8b1 100644 --- a/pkg/kv/kvserver/loqrecovery/recovery_test.go +++ b/pkg/kv/kvserver/loqrecovery/recovery_test.go @@ -15,6 +15,7 @@ import ( "github.com/cockroachdb/cockroach/pkg/kv/kvserver/loqrecovery/loqrecoverypb" "github.com/cockroachdb/cockroach/pkg/roachpb" + "github.com/cockroachdb/cockroach/pkg/testutils" "github.com/cockroachdb/cockroach/pkg/util/leaktest" "github.com/cockroachdb/datadriven" "github.com/stretchr/testify/require" @@ -23,7 +24,7 @@ import ( func TestQuorumRecovery(t *testing.T) { defer leaktest.AfterTest(t)() - datadriven.Walk(t, "testdata", func(t *testing.T, path string) { + datadriven.Walk(t, testutils.TestDataPath(t), func(t *testing.T, path string) { env := quorumRecoveryEnv{} defer env.cleanupStores() datadriven.RunTest(t, path, func(t *testing.T, d *datadriven.TestData) string { diff --git a/pkg/kv/kvserver/tenantrate/limiter_test.go b/pkg/kv/kvserver/tenantrate/limiter_test.go index 8bdaeb3499a3..ab59841d2397 100644 --- a/pkg/kv/kvserver/tenantrate/limiter_test.go +++ b/pkg/kv/kvserver/tenantrate/limiter_test.go @@ -65,7 +65,7 @@ func TestCloser(t *testing.T) { func TestDataDriven(t *testing.T) { defer leaktest.AfterTest(t)() - datadriven.Walk(t, "testdata", func(t *testing.T, path string) { + datadriven.Walk(t, testutils.TestDataPath(t), func(t *testing.T, path string) { defer leaktest.AfterTest(t)() datadriven.RunTest(t, path, new(testState).run) }) diff --git a/pkg/sql/colexec/execgen/BUILD.bazel b/pkg/sql/colexec/execgen/BUILD.bazel index 987042184fc9..e15a4a9e4133 100644 --- a/pkg/sql/colexec/execgen/BUILD.bazel +++ b/pkg/sql/colexec/execgen/BUILD.bazel @@ -35,6 +35,7 @@ go_test( data = glob(["testdata/**"]), embed = [":execgen"], deps = [ + "//pkg/testutils", "@com_github_cockroachdb_datadriven//:datadriven", "@com_github_dave_dst//:dst", "@com_github_dave_dst//decorator", diff --git a/pkg/sql/colexec/execgen/datadriven_test.go b/pkg/sql/colexec/execgen/datadriven_test.go index 3a3d12047caf..af3829b0bb3a 100644 --- a/pkg/sql/colexec/execgen/datadriven_test.go +++ b/pkg/sql/colexec/execgen/datadriven_test.go @@ -14,13 +14,14 @@ import ( "strings" "testing" + "github.com/cockroachdb/cockroach/pkg/testutils" "github.com/cockroachdb/datadriven" "github.com/dave/dst/decorator" ) // Walk walks path for datadriven files and calls RunTest on them. func TestExecgen(t *testing.T) { - datadriven.Walk(t, "testdata", func(t *testing.T, path string) { + datadriven.Walk(t, testutils.TestDataPath(t), func(t *testing.T, path string) { datadriven.RunTest(t, path, func(t *testing.T, d *datadriven.TestData) string { f, err := decorator.Parse(d.Input) if err != nil { diff --git a/pkg/sql/opt/idxconstraint/index_constraints_test.go b/pkg/sql/opt/idxconstraint/index_constraints_test.go index 7a6a5eac96d4..8950398b9eb2 100644 --- a/pkg/sql/opt/idxconstraint/index_constraints_test.go +++ b/pkg/sql/opt/idxconstraint/index_constraints_test.go @@ -57,7 +57,7 @@ import ( func TestIndexConstraints(t *testing.T) { defer leaktest.AfterTest(t)() - datadriven.Walk(t, "testdata", func(t *testing.T, path string) { + datadriven.Walk(t, testutils.TestDataPath(t), func(t *testing.T, path string) { semaCtx := tree.MakeSemaContext() evalCtx := tree.MakeTestingEvalContext(cluster.MakeTestingClusterSettings()) diff --git a/pkg/sql/opt/indexrec/BUILD.bazel b/pkg/sql/opt/indexrec/BUILD.bazel index 611bdcf51416..055e8d5bf3ae 100644 --- a/pkg/sql/opt/indexrec/BUILD.bazel +++ b/pkg/sql/opt/indexrec/BUILD.bazel @@ -41,6 +41,7 @@ go_test( "//pkg/sql/opt/testutils/opttester", "//pkg/sql/opt/testutils/testcat", "//pkg/sql/types", + "//pkg/testutils", "//pkg/util/leaktest", "//pkg/util/log", "@com_github_cockroachdb_datadriven//:datadriven", diff --git a/pkg/sql/opt/indexrec/indexrec_test.go b/pkg/sql/opt/indexrec/indexrec_test.go index d06f62175825..8e2a1a2d1c5f 100644 --- a/pkg/sql/opt/indexrec/indexrec_test.go +++ b/pkg/sql/opt/indexrec/indexrec_test.go @@ -16,6 +16,7 @@ import ( "github.com/cockroachdb/cockroach/pkg/sql/opt/memo" "github.com/cockroachdb/cockroach/pkg/sql/opt/testutils/opttester" "github.com/cockroachdb/cockroach/pkg/sql/opt/testutils/testcat" + "github.com/cockroachdb/cockroach/pkg/testutils" "github.com/cockroachdb/cockroach/pkg/util/leaktest" "github.com/cockroachdb/cockroach/pkg/util/log" "github.com/cockroachdb/datadriven" @@ -29,7 +30,7 @@ func TestIndexRec(t *testing.T) { const fmtFlags = memo.ExprFmtHideStats | memo.ExprFmtHideRuleProps | memo.ExprFmtHideQualifications | memo.ExprFmtHideScalars | memo.ExprFmtHideTypes - datadriven.Walk(t, "testdata", func(t *testing.T, path string) { + datadriven.Walk(t, testutils.TestDataPath(t), func(t *testing.T, path string) { catalog := testcat.New() datadriven.RunTest(t, path, func(t *testing.T, d *datadriven.TestData) string { tester := opttester.New(catalog, d.Input) diff --git a/pkg/sql/opt/optbuilder/builder_test.go b/pkg/sql/opt/optbuilder/builder_test.go index 2f675ab5ad77..13d127c810bf 100644 --- a/pkg/sql/opt/optbuilder/builder_test.go +++ b/pkg/sql/opt/optbuilder/builder_test.go @@ -53,7 +53,7 @@ import ( func TestBuilder(t *testing.T) { defer leaktest.AfterTest(t)() - datadriven.Walk(t, "testdata", func(t *testing.T, path string) { + datadriven.Walk(t, testutils.TestDataPath(t), func(t *testing.T, path string) { catalog := testcat.New() datadriven.RunTest(t, path, func(t *testing.T, d *datadriven.TestData) string { diff --git a/pkg/sql/opt/optgen/cmd/optfmt/BUILD.bazel b/pkg/sql/opt/optgen/cmd/optfmt/BUILD.bazel index cf2876b311c9..9d75dcfe0a37 100644 --- a/pkg/sql/opt/optgen/cmd/optfmt/BUILD.bazel +++ b/pkg/sql/opt/optgen/cmd/optfmt/BUILD.bazel @@ -24,5 +24,8 @@ go_test( srcs = ["main_test.go"], data = glob(["testdata/**"]), embed = [":optfmt_lib"], - deps = ["@com_github_cockroachdb_datadriven//:datadriven"], + deps = [ + "//pkg/testutils", + "@com_github_cockroachdb_datadriven//:datadriven", + ], ) diff --git a/pkg/sql/opt/optgen/cmd/optfmt/main_test.go b/pkg/sql/opt/optgen/cmd/optfmt/main_test.go index 2298776945ec..54d20b74286b 100644 --- a/pkg/sql/opt/optgen/cmd/optfmt/main_test.go +++ b/pkg/sql/opt/optgen/cmd/optfmt/main_test.go @@ -15,11 +15,12 @@ import ( "strings" "testing" + "github.com/cockroachdb/cockroach/pkg/testutils" "github.com/cockroachdb/datadriven" ) func TestPretty(t *testing.T) { - datadriven.Walk(t, "testdata", func(t *testing.T, path string) { + datadriven.Walk(t, testutils.TestDataPath(t), func(t *testing.T, path string) { datadriven.RunTest(t, path, prettyTest) }) } diff --git a/pkg/sql/opt/optgen/exprgen/BUILD.bazel b/pkg/sql/opt/optgen/exprgen/BUILD.bazel index bab28d940fce..2030ff0ddf8a 100644 --- a/pkg/sql/opt/optgen/exprgen/BUILD.bazel +++ b/pkg/sql/opt/optgen/exprgen/BUILD.bazel @@ -36,6 +36,7 @@ go_test( deps = [ "//pkg/sql/opt/testutils/opttester", "//pkg/sql/opt/testutils/testcat", + "//pkg/testutils", "@com_github_cockroachdb_datadriven//:datadriven", ], ) diff --git a/pkg/sql/opt/optgen/exprgen/expr_gen_test.go b/pkg/sql/opt/optgen/exprgen/expr_gen_test.go index 1b195f0bdf17..41bd783a0dbf 100644 --- a/pkg/sql/opt/optgen/exprgen/expr_gen_test.go +++ b/pkg/sql/opt/optgen/exprgen/expr_gen_test.go @@ -15,11 +15,12 @@ import ( "github.com/cockroachdb/cockroach/pkg/sql/opt/testutils/opttester" "github.com/cockroachdb/cockroach/pkg/sql/opt/testutils/testcat" + "github.com/cockroachdb/cockroach/pkg/testutils" "github.com/cockroachdb/datadriven" ) func TestExprGen(t *testing.T) { - datadriven.Walk(t, "testdata", func(t *testing.T, path string) { + datadriven.Walk(t, testutils.TestDataPath(t), func(t *testing.T, path string) { catalog := testcat.New() datadriven.RunTest(t, path, func(t *testing.T, d *datadriven.TestData) string { tester := opttester.New(catalog, d.Input) diff --git a/pkg/sql/opt/testutils/opttester/BUILD.bazel b/pkg/sql/opt/testutils/opttester/BUILD.bazel index f8a744bdd4cb..78523082e25c 100644 --- a/pkg/sql/opt/testutils/opttester/BUILD.bazel +++ b/pkg/sql/opt/testutils/opttester/BUILD.bazel @@ -63,6 +63,7 @@ go_test( ":opttester", "//pkg/sql/opt/memo", "//pkg/sql/opt/testutils/testcat", + "//pkg/testutils", "@com_github_cockroachdb_datadriven//:datadriven", ], ) diff --git a/pkg/sql/opt/testutils/opttester/opt_tester_test.go b/pkg/sql/opt/testutils/opttester/opt_tester_test.go index 857c4a84e801..f313a5fc05c6 100644 --- a/pkg/sql/opt/testutils/opttester/opt_tester_test.go +++ b/pkg/sql/opt/testutils/opttester/opt_tester_test.go @@ -17,6 +17,7 @@ import ( "github.com/cockroachdb/cockroach/pkg/sql/opt/memo" "github.com/cockroachdb/cockroach/pkg/sql/opt/testutils/opttester" "github.com/cockroachdb/cockroach/pkg/sql/opt/testutils/testcat" + "github.com/cockroachdb/cockroach/pkg/testutils" "github.com/cockroachdb/datadriven" ) @@ -24,7 +25,7 @@ func TestOptTester(t *testing.T) { const fmtFlags = memo.ExprFmtHideStats | memo.ExprFmtHideCost | memo.ExprFmtHideRuleProps | memo.ExprFmtHideQualifications - datadriven.Walk(t, "testdata", func(t *testing.T, path string) { + datadriven.Walk(t, testutils.TestDataPath(t), func(t *testing.T, path string) { if strings.HasSuffix(path, ".json") { // Skip any .json files; used for inject-stats return diff --git a/pkg/sql/opt/testutils/testcat/BUILD.bazel b/pkg/sql/opt/testutils/testcat/BUILD.bazel index a2635238fc40..9dd3e027deb0 100644 --- a/pkg/sql/opt/testutils/testcat/BUILD.bazel +++ b/pkg/sql/opt/testutils/testcat/BUILD.bazel @@ -58,6 +58,7 @@ go_test( deps = [ ":testcat", "//pkg/sql/opt/testutils/opttester", + "//pkg/testutils", "//pkg/util/leaktest", "@com_github_cockroachdb_datadriven//:datadriven", ], diff --git a/pkg/sql/opt/testutils/testcat/test_catalog_test.go b/pkg/sql/opt/testutils/testcat/test_catalog_test.go index a56abace415e..ae447ea18e7f 100644 --- a/pkg/sql/opt/testutils/testcat/test_catalog_test.go +++ b/pkg/sql/opt/testutils/testcat/test_catalog_test.go @@ -15,6 +15,7 @@ import ( "github.com/cockroachdb/cockroach/pkg/sql/opt/testutils/opttester" "github.com/cockroachdb/cockroach/pkg/sql/opt/testutils/testcat" + "github.com/cockroachdb/cockroach/pkg/testutils" "github.com/cockroachdb/cockroach/pkg/util/leaktest" "github.com/cockroachdb/datadriven" ) @@ -22,7 +23,7 @@ import ( func TestCatalog(t *testing.T) { defer leaktest.AfterTest(t)() - datadriven.Walk(t, "testdata", func(t *testing.T, path string) { + datadriven.Walk(t, testutils.TestDataPath(t), func(t *testing.T, path string) { catalog := testcat.New() datadriven.RunTest(t, path, func(t *testing.T, d *datadriven.TestData) string { diff --git a/pkg/sql/parser/parse_test.go b/pkg/sql/parser/parse_test.go index 5f8955425682..b57dc83512ba 100644 --- a/pkg/sql/parser/parse_test.go +++ b/pkg/sql/parser/parse_test.go @@ -33,7 +33,7 @@ import ( // TestParseDataDriven verifies that we can parse the supplied SQL and regenerate the SQL // string from the syntax tree. func TestParseDatadriven(t *testing.T) { - datadriven.Walk(t, "testdata", func(t *testing.T, path string) { + datadriven.Walk(t, testutils.TestDataPath(t), func(t *testing.T, path string) { datadriven.RunTest(t, path, func(t *testing.T, d *datadriven.TestData) string { switch d.Cmd { case "parse": diff --git a/pkg/sql/sqlstats/persistedsqlstats/datadriven_test.go b/pkg/sql/sqlstats/persistedsqlstats/datadriven_test.go index fd956117233d..ed8d83fa8007 100644 --- a/pkg/sql/sqlstats/persistedsqlstats/datadriven_test.go +++ b/pkg/sql/sqlstats/persistedsqlstats/datadriven_test.go @@ -25,6 +25,7 @@ import ( "github.com/cockroachdb/cockroach/pkg/sql/sqlstats" "github.com/cockroachdb/cockroach/pkg/sql/sqlstats/persistedsqlstats" "github.com/cockroachdb/cockroach/pkg/sql/tests" + "github.com/cockroachdb/cockroach/pkg/testutils" "github.com/cockroachdb/cockroach/pkg/testutils/serverutils" "github.com/cockroachdb/cockroach/pkg/testutils/sqlutils" "github.com/cockroachdb/cockroach/pkg/util/leaktest" @@ -152,7 +153,7 @@ func TestSQLStatsDataDriven(t *testing.T) { return "" } - datadriven.Walk(t, "testdata/", func(t *testing.T, path string) { + datadriven.Walk(t, testutils.TestDataPath(t), func(t *testing.T, path string) { datadriven.RunTest(t, path, func(t *testing.T, d *datadriven.TestData) string { if d.Cmd == "register-callback" { mustHaveArgsOrFatal(