diff --git a/BUILD.bazel b/BUILD.bazel index 13cc4575137f..d5bd8769371e 100644 --- a/BUILD.bazel +++ b/BUILD.bazel @@ -23,7 +23,7 @@ load("@buildifier_prebuilt//:rules.bzl", "buildifier") # gazelle:js_npm_package_target_name {dirname}_pkg # Enable: Aspect javascript, standard go -# gazelle:lang js,go,proto +# gazelle:lang js,go,proto,gomockgen # Enable race detection for all go_test rules. # gazelle:map_kind go_test go_test //dev:go_defs.bzl @@ -212,6 +212,7 @@ gazelle_binary( # Gazelle-buf does not include the Go plugin by default, so we have to add it # ourselves. "@bazel_gazelle//language/go:go_default_library", + "//dev/go-mockgen-gazelle:go-mockgen-gazelle", # Bundled with aspect-cli, but we're missing out on buf that way "@aspect_cli//gazelle/js:js", # Loads the Buf extension @@ -335,7 +336,7 @@ exports_files([ # under certain conditions. See //ui/assets/... "CONTRIBUTING.md", ".swcrc", -]) +] + glob(["mockgen*.yaml"])) # sg msp settings diff --git a/WORKSPACE b/WORKSPACE index dfedb6d48963..32d997166641 100644 --- a/WORKSPACE +++ b/WORKSPACE @@ -151,6 +151,13 @@ http_archive( url = "https://github.com/aspect-build/aspect-cli/archive/5.8.20.tar.gz", ) +http_archive( + name = "rules_multirun", + sha256 = "9cd384e42b2da00104f0e18f25e66285aa21f64b573c667638a7a213206885ab", + strip_prefix = "rules_multirun-0.6.1", + url = "https://github.com/keith/rules_multirun/archive/refs/tags/0.6.1.tar.gz", +) + # hermetic_cc_toolchain setup ================================ HERMETIC_CC_TOOLCHAIN_VERSION = "v2.2.1" diff --git a/cmd/cody-gateway/internal/auth/BUILD.bazel b/cmd/cody-gateway/internal/auth/BUILD.bazel index 8b6ed66b20e8..b35f6310435c 100644 --- a/cmd/cody-gateway/internal/auth/BUILD.bazel +++ b/cmd/cody-gateway/internal/auth/BUILD.bazel @@ -1,3 +1,4 @@ +load("//dev:go_mockgen.bzl", "go_mockgen") load("//dev:go_defs.bzl", "go_test") load("@io_bazel_rules_go//go:def.bzl", "go_library") @@ -44,3 +45,14 @@ go_test( "@com_github_vektah_gqlparser_v2//gqlerror", ], ) + +go_mockgen( + name = "generate_mocks", + out = "mocks_test.go", + manifests = [ + "//:mockgen.yaml", + "//:mockgen.test.yaml", + "//:mockgen.temp.yaml", + ], + deps = ["@com_github_gregjones_httpcache//:httpcache"], +) diff --git a/cmd/cody-gateway/internal/dotcom/BUILD.bazel b/cmd/cody-gateway/internal/dotcom/BUILD.bazel index caca775d12b3..ecc256c72db2 100644 --- a/cmd/cody-gateway/internal/dotcom/BUILD.bazel +++ b/cmd/cody-gateway/internal/dotcom/BUILD.bazel @@ -1,6 +1,7 @@ load("//dev:go_defs.bzl", "go_test") load("//dev:write_generated_to_source_files.bzl", "write_generated_to_source_files") load("@io_bazel_rules_go//go:def.bzl", "go_library") +load("//dev:go_mockgen.bzl", "go_mockgen") go_library( name = "dotcom", @@ -47,3 +48,14 @@ go_test( embed = [":dotcom"], deps = ["@com_github_stretchr_testify//assert"], ) + +go_mockgen( + name = "generate_mocks", + out = "mocks.go", + manifests = [ + "//:mockgen.yaml", + "//:mockgen.test.yaml", + "//:mockgen.temp.yaml", + ], + deps = ["@com_github_khan_genqlient//graphql"], +) diff --git a/cmd/executor/internal/worker/BUILD.bazel b/cmd/executor/internal/worker/BUILD.bazel index 2a9097d78f41..ef3881a876ca 100644 --- a/cmd/executor/internal/worker/BUILD.bazel +++ b/cmd/executor/internal/worker/BUILD.bazel @@ -1,3 +1,4 @@ +load("//dev:go_mockgen.bzl", "go_mockgen") load("//dev:go_defs.bzl", "go_test") load("@io_bazel_rules_go//go:def.bzl", "go_library") @@ -64,3 +65,22 @@ go_test( "@com_github_stretchr_testify//require", ], ) + +go_mockgen( + name = "generate_mocks", + out = "mocks_test.go", + manifests = [ + "//:mockgen.yaml", + "//:mockgen.test.yaml", + "//:mockgen.temp.yaml", + ], + deps = [ + "//cmd/executor/internal/util", + "//cmd/executor/internal/worker/cmdlogger", + "//cmd/executor/internal/worker/command", + "//cmd/executor/internal/worker/files", + "//cmd/executor/internal/worker/runner", + "//cmd/executor/internal/worker/runtime", + "//cmd/executor/internal/worker/workspace", + ], +) diff --git a/cmd/executor/internal/worker/cmdlogger/BUILD.bazel b/cmd/executor/internal/worker/cmdlogger/BUILD.bazel index dea190f9d971..335ad66b910c 100644 --- a/cmd/executor/internal/worker/cmdlogger/BUILD.bazel +++ b/cmd/executor/internal/worker/cmdlogger/BUILD.bazel @@ -1,3 +1,4 @@ +load("//dev:go_mockgen.bzl", "go_mockgen") load("@io_bazel_rules_go//go:def.bzl", "go_library") load("//dev:go_defs.bzl", "go_test") @@ -28,3 +29,14 @@ go_test( "@com_github_sourcegraph_log//logtest", ], ) + +go_mockgen( + name = "generate_mocks", + out = "mocks_test.go", + manifests = [ + "//:mockgen.yaml", + "//:mockgen.test.yaml", + "//:mockgen.temp.yaml", + ], + deps = [":cmdlogger"], +) diff --git a/cmd/executor/internal/worker/command/BUILD.bazel b/cmd/executor/internal/worker/command/BUILD.bazel index 13bf4756315a..7004b49fda23 100644 --- a/cmd/executor/internal/worker/command/BUILD.bazel +++ b/cmd/executor/internal/worker/command/BUILD.bazel @@ -1,3 +1,4 @@ +load("//dev:go_mockgen.bzl", "go_mockgen") load("//dev:go_defs.bzl", "go_test") load("@io_bazel_rules_go//go:def.bzl", "go_library") @@ -72,3 +73,17 @@ go_test( "@io_k8s_utils//pointer", ], ) + +go_mockgen( + name = "generate_mocks", + out = "mocks_test.go", + manifests = [ + "//:mockgen.yaml", + "//:mockgen.test.yaml", + "//:mockgen.temp.yaml", + ], + deps = [ + ":command", + "//cmd/executor/internal/worker/cmdlogger", + ], +) diff --git a/cmd/executor/internal/worker/files/BUILD.bazel b/cmd/executor/internal/worker/files/BUILD.bazel index f9e549e794d9..766b7ee54f85 100644 --- a/cmd/executor/internal/worker/files/BUILD.bazel +++ b/cmd/executor/internal/worker/files/BUILD.bazel @@ -1,3 +1,4 @@ +load("//dev:go_mockgen.bzl", "go_mockgen") load("//dev:go_defs.bzl", "go_test") load("@io_bazel_rules_go//go:def.bzl", "go_library") @@ -26,3 +27,14 @@ go_test( "@com_github_stretchr_testify//require", ], ) + +go_mockgen( + name = "generate_mocks", + out = "mocks_test.go", + manifests = [ + "//:mockgen.yaml", + "//:mockgen.test.yaml", + "//:mockgen.temp.yaml", + ], + deps = [":files"], +) diff --git a/cmd/executor/internal/worker/runner/BUILD.bazel b/cmd/executor/internal/worker/runner/BUILD.bazel index 8425c2084fae..167aab47a2e3 100644 --- a/cmd/executor/internal/worker/runner/BUILD.bazel +++ b/cmd/executor/internal/worker/runner/BUILD.bazel @@ -1,3 +1,4 @@ +load("//dev:go_mockgen.bzl", "go_mockgen") load("//dev:go_defs.bzl", "go_test") load("@io_bazel_rules_go//go:def.bzl", "go_library") @@ -60,3 +61,18 @@ go_test( "@io_k8s_client_go//testing", ], ) + +go_mockgen( + name = "generate_mocks", + out = "mocks_test.go", + manifests = [ + "//:mockgen.yaml", + "//:mockgen.test.yaml", + "//:mockgen.temp.yaml", + ], + deps = [ + "//cmd/executor/internal/worker/cmdlogger", + "//cmd/executor/internal/worker/command", + "//cmd/executor/internal/worker/files", + ], +) diff --git a/cmd/executor/internal/worker/runtime/BUILD.bazel b/cmd/executor/internal/worker/runtime/BUILD.bazel index 90256b112105..531f8b14850f 100644 --- a/cmd/executor/internal/worker/runtime/BUILD.bazel +++ b/cmd/executor/internal/worker/runtime/BUILD.bazel @@ -1,3 +1,4 @@ +load("//dev:go_mockgen.bzl", "go_mockgen") load("//dev:go_defs.bzl", "go_test") load("@io_bazel_rules_go//go:def.bzl", "go_library") @@ -56,3 +57,20 @@ go_test( "@com_github_stretchr_testify//require", ], ) + +go_mockgen( + name = "generate_mocks", + out = "mocks_test.go", + manifests = [ + "//:mockgen.yaml", + "//:mockgen.test.yaml", + "//:mockgen.temp.yaml", + ], + deps = [ + "//cmd/executor/internal/util", + "//cmd/executor/internal/worker/cmdlogger", + "//cmd/executor/internal/worker/command", + "//cmd/executor/internal/worker/files", + "//cmd/executor/internal/worker/workspace", + ], +) diff --git a/cmd/executor/internal/worker/workspace/BUILD.bazel b/cmd/executor/internal/worker/workspace/BUILD.bazel index daab7691b536..a71cd543d1c1 100644 --- a/cmd/executor/internal/worker/workspace/BUILD.bazel +++ b/cmd/executor/internal/worker/workspace/BUILD.bazel @@ -1,3 +1,4 @@ +load("//dev:go_mockgen.bzl", "go_mockgen") load("//dev:go_defs.bzl", "go_test") load("@io_bazel_rules_go//go:def.bzl", "go_library") @@ -49,3 +50,19 @@ go_test( "@com_github_stretchr_testify//require", ], ) + +go_mockgen( + name = "generate_mocks", + out = "mocks_test.go", + manifests = [ + "//:mockgen.yaml", + "//:mockgen.test.yaml", + "//:mockgen.temp.yaml", + ], + deps = [ + "//cmd/executor/internal/util", + "//cmd/executor/internal/worker/cmdlogger", + "//cmd/executor/internal/worker/command", + "//cmd/executor/internal/worker/files", + ], +) diff --git a/cmd/frontend/backend/BUILD.bazel b/cmd/frontend/backend/BUILD.bazel index 17b1eeca51a4..32c7c78b98b4 100644 --- a/cmd/frontend/backend/BUILD.bazel +++ b/cmd/frontend/backend/BUILD.bazel @@ -1,3 +1,4 @@ +load("//dev:go_mockgen.bzl", "go_mockgen") load("//dev:go_defs.bzl", "go_test") load("@io_bazel_rules_go//go:def.bzl", "go_library") @@ -129,3 +130,14 @@ go_test( "@com_github_stretchr_testify//require", ], ) + +go_mockgen( + name = "generate_mocks", + out = "mocks_temp.go", + manifests = [ + "//:mockgen.yaml", + "//:mockgen.test.yaml", + "//:mockgen.temp.yaml", + ], + deps = [":backend"], +) diff --git a/cmd/frontend/internal/executorqueue/BUILD.bazel b/cmd/frontend/internal/executorqueue/BUILD.bazel index 536955bc3f09..fdbf425e01c0 100644 --- a/cmd/frontend/internal/executorqueue/BUILD.bazel +++ b/cmd/frontend/internal/executorqueue/BUILD.bazel @@ -1,3 +1,4 @@ +load("//dev:go_mockgen.bzl", "go_mockgen") load("//dev:go_defs.bzl", "go_test") load("@io_bazel_rules_go//go:def.bzl", "go_library") @@ -54,3 +55,14 @@ go_test( "@com_github_stretchr_testify//require", ], ) + +go_mockgen( + name = "generate_mocks", + out = "mocks_test.go", + manifests = [ + "//:mockgen.yaml", + "//:mockgen.test.yaml", + "//:mockgen.temp.yaml", + ], + deps = [":executorqueue"], +) diff --git a/cmd/frontend/internal/executorqueue/queues/batches/BUILD.bazel b/cmd/frontend/internal/executorqueue/queues/batches/BUILD.bazel index ffabbef477a2..c31ef19cbc19 100644 --- a/cmd/frontend/internal/executorqueue/queues/batches/BUILD.bazel +++ b/cmd/frontend/internal/executorqueue/queues/batches/BUILD.bazel @@ -1,3 +1,4 @@ +load("//dev:go_mockgen.bzl", "go_mockgen") load("//dev:go_defs.bzl", "go_test") load("@io_bazel_rules_go//go:def.bzl", "go_library") @@ -58,3 +59,14 @@ go_test( "@in_gopkg_yaml_v2//:yaml_v2", ], ) + +go_mockgen( + name = "generate_mocks", + out = "mocks_test.go", + manifests = [ + "//:mockgen.yaml", + "//:mockgen.test.yaml", + "//:mockgen.temp.yaml", + ], + deps = [":batches"], +) diff --git a/cmd/frontend/internal/httpapi/BUILD.bazel b/cmd/frontend/internal/httpapi/BUILD.bazel index 55f6d6d1db2c..8a1b759d525c 100644 --- a/cmd/frontend/internal/httpapi/BUILD.bazel +++ b/cmd/frontend/internal/httpapi/BUILD.bazel @@ -1,3 +1,4 @@ +load("//dev:go_mockgen.bzl", "go_mockgen") load("//dev:go_defs.bzl", "go_test") load("@io_bazel_rules_go//go:def.bzl", "go_library") @@ -141,3 +142,14 @@ go_test( "@org_golang_google_protobuf//testing/protocmp", ], ) + +go_mockgen( + name = "generate_mocks", + out = "mocks_test.go", + manifests = [ + "//:mockgen.yaml", + "//:mockgen.test.yaml", + "//:mockgen.temp.yaml", + ], + deps = ["//internal/httpcli"], +) diff --git a/cmd/frontend/internal/httpapi/releasecache/BUILD.bazel b/cmd/frontend/internal/httpapi/releasecache/BUILD.bazel index 0dddd24ccc39..4787e25c1de4 100644 --- a/cmd/frontend/internal/httpapi/releasecache/BUILD.bazel +++ b/cmd/frontend/internal/httpapi/releasecache/BUILD.bazel @@ -1,3 +1,4 @@ +load("//dev:go_mockgen.bzl", "go_mockgen") load("//dev:go_defs.bzl", "go_test") load("@io_bazel_rules_go//go:def.bzl", "go_library") @@ -58,3 +59,14 @@ go_test( "@com_github_stretchr_testify//require", ], ) + +go_mockgen( + name = "generate_mocks", + out = "mocks_test.go", + manifests = [ + "//:mockgen.yaml", + "//:mockgen.test.yaml", + "//:mockgen.temp.yaml", + ], + deps = [":releasecache"], +) diff --git a/cmd/gitserver/internal/BUILD.bazel b/cmd/gitserver/internal/BUILD.bazel index 6830ba5d18eb..81c075aaf535 100644 --- a/cmd/gitserver/internal/BUILD.bazel +++ b/cmd/gitserver/internal/BUILD.bazel @@ -1,5 +1,6 @@ load("@io_bazel_rules_go//go:def.bzl", "go_library") load("//dev:go_defs.bzl", "go_test") +load("//dev:go_mockgen.bzl", "go_mockgen") go_library( name = "internal", @@ -23,7 +24,8 @@ go_library( ], embedsrcs = ["sg_maintenance.sh"], importpath = "github.com/sourcegraph/sourcegraph/cmd/gitserver/internal", - visibility = ["//cmd/gitserver:__subpackages__"], + # visibility = ["//cmd/gitserver:__subpackages__"], + visibility = ["//visibility:public"], deps = [ "//cmd/frontend/envvar", "//cmd/gitserver/internal/accesslog", @@ -152,3 +154,14 @@ go_test( "@org_golang_x_time//rate", ], ) + +go_mockgen( + name = "generate_mocks", + out = "mocks_test.go", + manifests = [ + "//:mockgen.yaml", + "//:mockgen.test.yaml", + "//:mockgen.temp.yaml", + ], + deps = [":internal"], +) diff --git a/cmd/gitserver/internal/git/BUILD.bazel b/cmd/gitserver/internal/git/BUILD.bazel index 761196788f5f..36fd6207c094 100644 --- a/cmd/gitserver/internal/git/BUILD.bazel +++ b/cmd/gitserver/internal/git/BUILD.bazel @@ -1,3 +1,4 @@ +load("//dev:go_mockgen.bzl", "go_mockgen") load("@io_bazel_rules_go//go:def.bzl", "go_library") load("//dev:go_defs.bzl", "go_test") @@ -33,3 +34,14 @@ go_test( "@com_github_stretchr_testify//require", ], ) + +go_mockgen( + name = "generate_mocks", + out = "mock.go", + manifests = [ + "//:mockgen.yaml", + "//:mockgen.test.yaml", + "//:mockgen.temp.yaml", + ], + deps = [":git"], +) diff --git a/cmd/gitserver/internal/integration_tests/BUILD.bazel b/cmd/gitserver/internal/integration_tests/BUILD.bazel index 10c740d19f1f..565580a10fa5 100644 --- a/cmd/gitserver/internal/integration_tests/BUILD.bazel +++ b/cmd/gitserver/internal/integration_tests/BUILD.bazel @@ -1,3 +1,4 @@ +load("//dev:go_mockgen.bzl", "go_mockgen") load("@io_bazel_rules_go//go:def.bzl", "go_library") load("//dev:go_defs.bzl", "go_test") @@ -87,3 +88,14 @@ go_test( "@org_golang_x_time//rate", ], ) + +go_mockgen( + name = "generate_mocks", + out = "mocks.go", + manifests = [ + "//:mockgen.yaml", + "//:mockgen.test.yaml", + "//:mockgen.temp.yaml", + ], + deps = ["//cmd/gitserver/internal"], +) diff --git a/cmd/gitserver/internal/vcssyncer/BUILD.bazel b/cmd/gitserver/internal/vcssyncer/BUILD.bazel index 694f4a4de8b3..6dc83c8eeaf9 100644 --- a/cmd/gitserver/internal/vcssyncer/BUILD.bazel +++ b/cmd/gitserver/internal/vcssyncer/BUILD.bazel @@ -1,3 +1,4 @@ +load("//dev:go_mockgen.bzl", "go_mockgen") load("@io_bazel_rules_go//go:def.bzl", "go_library") load("//dev:go_defs.bzl", "go_test") @@ -110,3 +111,14 @@ go_test( "@org_golang_x_mod//module", ], ) + +go_mockgen( + name = "generate_mocks", + out = "mock.go", + manifests = [ + "//:mockgen.yaml", + "//:mockgen.test.yaml", + "//:mockgen.temp.yaml", + ], + deps = [":vcssyncer"], +) diff --git a/cmd/symbols/fetcher/BUILD.bazel b/cmd/symbols/fetcher/BUILD.bazel index 789751429c66..a3959bb2e14a 100644 --- a/cmd/symbols/fetcher/BUILD.bazel +++ b/cmd/symbols/fetcher/BUILD.bazel @@ -1,3 +1,4 @@ +load("//dev:go_mockgen.bzl", "go_mockgen") load("//dev:go_defs.bzl", "go_test") load("@io_bazel_rules_go//go:def.bzl", "go_library") @@ -38,3 +39,14 @@ go_test( "@com_github_google_go_cmp//cmp", ], ) + +go_mockgen( + name = "generate_mocks", + out = "mocks_test.go", + manifests = [ + "//:mockgen.yaml", + "//:mockgen.test.yaml", + "//:mockgen.temp.yaml", + ], + deps = ["//cmd/symbols/gitserver"], +) diff --git a/cmd/symbols/internal/api/BUILD.bazel b/cmd/symbols/internal/api/BUILD.bazel index ecd67da06a8c..d5c58fa654ca 100644 --- a/cmd/symbols/internal/api/BUILD.bazel +++ b/cmd/symbols/internal/api/BUILD.bazel @@ -1,3 +1,4 @@ +load("//dev:go_mockgen.bzl", "go_mockgen") load("//dev:go_defs.bzl", "go_test") load("@io_bazel_rules_go//go:def.bzl", "go_library") @@ -70,3 +71,14 @@ go_test( "@org_golang_x_sync//semaphore", ], ) + +go_mockgen( + name = "generate_mocks", + out = "mocks_test.go", + manifests = [ + "//:mockgen.yaml", + "//:mockgen.test.yaml", + "//:mockgen.temp.yaml", + ], + deps = ["//cmd/symbols/gitserver"], +) diff --git a/cmd/worker/internal/telemetry/BUILD.bazel b/cmd/worker/internal/telemetry/BUILD.bazel index d18aea9a5116..f0ff1266a8cd 100644 --- a/cmd/worker/internal/telemetry/BUILD.bazel +++ b/cmd/worker/internal/telemetry/BUILD.bazel @@ -1,3 +1,4 @@ +load("//dev:go_mockgen.bzl", "go_mockgen") load("//dev:go_defs.bzl", "go_test") load("@io_bazel_rules_go//go:def.bzl", "go_library") @@ -59,3 +60,14 @@ go_test( "@com_github_sourcegraph_log//logtest", ], ) + +go_mockgen( + name = "generate_mocks", + out = "mocks_test.go", + manifests = [ + "//:mockgen.yaml", + "//:mockgen.test.yaml", + "//:mockgen.temp.yaml", + ], + deps = [":telemetry"], +) diff --git a/deps.bzl b/deps.bzl index 2da6c96a6d9a..e21e06d44981 100644 --- a/deps.bzl +++ b/deps.bzl @@ -611,6 +611,27 @@ def go_dependencies(): sum = "h1:5sz/EEAK+ls5wF+NeqDpk5+iNdMDXrh3z3nPnH1Wvgk=", version = "v0.2.0", ) + go_repository( + name = "com_github_bazelbuild_bazel_gazelle", + build_file_proto_mode = "disable_global", + importpath = "github.com/bazelbuild/bazel-gazelle", + sum = "h1:Bvg+zEHWYwWrhJT4WxyvcU3y1DEJpT/XlPYEfIn9lUI=", + version = "v0.35.0", + ) + go_repository( + name = "com_github_bazelbuild_buildtools", + build_file_proto_mode = "disable_global", + importpath = "github.com/bazelbuild/buildtools", + sum = "h1:2Gc2Q6hVR1SJ8bBI9Ybzoggp8u/ED2WkM4MfvEIn9+c=", + version = "v0.0.0-20231115204819-d4c9dccdfbb1", + ) + go_repository( + name = "com_github_bazelbuild_rules_go", + build_file_proto_mode = "disable_global", + importpath = "github.com/bazelbuild/rules_go", + sum = "h1:uJStI9o5obVWSwquy9WxKNWfZxf2sKA2rpEsX6x5RVM=", + version = "v0.44.0", + ) go_repository( name = "com_github_becheran_wildmatch_go", build_file_proto_mode = "disable_global", @@ -674,6 +695,13 @@ def go_dependencies(): sum = "h1:gPypJ5xD31uhX6Tf54sDPUOBXTqKH4c9aPY66CyQrS0=", version = "v1.3.4", ) + go_repository( + name = "com_github_bmatcuk_doublestar_v4", + build_file_proto_mode = "disable_global", + importpath = "github.com/bmatcuk/doublestar/v4", + sum = "h1:FH9SifrbvJhnlQpztAx++wlkk70QBf0iBWDwNy7PA4I=", + version = "v4.6.1", + ) go_repository( name = "com_github_boj_redistore", build_file_proto_mode = "disable_global", @@ -1243,8 +1271,13 @@ def go_dependencies(): name = "com_github_derision_test_go_mockgen", build_file_proto_mode = "disable_global", importpath = "github.com/derision-test/go-mockgen", - sum = "h1:Wo7vx8f7QdBT4jxfgTvs2t9VpyFlvvqzjXoE3m7MQBU=", - version = "v1.3.8-0.20240105000756-fb9effb23d90", + patch_args = ["-p1"], + patches = [ + "//third_party/com_github_strum355_gomockgen:debug.patch", + ], + replace = "github.com/strum355/go-mockgen", + sum = "h1:OqSMnVsZVdlzf2H7ZLZ7pHs5iGrkAK2CitRUVO/GUPs=", + version = "v0.0.0-20240212213912-87f69a62e0d3", ) go_repository( name = "com_github_dghubble_go_twitter", @@ -7320,8 +7353,8 @@ def go_dependencies(): name = "net_starlark_go", build_file_proto_mode = "disable_global", importpath = "go.starlark.net", - sum = "h1:+FNtrFTmVw0YZGpBGX56XDee331t6JAXeK2bcyhLOOc=", - version = "v0.0.0-20200306205701-8dd3e2ee1dd5", + sum = "h1:xwwDQW5We85NaTk2APgoN9202w/l0DVGp+GZMfsrh7s=", + version = "v0.0.0-20210223155950-e043a3d3c984", ) go_repository( name = "org_bitbucket_creachadair_shell", @@ -7498,6 +7531,13 @@ def go_dependencies(): sum = "h1:FvmRgNOcs3kOa+T20R1uhfP9F6HgG2mfxDv1vrx1Htc=", version = "v0.17.0", ) + go_repository( + name = "org_golang_x_tools_go_vcs", + build_file_proto_mode = "disable_global", + importpath = "golang.org/x/tools/go/vcs", + sum = "h1:cOIJqWBl99H1dH5LWizPa+0ImeeJq3t3cJjaeOWUAL4=", + version = "v0.1.0-deprecated", + ) go_repository( name = "org_golang_x_xerrors", build_file_proto_mode = "disable_global", diff --git a/dev/BUILD.bazel b/dev/BUILD.bazel index 0b238ed9df06..a52a0970baba 100644 --- a/dev/BUILD.bazel +++ b/dev/BUILD.bazel @@ -1,6 +1,10 @@ +load("@rules_multirun//:defs.bzl", "multirun") load("@aspect_bazel_lib//lib:write_source_files.bzl", "write_source_files") -exports_files(srcs = ["eslint-report-test.sh"]) +exports_files(srcs = [ + "eslint-report-test.sh", + "go-mockgen.tpl", +]) write_source_files( name = "write_all_generated", @@ -28,3 +32,85 @@ write_source_files( "//schema:write_generated_schema", ], ) + +multirun( + name = "go_mockgen", + commands = [ + "//cmd/cody-gateway/internal/auth:generate_mocks", + "//cmd/cody-gateway/internal/dotcom:generate_mocks", + "//cmd/executor/internal/worker/cmdlogger:generate_mocks", + "//cmd/executor/internal/worker/command:generate_mocks", + "//cmd/executor/internal/worker/files:generate_mocks", + "//cmd/executor/internal/worker/runner:generate_mocks", + "//cmd/executor/internal/worker/runtime:generate_mocks", + "//cmd/executor/internal/worker/workspace:generate_mocks", + "//cmd/executor/internal/worker:generate_mocks", + "//cmd/frontend/backend:generate_mocks", + "//cmd/frontend/internal/executorqueue/queues/batches:generate_mocks", + "//cmd/frontend/internal/executorqueue:generate_mocks", + "//cmd/frontend/internal/httpapi/releasecache:generate_mocks", + "//cmd/frontend/internal/httpapi:generate_mocks", + "//cmd/gitserver/internal/git:generate_mocks", + "//cmd/gitserver/internal/integration_tests:generate_mocks", + "//cmd/gitserver/internal/vcssyncer:generate_mocks", + "//cmd/gitserver/internal:generate_mocks", + "//cmd/symbols/fetcher:generate_mocks", + "//cmd/symbols/internal/api:generate_mocks", + "//cmd/worker/internal/telemetry:generate_mocks", + "//dev/team:generate_mocks", + "//internal/auth/userpasswd:generate_mocks", + "//internal/authz/providers/gerrit:generate_mocks", + "//internal/authz/providers/github:generate_mocks", + "//internal/authz/subrepoperms:generate_mocks", + "//internal/authz:generate_mocks", + "//internal/batches/sources:generate_mocks", + "//internal/batches/syncer:generate_mocks", + "//internal/codeintel/autoindexing/internal/background/dependencies:generate_mocks", + "//internal/codeintel/autoindexing/internal/inference:generate_mocks", + "//internal/codeintel/autoindexing:generate_mocks", + "//internal/codeintel/codenav/transport/graphql:generate_mocks", + "//internal/codeintel/codenav:generate_mocks", + "//internal/codeintel/dependencies/internal/background:generate_mocks", + "//internal/codeintel/policies:generate_mocks", + "//internal/codeintel/ranking:generate_mocks", + "//internal/codeintel/uploads/internal/background/backfiller:generate_mocks", + "//internal/codeintel/uploads/internal/background/expirer:generate_mocks", + "//internal/codeintel/uploads/internal/background/processor:generate_mocks", + "//internal/codeintel/uploads/transport/graphql:generate_mocks", + "//internal/codeintel/uploads/transport/http/auth:generate_mocks", + "//internal/codeintel/uploads/transport/http:generate_mocks", + "//internal/codeintel/uploads:generate_mocks", + "//internal/conf:generate_mocks", + "//internal/database/basestore:generate_mocks", + "//internal/database/dbmocks:generate_mocks", + "//internal/database/migration/runner:generate_mocks", + "//internal/embeddings/background/repo:generate_mocks", + "//internal/embeddings/embed:generate_mocks", + "//internal/embeddings:generate_mocks", + "//internal/executor/store:generate_mocks", + "//internal/featureflag:generate_mocks", + "//internal/github_apps/store:generate_mocks", + "//internal/gitserver:generate_mocks", + "//internal/goroutine:generate_mocks", + "//internal/insights/background:generate_mocks", + "//internal/insights/discovery:generate_mocks", + "//internal/insights/scheduler:generate_mocks", + "//internal/insights/store:generate_mocks", + "//internal/metrics/store:generate_mocks", + "//internal/oobmigration:generate_mocks", + "//internal/redispool:generate_mocks", + "//internal/repos:generate_mocks", + "//internal/search/client:generate_mocks", + "//internal/search/job/mockjob:generate_mocks", + "//internal/search/repos:generate_mocks", + "//internal/search/symbol:generate_mocks", + "//internal/telemetry/telemetrytest:generate_mocks", + "//internal/uploadhandler:generate_mocks", + "//internal/uploadstore/mocks:generate_mocks", + "//internal/uploadstore:generate_mocks", + "//internal/workerutil/dbworker/store/mocks:generate_mocks", + "//internal/workerutil:generate_mocks", + "//lib/background:generate_mocks", + ], # TODO: this list doesn't get smaller, why + jobs = 1, +) diff --git a/dev/go-mockgen-gazelle/BUILD.bazel b/dev/go-mockgen-gazelle/BUILD.bazel new file mode 100644 index 000000000000..63a3672c4956 --- /dev/null +++ b/dev/go-mockgen-gazelle/BUILD.bazel @@ -0,0 +1,19 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library") + +go_library( + name = "go-mockgen-gazelle", + srcs = ["go-mockgen.go"], + importpath = "github.com/sourcegraph/sourcegraph/dev/go-mockgen-gazelle", + visibility = ["//visibility:public"], + deps = [ + "//dev/go-mockgen-transformer/config", + "@bazel_gazelle//config:go_default_library", + "@bazel_gazelle//label:go_default_library", + "@bazel_gazelle//language:go_default_library", + "@bazel_gazelle//language/go:go_default_library", + "@bazel_gazelle//repo:go_default_library", + "@bazel_gazelle//resolve:go_default_library", + "@bazel_gazelle//rule:go_default_library", + "@org_golang_x_exp//maps", + ], +) diff --git a/dev/go-mockgen-gazelle/go-mockgen.go b/dev/go-mockgen-gazelle/go-mockgen.go new file mode 100644 index 000000000000..e10efb74e612 --- /dev/null +++ b/dev/go-mockgen-gazelle/go-mockgen.go @@ -0,0 +1,238 @@ +package gomockgengazelle + +import ( + "log" + "path/filepath" + "slices" + "strings" + "sync" + + "github.com/bazelbuild/bazel-gazelle/config" + "github.com/bazelbuild/bazel-gazelle/label" + "github.com/bazelbuild/bazel-gazelle/language" + golang "github.com/bazelbuild/bazel-gazelle/language/go" + "github.com/bazelbuild/bazel-gazelle/repo" + "github.com/bazelbuild/bazel-gazelle/resolve" + "github.com/bazelbuild/bazel-gazelle/rule" + "golang.org/x/exp/maps" + + mockgenc "github.com/sourcegraph/sourcegraph/dev/go-mockgen-transformer/config" +) + +type gomockgen struct { + language.BaseLang + language.BaseLifecycleManager +} + +var ( + _ (language.Language) = (*gomockgen)(nil) + _ (language.LifecycleManager) = (*gomockgen)(nil) + _ (language.ModuleAwareLanguage) = (*gomockgen)(nil) +) + +var ( + logger = log.New(log.Writer(), log.Prefix(), log.Flags()) + + yamlPayload mockgenc.YamlPayload + + // Keep track of all output directories mentioned in go-mockgen config, so that + // we can notify if any where not visited & therefore no mocks were generated/updated + // for them. Unlike with go-mockgen, we currently don't (or can't?) create new directories + // as part of sg bazel configure, so we give the user a bash command to run to prepare the + // missing directories (+ shell Go files) before re-running sg bazel configure. + unvisitedDirs = make(map[string]bool) + + allOutputDirs = make(map[string]mockgenc.YamlMock) + + // Haven't discovered a way to get the workspace root dir yet (the cwd is deep in the Bazel output base somewhere), + // so to read the go-mockgen files we set this value once we start traversing the workspace root. + rootDir string + + // Currently, the go_mockgen rule extracts the required go-mockgen config at build time, so their labels + // need to be passed as inputs. + manifests []string + // We want to load the mockgen.yaml (and related) config file(s) only once, so we use a sync.OnceValue. + loadConfig = sync.OnceValue[error](func() (err error) { + yamlPayload, err = mockgenc.ReadManifest(filepath.Join(rootDir, "mockgen.yaml")) + if err != nil { + return err + } + + for _, mock := range yamlPayload.Mocks { + allOutputDirs[filepath.Dir(mock.Filename)] = mock + unvisitedDirs[filepath.Dir(mock.Filename)] = true + } + + manifests = []string{"//:mockgen.yaml"} + for _, manifest := range yamlPayload.IncludeConfigPaths { + manifests = append(manifests, "//:"+manifest) + } + return nil + }) +) + +func NewLanguage() language.Language { + return &gomockgen{} +} + +func (*gomockgen) Name() string { return "gomockgen" } + +func (*gomockgen) Kinds() map[string]rule.KindInfo { + return map[string]rule.KindInfo{ + "go_mockgen": { + MatchAny: true, + // I cant tell if these work or not... + MergeableAttrs: map[string]bool{ + "deps": true, + "out": true, + "manifests": true, + }, + }, + "multirun": { + MatchAttrs: []string{"name"}, + MergeableAttrs: map[string]bool{ + "commands": true, + }, + }, + } +} + +// From ModuleAwareLanguage.ApparentLoads: +// +// ApparentLoads returns .bzl files and symbols they define. Every rule +// generated by GenerateRules, now or in the past, should be loadable from +// one of these files. +// +// https://sourcegraph.com/github.com/bazelbuild/bazel-gazelle@ec1591cb193591b9544b52b98b8ce52833b34c58/-/blob/language/lang.go?L137:2-137:15 +func (*gomockgen) ApparentLoads(moduleToApparentName func(string) string) []rule.LoadInfo { + return []rule.LoadInfo{ + { + Name: "//dev:go_mockgen.bzl", + Symbols: []string{"go_mockgen"}, + }, + { + Name: "@rules_multirun//:defs.bzl", + Symbols: []string{"multirun"}, + }, + } +} + +func (g *gomockgen) GenerateRules(args language.GenerateArgs) language.GenerateResult { + rootDir = args.Config.RepoRoot + if err := loadConfig(); err != nil { + log.Fatalf("failed to load go-mockgen config: %v", err) + } + + // if we're in the ./dev folder, we want to generate an "all" multirun. + if args.Rel == "dev" { + var targets []string + for _, mock := range yamlPayload.Mocks { + targets = append(targets, "//"+filepath.Dir(mock.Filename)+":generate_mocks") + } + + slices.Sort(targets) + targets = slices.Compact(targets) + + multirunRule := rule.NewRule("multirun", "go_mockgen") + multirunRule.SetAttr("commands", targets) + multirunRule.SetAttr("jobs", 1) + + return language.GenerateResult{ + Gen: []*rule.Rule{multirunRule}, + Imports: []interface{}{nil}, + } + } + + // is this a directory we care about? if not, we don't want to generate any rules. + mock, ok := allOutputDirs[args.Rel] + if !ok { + return language.GenerateResult{} + } + + delete(unvisitedDirs, args.Rel) + + outputFilename := filepath.Base(mock.Filename) + + r := rule.NewRule("go_mockgen", "generate_mocks") + r.SetAttr("out", outputFilename) + r.SetAttr("manifests", manifests) + + // we want to add the generated file to either the go_library rule or the go_test rule, depending + // on whether the file is a _test.go file or not. + goRuleIndex := slices.IndexFunc(args.OtherGen, func(r *rule.Rule) bool { + if strings.HasSuffix(outputFilename, "_test.go") { + return r.Kind() == "go_test" + } else { + return r.Kind() == "go_library" + } + }) + if goRuleIndex == -1 { + // We can revisit this output if it's something we hit in practice. + log.Fatalf("couldn't find a go_{library,test} rule in \"%s/BUILD.bazel\"", args.Rel) + } + + goRule := args.OtherGen[goRuleIndex] + + goRule.SetAttr("srcs", append(goRule.AttrStrings("srcs"), filepath.Base(mock.Filename))) + + imports := gatherDependencies(mock) + + return language.GenerateResult{ + Gen: []*rule.Rule{r, goRule}, + // Gen and Imports correspond per-index aka 'r' above is associated with 'imports' below. + // This value gets passed as 'rawImports' in 'Resolve' below. + Imports: []interface{}{imports, nil}, + } +} + +func (g *gomockgen) DoneGeneratingRules() { + if len(unvisitedDirs) > 0 { + var b strings.Builder + for _, dir := range maps.Keys(unvisitedDirs) { + b.WriteString("mkdir -p ") + b.WriteString(dir) + b.WriteString(" && ") + b.WriteString("echo 'package ") + if allOutputDirs[dir].Package != "" { + b.WriteString(allOutputDirs[dir].Package) + } else { + b.WriteString(filepath.Base(dir)) + } + b.WriteString("' > ") + b.WriteString(allOutputDirs[dir].Filename) + b.WriteString(" \\\n && ") + } + b.WriteString("echo 'Done preparing! Re-running `sg bazel configure`' && sg bazel configure") + logger.Fatalf("Some declared go-mockgen output files were not created due to their output directory missing. Please run the following to resolve this:\n%s", b.String()) + } +} + +// Here we translate the Go import paths into Bazel labels for the go_mockgen rules. +func (g *gomockgen) Resolve(c *config.Config, ix *resolve.RuleIndex, rc *repo.RemoteCache, r *rule.Rule, rawImports interface{}, from label.Label) { + if r.Kind() != "go_mockgen" { + return + } + imports := rawImports.([]string) + + r.DelAttr("deps") + + labels := make([]string, 0, len(imports)) + for _, i := range imports { + result, err := golang.ResolveGo(c, ix, rc, i, from) + if err != nil { + log.Fatalf("failed to resolve Go import path (%s) to Bazel label: %v", i, err) + } + labels = append(labels, result.Rel(from.Repo, from.Pkg).String()) + } + r.SetAttr("deps", labels) +} + +func gatherDependencies(mock mockgenc.YamlMock) (deps []string) { + if mock.Path != "" { + deps = append(deps, mock.Path) + } + for _, source := range mock.Sources { + deps = append(deps, source.Path) + } + return +} diff --git a/dev/go-mockgen-transformer/BUILD.bazel b/dev/go-mockgen-transformer/BUILD.bazel new file mode 100644 index 000000000000..b7d2af5f4041 --- /dev/null +++ b/dev/go-mockgen-transformer/BUILD.bazel @@ -0,0 +1,18 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_binary", "go_library") + +go_library( + name = "go-mockgen-transformer_lib", + srcs = ["main.go"], + importpath = "github.com/sourcegraph/sourcegraph/dev/go-mockgen-transformer", + visibility = ["//visibility:private"], + deps = [ + "//dev/go-mockgen-transformer/config", + "@in_gopkg_yaml_v3//:yaml_v3", + ], +) + +go_binary( + name = "go-mockgen-transformer", + embed = [":go-mockgen-transformer_lib"], + visibility = ["//visibility:public"], +) diff --git a/dev/go-mockgen-transformer/config/BUILD.bazel b/dev/go-mockgen-transformer/config/BUILD.bazel new file mode 100644 index 000000000000..034446519c20 --- /dev/null +++ b/dev/go-mockgen-transformer/config/BUILD.bazel @@ -0,0 +1,9 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library") + +go_library( + name = "config", + srcs = ["load.go"], + importpath = "github.com/sourcegraph/sourcegraph/dev/go-mockgen-transformer/config", + visibility = ["//visibility:public"], + deps = ["@in_gopkg_yaml_v3//:yaml_v3"], +) diff --git a/dev/go-mockgen-transformer/config/load.go b/dev/go-mockgen-transformer/config/load.go new file mode 100644 index 000000000000..c44084509c11 --- /dev/null +++ b/dev/go-mockgen-transformer/config/load.go @@ -0,0 +1,97 @@ +package config + +// +// TODO: expose this directly in go-mockgen +// + +import ( + "os" + "path/filepath" + + "gopkg.in/yaml.v3" +) + +type YamlPayload struct { + // Meta options + IncludeConfigPaths []string `yaml:"include-config-paths,omitempty"` + + // Global options + Exclude []string `yaml:"exclude,omitempty"` + Prefix string `yaml:"prefix,omitempty"` + ConstructorPrefix string `yaml:"constructor-prefix,omitempty"` + Force bool `yaml:"force,omitempty"` + DisableFormatting bool `yaml:"disable-formatting,omitempty"` + Goimports string `yaml:"goimports,omitempty"` + ForTest bool `yaml:"for-test,omitempty"` + FilePrefix string `yaml:"file-prefix,omitempty"` + + StdlibRoot string `yaml:"stdlib-root,omitempty"` + + Mocks []YamlMock `yaml:"mocks,omitempty"` +} + +type YamlMock struct { + Path string `yaml:"path,omitempty"` + Paths []string `yaml:"paths,omitempty"` + Sources []YamlSource `yaml:"sources,omitempty"` + SourceFiles []string `yaml:"source-files,omitempty"` + Archives []string `yaml:"archives,omitempty"` + Package string `yaml:"package,omitempty"` + Interfaces []string `yaml:"interfaces,omitempty"` + Exclude []string `yaml:"exclude,omitempty"` + Dirname string `yaml:"dirname,omitempty"` + Filename string `yaml:"filename,omitempty"` + ImportPath string `yaml:"import-path,omitempty"` + Prefix string `yaml:"prefix,omitempty"` + ConstructorPrefix string `yaml:"constructor-prefix,omitempty"` + Force bool `yaml:"force,omitempty"` + DisableFormatting bool `yaml:"disable-formatting,omitempty"` + Goimports string `yaml:"goimports,omitempty"` + ForTest bool `yaml:"for-test,omitempty"` + FilePrefix string `yaml:"file-prefix,omitempty"` +} + +type YamlSource struct { + Path string `yaml:"path,omitempty"` + Paths []string `yaml:"paths,omitempty"` + Interfaces []string `yaml:"interfaces,omitempty"` + Exclude []string `yaml:"exclude,omitempty"` + Prefix string `yaml:"prefix,omitempty"` + SourceFiles []string `yaml:"source-files,omitempty"` +} + +func ReadManifest(configPath string) (YamlPayload, error) { + contents, err := os.ReadFile(configPath) + if err != nil { + return YamlPayload{}, err + } + + var payload YamlPayload + if err := yaml.Unmarshal(contents, &payload); err != nil { + return YamlPayload{}, err + } + + for _, path := range payload.IncludeConfigPaths { + payload, err = readIncludeConfig(payload, filepath.Join(filepath.Dir(configPath), path)) + if err != nil { + return YamlPayload{}, err + } + } + + return payload, nil +} + +func readIncludeConfig(payload YamlPayload, path string) (YamlPayload, error) { + contents, err := os.ReadFile(path) + if err != nil { + return YamlPayload{}, err + } + + var mocks []YamlMock + if err := yaml.Unmarshal(contents, &mocks); err != nil { + return YamlPayload{}, err + } + + payload.Mocks = append(payload.Mocks, mocks...) + return payload, nil +} diff --git a/dev/go-mockgen-transformer/main.go b/dev/go-mockgen-transformer/main.go new file mode 100644 index 000000000000..41fcf9a1c067 --- /dev/null +++ b/dev/go-mockgen-transformer/main.go @@ -0,0 +1,103 @@ +package main + +import ( + "flag" + "fmt" + "os" + "strings" + + "gopkg.in/yaml.v3" + + "github.com/sourcegraph/sourcegraph/dev/go-mockgen-transformer/config" +) + +type sliceFlag []string + +func (i *sliceFlag) String() string { + return strings.Join(*i, ",") +} + +func (i *sliceFlag) Set(value string) error { + *i = append(*i, value) + return nil +} + +func main() { + payload, err := config.ReadManifest("mockgen.yaml") + if err != nil { + panic(err) + } + + var sourceFiles sliceFlag + var archives sliceFlag + outfile := flag.String("outfile", "mockgen.yaml", "File to write the transformed config to") + intermediaryGeneratedFile := flag.String("intermediary-generated-file", "", "Path to the intermediary generated file (before being copied to source tree)") + finalGeneratedFile := flag.String("final-generated-file", "", "Path to the final generated file (in the source tree)") + outputImportPath := flag.String("output-importpath", "", "The import path of the generated mock file") + flag.StringVar(&payload.Goimports, "goimports", "./bin/.goimports", "Path to goimports binary") + flag.StringVar(&payload.StdlibRoot, "stdlibroot", "", "Path to the root of the Go compiled stdlib") + flag.Var(&sourceFiles, "source-files", "Values of the format IMPORTPATH=FILE, where IMPORTPATH is the import path for FILE") + flag.Var(&archives, "archives", "Values of the format IMPORTPATH=ARCHIVE, where ARCHIVE is the path to the archive for the given IMPORTPATH") + flag.Parse() + + payload.IncludeConfigPaths = []string{} + + f, err := os.Create(*outfile) + if err != nil { + panic(err) + } + defer f.Close() + + // source files need to be grouped by their import path, so that when we process each (import path, source files) + // tuple in go-mockgen, the packages declared at the top of the source files are all equal part import path grouping. + importpathToSources := make(map[string][]string) + for _, arg := range sourceFiles { + split := strings.Split(arg, "=") + importpathToSources[split[0]] = append(importpathToSources[split[0]], split[1]) + } + + outputPayload := payload + outputPayload.Mocks = []config.YamlMock{} + // extract the mock configuration for the specific file we want to generate mocks for. + for _, mock := range payload.Mocks { + if mock.Filename == *finalGeneratedFile { + // the config declares the filepath for the _final_ generated file, + // but we prefix the filename with _ so we can copy from the output base + // into the source tree. + mock.Filename = *intermediaryGeneratedFile + outputPayload.Mocks = []config.YamlMock{mock} + break + } + } + if len(outputPayload.Mocks) == 0 { + panic(fmt.Sprintf("Could not find mock for file %s", *finalGeneratedFile)) + } + + // TODO: why does this need to be set explicitly again? + outputPayload.Mocks[0].ImportPath = *outputImportPath + + // now we have the right config section, we want to attach the right sources for each + // import path that we're mocking interfaces from. For each dep in the go_mockgen rule, + // there should be a corresponding section in the config extract. + // Archive files are set globally, they don't need grouping. + if len(outputPayload.Mocks[0].Sources) > 0 { + newSources := outputPayload.Mocks[0].Sources[:0] + for _, source := range outputPayload.Mocks[0].Sources { + source.SourceFiles = importpathToSources[source.Path] + outputPayload.Mocks[0].Archives = archives + newSources = append(newSources, source) + } + } else { + outputPayload.Mocks[0].Archives = archives + outputPayload.Mocks[0].SourceFiles = importpathToSources[outputPayload.Mocks[0].Path] + } + + out, err := yaml.Marshal(outputPayload) + if err != nil { + panic(err) + } + + if _, err := f.Write(out); err != nil { + panic(err) + } +} diff --git a/dev/go_mockgen.bzl b/dev/go_mockgen.bzl new file mode 100644 index 000000000000..52b20d60433f --- /dev/null +++ b/dev/go_mockgen.bzl @@ -0,0 +1,18 @@ +load("//dev:go_mockgen_rule.bzl", "go_mockgen_generate") +load("//dev:write_generated_to_source_files.bzl", "write_generated_to_source_files") + +def go_mockgen(name, manifests, deps, out): + gen_file = "_" + out + + go_mockgen_generate( + name = name + "_generate", + deps = deps, + out = gen_file, + manifests = manifests, + ) + + write_generated_to_source_files( + name = name, + output_files = {out: gen_file}, + target = ":" + name + "_generate", + ) diff --git a/dev/go_mockgen_rule.bzl b/dev/go_mockgen_rule.bzl new file mode 100644 index 000000000000..c62420ecbb05 --- /dev/null +++ b/dev/go_mockgen_rule.bzl @@ -0,0 +1,118 @@ +load("@io_bazel_rules_go//go:def.bzl", "GoArchive", "GoSource") + +def _go_mockgen_run(ctx): + dst = ctx.actions.declare_file(ctx.attr.out) + config_dst = ctx.actions.declare_file("mockgen.yaml") + + stdlib_root = "{path}/{os}_{arch}".format( + path = ctx.attr._go_stdlib[GoSource].stdlib.libs[0].path, + os = ctx.attr._go_stdlib[GoSource].mode.goos, + arch = ctx.attr._go_stdlib[GoSource].mode.goarch, + ) + + transformer_args = [ + "--outfile", + config_dst.path, + "--final-generated-file", + ctx.label.package + "/" + ctx.attr.out[1:], + "--intermediary-generated-file", + dst.path, + "--stdlibroot", + stdlib_root, + "--goimports", + ctx.executable._goimports.path, + "--output-importpath", + "github.com/sourcegraph/sourcegraph/" + ctx.label.package, + ] + + deps = [] + for dep in ctx.attr.deps: + for a in dep[GoArchive].direct: + transformer_args.append("--archives=%s=%s" % ( + a.data.importmap, + # (anecdotaly) export_file is a .x file and file is a .a file. See here for more info on this + # https://github.com/bazelbuild/rules_go/issues/1803 + # and here for further reading on the compiler side of things + # https://groups.google.com/g/golang-codereviews/c/UXJeeuTS7oQ + a.data.export_file.path if a.data.export_file else a.data.file.path, + )) + deps.append(depset(direct = [a.data.export_file if a.data.export_file else a.data.file])) + + for dep in ctx.attr.deps: + for src in dep[GoArchive].data.srcs: + transformer_args.append("--source-files=%s=%s" % (dep[GoArchive].data.importpath, src.path)) + deps.append(depset(direct = [src])) + + manifests = [] + for f in ctx.attr.manifests: + manifests.extend(f.files.to_list()) + + ctx.actions.run( + mnemonic = "GoMockgenConfigTransform", + executable = ctx.executable._gomockgen_transformer, + arguments = transformer_args, + outputs = [config_dst], + tools = [ctx.executable._goimports], + inputs = depset(direct = manifests), + progress_message = "Transforming go-mockgen config for %s" % str(ctx.label), # TODO: figure out what we wanna put here + ) + + action_direct_deps = [config_dst, ctx.attr._go_stdlib[GoSource].stdlib.libs[0]] + for dep in ctx.attr.deps: + action_direct_deps.append(dep[GoArchive].data.file) + + ctx.actions.run( + mnemonic = "GoMockgen", + arguments = ["--manifest-dir", config_dst.dirname], + executable = ctx.executable._gomockgen, + outputs = [dst], + tools = [ctx.executable._goimports], + inputs = depset( + direct = action_direct_deps, + transitive = deps, + ), + progress_message = "Running go-mockgen to generate %s" % dst.short_path, + ) + + return [ + DefaultInfo( + files = depset([dst]), + ), + ] + +go_mockgen_generate = rule( + implementation = _go_mockgen_run, + attrs = { + "deps": attr.label_list( + providers = [GoArchive], + allow_empty = False, + mandatory = True, + ), + "out": attr.string( + mandatory = True, + ), + "manifests": attr.label_list( + allow_files = True, + mandatory = False, + ), + "_gomockgen_transformer": attr.label( + default = Label("//dev/go-mockgen-transformer:go-mockgen-transformer"), + executable = True, + cfg = "exec", + ), + "_gomockgen": attr.label( + default = Label("@com_github_derision_test_go_mockgen//cmd/go-mockgen:go-mockgen"), + executable = True, + cfg = "exec", + ), + "_goimports": attr.label( + default = Label("@org_golang_x_tools//cmd/goimports:goimports"), + executable = True, + cfg = "exec", + ), + "_go_stdlib": attr.label( + providers = [GoSource], + default = Label("@io_bazel_rules_go//:stdlib"), + ), + }, +) diff --git a/dev/sg/linters/gogenerate.go b/dev/sg/linters/gogenerate.go index e93279dcf293..74e89b0b3e64 100644 --- a/dev/sg/linters/gogenerate.go +++ b/dev/sg/linters/gogenerate.go @@ -2,7 +2,6 @@ package linters import ( "context" - "os" "strings" "github.com/sourcegraph/run" @@ -33,12 +32,7 @@ var goGenerateLinter = &linter{ if err != nil && strings.TrimSpace(diffOutput) != "" { out.WriteWarningf("Uncommitted changes found after running go generate:") out.Write(strings.TrimSpace(diffOutput)) - // Reset repo state - if os.Getenv("CI") == "true" { - root.Run(run.Bash(ctx, "git add . && git reset HEAD --hard")).Wait() - } else { - out.WriteWarningf("Generated changes are left in the tree, skipping reseting state because not in CI") - } + out.WriteWarningf("Generated changes are left in the tree") } return err diff --git a/dev/sg/linters/linters.go b/dev/sg/linters/linters.go index e1a2888d3a70..8464e83ec512 100644 --- a/dev/sg/linters/linters.go +++ b/dev/sg/linters/linters.go @@ -39,7 +39,7 @@ var Targets = []Target{ Name: "go", Description: "Check go code for linting errors, forbidden imports, generated files, etc", Checks: []*linter{ - timeCheck(goGenerateLinter), + onlyLocal(goGenerateLinter), onlyLocal(goDBConnImport), onlyLocal(noLocalHost), timeCheck(lintGoDirectives()), diff --git a/dev/team/BUILD.bazel b/dev/team/BUILD.bazel index 141ff6c7a36a..14683f83e622 100644 --- a/dev/team/BUILD.bazel +++ b/dev/team/BUILD.bazel @@ -1,3 +1,4 @@ +load("//dev:go_mockgen.bzl", "go_mockgen") load("@io_bazel_rules_go//go:def.bzl", "go_library") go_library( @@ -16,3 +17,14 @@ go_library( "@org_golang_x_net//context/ctxhttp", ], ) + +go_mockgen( + name = "generate_mocks", + out = "mocks_temp.go", + manifests = [ + "//:mockgen.yaml", + "//:mockgen.test.yaml", + "//:mockgen.temp.yaml", + ], + deps = [":team"], +) diff --git a/dev/write_generated_to_source_files.bzl b/dev/write_generated_to_source_files.bzl index 94b6e81aa55c..ea5ee4c67285 100644 --- a/dev/write_generated_to_source_files.bzl +++ b/dev/write_generated_to_source_files.bzl @@ -1,8 +1,16 @@ -load("@aspect_bazel_lib//lib:directory_path.bzl", "make_directory_path") load("@aspect_bazel_lib//lib:copy_to_directory.bzl", "copy_to_directory") +load("@aspect_bazel_lib//lib:directory_path.bzl", "make_directory_path") load("@aspect_bazel_lib//lib:write_source_files.bzl", "write_source_files") -def write_generated_to_source_files(name, target, output_files, verbose_copy = False, **kwargs): +def write_generated_to_source_files(name, target, output_files, **kwargs): + """Function description. + + Args: + name: Name of the rule. + target: The target that generates files to copy. + output_files: A map of {dest: source} for files to copy. + **kwargs: Additional keyword arguments. + """ for dest, orig in output_files.items(): if dest == orig: fail("{} and {} must differ so we can detect source files needing to be regenerated".format(dest, orig)) diff --git a/gen.go b/gen.go index 4a5bc67bbbe2..ef4f4c91a24a 100644 --- a/gen.go +++ b/gen.go @@ -1,5 +1,5 @@ package sourcegraph // Keep these versions in sync with go.mod -//go:generate env GOBIN=$PWD/.bin GO111MODULE=on go install golang.org/x/tools/cmd/goimports@v0.1.10 +//go:generate env GOBIN=$PWD/.bin GO111MODULE=on go install golang.org/x/tools/cmd/goimports@v0.17.0 //go:generate go run github.com/derision-test/go-mockgen/cmd/go-mockgen@v1.3.8-0.20240105000756-fb9effb23d90 diff --git a/go.mod b/go.mod index 83ac9ac72ab5..1dfde82095e0 100644 --- a/go.mod +++ b/go.mod @@ -1,6 +1,6 @@ module github.com/sourcegraph/sourcegraph -go 1.21 +go 1.21.4 // Permanent replace directives // ============================ @@ -31,6 +31,8 @@ replace ( // These entries indicate temporary replace directives due to a pending pull request upstream // or issues with specific versions. replace ( + // Pending: https://github.com/derision-test/go-mockgen/pull/50 + github.com/derision-test/go-mockgen => github.com/strum355/go-mockgen v0.0.0-20240212213912-87f69a62e0d3 // Pending: https://github.com/ghodss/yaml/pull/65 github.com/ghodss/yaml => github.com/sourcegraph/yaml v1.0.1-0.20200714132230-56936252f152 // Dependency declares incorrect, old version of redigo, so we must override it: https://github.com/boj/redistore/blob/master/go.mod @@ -227,8 +229,6 @@ require ( golang.org/x/sync v0.6.0 golang.org/x/sys v0.16.0 golang.org/x/time v0.5.0 - // golang.org/x/tools should not be upgraded until https://github.com/bazelbuild/bazel-gazelle/issues/1579 - // is resolved. golang.org/x/tools v0.17.0 gonum.org/v1/gonum v0.13.0 google.golang.org/api v0.156.0 @@ -252,6 +252,7 @@ require ( github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.4.0 github.com/aws/constructs-go/constructs/v10 v10.2.69 github.com/aws/jsii-runtime-go v1.84.0 + github.com/bazelbuild/bazel-gazelle v0.35.0 github.com/dghubble/gologin/v2 v2.4.0 github.com/edsrzf/mmap-go v1.1.0 github.com/go-redis/redis/v8 v8.11.5 @@ -312,6 +313,7 @@ require ( github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.1.25 // indirect github.com/aws/aws-sdk-go-v2/service/ssooidc v1.14.5 // indirect github.com/bahlo/generic-list-go v0.2.0 // indirect + github.com/bazelbuild/buildtools v0.0.0-20231115204819-d4c9dccdfbb1 // indirect github.com/buger/jsonparser v1.1.1 // indirect github.com/cloudflare/circl v1.3.7 // indirect github.com/cockroachdb/apd/v2 v2.0.1 // indirect @@ -391,6 +393,7 @@ require ( go.opentelemetry.io/collector/featuregate v1.0.1 // indirect go.uber.org/goleak v1.3.0 // indirect golang.org/x/lint v0.0.0-20210508222113-6edffad5e616 // indirect + golang.org/x/tools/go/vcs v0.1.0-deprecated // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20240125205218-1f4bbc51befe // indirect gotest.tools/v3 v3.5.1 // indirect ) diff --git a/go.sum b/go.sum index 06e8532c1fc9..8de56cb49288 100644 --- a/go.sum +++ b/go.sum @@ -289,6 +289,12 @@ github.com/aymerick/douceur v0.2.0 h1:Mv+mAeH1Q+n9Fr+oyamOlAkUNPWPlA8PPGR0QAaYuP github.com/aymerick/douceur v0.2.0/go.mod h1:wlT5vV2O3h55X9m7iVYN0TBM0NH/MmbLnd30/FjWUq4= github.com/bahlo/generic-list-go v0.2.0 h1:5sz/EEAK+ls5wF+NeqDpk5+iNdMDXrh3z3nPnH1Wvgk= github.com/bahlo/generic-list-go v0.2.0/go.mod h1:2KvAjgMlE5NNynlg/5iLrrCCZ2+5xWbdbCW3pNTGyYg= +github.com/bazelbuild/bazel-gazelle v0.35.0 h1:Bvg+zEHWYwWrhJT4WxyvcU3y1DEJpT/XlPYEfIn9lUI= +github.com/bazelbuild/bazel-gazelle v0.35.0/go.mod h1:o2+s90f3w3U6jjw0gcdok0EJOfNK0AK/9RyVP7QkRDk= +github.com/bazelbuild/buildtools v0.0.0-20231115204819-d4c9dccdfbb1 h1:2Gc2Q6hVR1SJ8bBI9Ybzoggp8u/ED2WkM4MfvEIn9+c= +github.com/bazelbuild/buildtools v0.0.0-20231115204819-d4c9dccdfbb1/go.mod h1:689QdV3hBP7Vo9dJMmzhoYIyo/9iMhEmHkJcnaPRCbo= +github.com/bazelbuild/rules_go v0.44.0 h1:uJStI9o5obVWSwquy9WxKNWfZxf2sKA2rpEsX6x5RVM= +github.com/bazelbuild/rules_go v0.44.0/go.mod h1:z7Y8GZ90V4mwgYizbNbEQKmOmx93Q3Btcel4vX7pXoc= github.com/becheran/wildmatch-go v1.0.0 h1:mE3dGGkTmpKtT4Z+88t8RStG40yN9T+kFEGj2PZFSzA= github.com/becheran/wildmatch-go v1.0.0/go.mod h1:gbMvj0NtVdJ15Mg/mH9uxk2R1QCistMyU7d9KFzroX4= github.com/beevik/etree v1.1.0/go.mod h1:r8Aw8JqVegEf0w2fDnATrX9VpkMcyFeM0FhwO62wh+A= @@ -309,6 +315,8 @@ github.com/bits-and-blooms/bitset v1.8.0/go.mod h1:7hO7Gc7Pp1vODcmWvKMRA9BNmbv6a github.com/bketelsen/crypt v0.0.4/go.mod h1:aI6NrJ0pMGgvZKL1iVgXLnfIFJtfV+bKCoqOes/6LfM= github.com/bmatcuk/doublestar v1.3.4 h1:gPypJ5xD31uhX6Tf54sDPUOBXTqKH4c9aPY66CyQrS0= github.com/bmatcuk/doublestar v1.3.4/go.mod h1:wiQtGV+rzVYxB7WIlirSN++5HPtPlXEo9MEoZQC/PmE= +github.com/bmatcuk/doublestar/v4 v4.6.1 h1:FH9SifrbvJhnlQpztAx++wlkk70QBf0iBWDwNy7PA4I= +github.com/bmatcuk/doublestar/v4 v4.6.1/go.mod h1:xBQ8jztBU6kakFMg+8WGxn0c6z1fTSPVIjEY1Wr7jzc= github.com/boj/redistore v0.0.0-20180917114910-cd5dcc76aeff h1:RmdPFa+slIr4SCBg4st/l/vZWVe9QJKMXGO60Bxbe04= github.com/boj/redistore v0.0.0-20180917114910-cd5dcc76aeff/go.mod h1:+RTT1BOk5P97fT2CiHkbFQwkK3mjsFAP6zCYV2aXtjw= github.com/bradfitz/gomemcache v0.0.0-20170208213004-1952afaa557d/go.mod h1:PmM6Mmwb0LSuEubjR8N7PtNe1KxZLtOUHtbeikc5h60= @@ -421,8 +429,6 @@ github.com/dennwc/varint v1.0.0/go.mod h1:hnItb35rvZvJrbTALZtY/iQfDs48JKRG1RPpgz github.com/denverdino/aliyungo v0.0.0-20190125010748-a747050bb1ba/go.mod h1:dV8lFg6daOBZbT6/BDGIz6Y3WFGn8juu6G+CQ6LHtl0= github.com/derision-test/glock v1.0.0 h1:b6sViZG+Cm6QtdpqbfWEjaBVbzNPntIS4GzsxpS+CmM= github.com/derision-test/glock v1.0.0/go.mod h1:jKtLdBMrF+XQatqvg46wiWdDfDSSDjdhO4dOM2FX9H4= -github.com/derision-test/go-mockgen v1.3.8-0.20240105000756-fb9effb23d90 h1:Wo7vx8f7QdBT4jxfgTvs2t9VpyFlvvqzjXoE3m7MQBU= -github.com/derision-test/go-mockgen v1.3.8-0.20240105000756-fb9effb23d90/go.mod h1:/TXUePlhtHmDDCaDAi/a4g6xOHqMDz3Wf0r2NPGskB4= github.com/dghubble/gologin/v2 v2.4.0 h1:Ga0dxZ2C/8MrMtC0qFLIg1K7cVjZQWSbTj/MIgFqMAg= github.com/dghubble/gologin/v2 v2.4.0/go.mod h1:85FO9Je/O6n9/KdHTUtVDSaXQjR6Ducx7blL/3CUfnw= github.com/dghubble/sling v1.4.1 h1:AxjTubpVyozMvbBCtXcsWEyGGgUZutC5YGrfxPNVOcQ= @@ -1706,6 +1712,8 @@ github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/strum355/go-mockgen v0.0.0-20240212213912-87f69a62e0d3 h1:OqSMnVsZVdlzf2H7ZLZ7pHs5iGrkAK2CitRUVO/GUPs= +github.com/strum355/go-mockgen v0.0.0-20240212213912-87f69a62e0d3/go.mod h1:89jHE4KrusV6kCx9JPn5nkD7kfGD+4gtvp+ApO0lc/E= github.com/stvp/tempredis v0.0.0-20181119212430-b82af8480203 h1:QVqDTf3h2WHt08YuiTGPZLls0Wq99X9bWd0Q5ZSBesM= github.com/stvp/tempredis v0.0.0-20181119212430-b82af8480203/go.mod h1:oqN97ltKNihBbwlX8dLpwxCl3+HnXKV/R0e+sRLd9C8= github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= @@ -1936,6 +1944,7 @@ go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqe go.opentelemetry.io/proto/otlp v1.1.0 h1:2Di21piLrCqJ3U3eXGCTPHE9R8Nh+0uglSnOyxikMeI= go.opentelemetry.io/proto/otlp v1.1.0/go.mod h1:GpBHCBWiqvVLDqmHZsoMM3C5ySeKTC7ej/RNTae6MdY= go.starlark.net v0.0.0-20200306205701-8dd3e2ee1dd5/go.mod h1:nmDLcffg48OtT/PSW0Hg7FvpRQsQh5OSqIylirxKC7o= +go.starlark.net v0.0.0-20210223155950-e043a3d3c984/go.mod h1:t3mmBBPzAVvK0L0n1drDmrQsJ8FoIx4INCqVMTr/Zo0= go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/atomic v1.5.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= @@ -2354,6 +2363,8 @@ golang.org/x/tools v0.4.0/go.mod h1:UE5sM2OK9E/d67R0ANs2xJizIymRP5gJU295PvKXxjQ= golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= golang.org/x/tools v0.17.0 h1:FvmRgNOcs3kOa+T20R1uhfP9F6HgG2mfxDv1vrx1Htc= golang.org/x/tools v0.17.0/go.mod h1:xsh6VxdV005rRVaS6SSAf9oiAqljS7UZUacMZ8Bnsps= +golang.org/x/tools/go/vcs v0.1.0-deprecated h1:cOIJqWBl99H1dH5LWizPa+0ImeeJq3t3cJjaeOWUAL4= +golang.org/x/tools/go/vcs v0.1.0-deprecated/go.mod h1:zUrvATBAvEI9535oC0yWYsLsHIV4Z7g63sNPVMtuBy8= golang.org/x/xerrors v0.0.0-20190410155217-1f06c39b4373/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20190513163551-3ee3066db522/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= diff --git a/internal/auth/userpasswd/BUILD.bazel b/internal/auth/userpasswd/BUILD.bazel index 35cfc534697d..16d672f72303 100644 --- a/internal/auth/userpasswd/BUILD.bazel +++ b/internal/auth/userpasswd/BUILD.bazel @@ -1,3 +1,4 @@ +load("//dev:go_mockgen.bzl", "go_mockgen") load("//dev:go_defs.bzl", "go_test") load("@io_bazel_rules_go//go:def.bzl", "go_library") @@ -95,3 +96,14 @@ go_test( "@com_github_stretchr_testify//require", ], ) + +go_mockgen( + name = "generate_mocks", + out = "mocks_test.go", + manifests = [ + "//:mockgen.yaml", + "//:mockgen.test.yaml", + "//:mockgen.temp.yaml", + ], + deps = [":userpasswd"], +) diff --git a/internal/authz/BUILD.bazel b/internal/authz/BUILD.bazel index bfe58b272599..ff1e899a0551 100644 --- a/internal/authz/BUILD.bazel +++ b/internal/authz/BUILD.bazel @@ -1,3 +1,4 @@ +load("//dev:go_mockgen.bzl", "go_mockgen") load("//dev:go_defs.bzl", "go_test") load("@io_bazel_rules_go//go:def.bzl", "go_library") @@ -52,3 +53,14 @@ go_test( "@com_github_stretchr_testify//require", ], ) + +go_mockgen( + name = "generate_mocks", + out = "mocks_temp.go", + manifests = [ + "//:mockgen.yaml", + "//:mockgen.test.yaml", + "//:mockgen.temp.yaml", + ], + deps = [":authz"], +) diff --git a/internal/authz/providers/gerrit/BUILD.bazel b/internal/authz/providers/gerrit/BUILD.bazel index ce424f0adef1..1ee88096d520 100644 --- a/internal/authz/providers/gerrit/BUILD.bazel +++ b/internal/authz/providers/gerrit/BUILD.bazel @@ -1,3 +1,4 @@ +load("//dev:go_mockgen.bzl", "go_mockgen") load("//dev:go_defs.bzl", "go_test") load("@io_bazel_rules_go//go:def.bzl", "go_library") @@ -39,3 +40,14 @@ go_test( "@com_github_google_go_cmp//cmp", ], ) + +go_mockgen( + name = "generate_mocks", + out = "mocks_test.go", + manifests = [ + "//:mockgen.yaml", + "//:mockgen.test.yaml", + "//:mockgen.temp.yaml", + ], + deps = ["//internal/extsvc/gerrit"], +) diff --git a/internal/authz/providers/github/BUILD.bazel b/internal/authz/providers/github/BUILD.bazel index cdd0fc052cc2..6b5938e1b7e6 100644 --- a/internal/authz/providers/github/BUILD.bazel +++ b/internal/authz/providers/github/BUILD.bazel @@ -1,3 +1,4 @@ +load("//dev:go_mockgen.bzl", "go_mockgen") load("//dev:go_defs.bzl", "go_test") load("@io_bazel_rules_go//go:def.bzl", "go_library") @@ -61,3 +62,14 @@ go_test( "@com_github_stretchr_testify//require", ], ) + +go_mockgen( + name = "generate_mocks", + out = "mocks_test.go", + manifests = [ + "//:mockgen.yaml", + "//:mockgen.test.yaml", + "//:mockgen.temp.yaml", + ], + deps = [":github"], +) diff --git a/internal/authz/subrepoperms/BUILD.bazel b/internal/authz/subrepoperms/BUILD.bazel index 9e92624c12b9..9922bbd56cda 100644 --- a/internal/authz/subrepoperms/BUILD.bazel +++ b/internal/authz/subrepoperms/BUILD.bazel @@ -1,3 +1,4 @@ +load("//dev:go_mockgen.bzl", "go_mockgen") load("//dev:go_defs.bzl", "go_test") load("@io_bazel_rules_go//go:def.bzl", "go_library") @@ -38,3 +39,14 @@ go_test( "@com_github_stretchr_testify//require", ], ) + +go_mockgen( + name = "generate_mocks", + out = "mocks_temp.go", + manifests = [ + "//:mockgen.yaml", + "//:mockgen.test.yaml", + "//:mockgen.temp.yaml", + ], + deps = [":subrepoperms"], +) diff --git a/internal/batches/sources/BUILD.bazel b/internal/batches/sources/BUILD.bazel index 19ba863a8ba7..550a0add480b 100644 --- a/internal/batches/sources/BUILD.bazel +++ b/internal/batches/sources/BUILD.bazel @@ -1,3 +1,4 @@ +load("//dev:go_mockgen.bzl", "go_mockgen") load("//dev:go_defs.bzl", "go_test") load("@io_bazel_rules_go//go:def.bzl", "go_library") @@ -126,3 +127,20 @@ go_test( "@com_github_stretchr_testify//require", ], ) + +go_mockgen( + name = "generate_mocks", + out = "mocks_test.go", + manifests = [ + "//:mockgen.yaml", + "//:mockgen.test.yaml", + "//:mockgen.temp.yaml", + ], + deps = [ + ":sources", + "//internal/extsvc/azuredevops", + "//internal/extsvc/bitbucketcloud", + "//internal/extsvc/gerrit", + "//internal/gitserver", + ], +) diff --git a/internal/batches/syncer/BUILD.bazel b/internal/batches/syncer/BUILD.bazel index f0702bc4c839..8efba3067fa0 100644 --- a/internal/batches/syncer/BUILD.bazel +++ b/internal/batches/syncer/BUILD.bazel @@ -1,3 +1,4 @@ +load("//dev:go_mockgen.bzl", "go_mockgen") load("//dev:go_defs.bzl", "go_test") load("@io_bazel_rules_go//go:def.bzl", "go_library") @@ -61,3 +62,14 @@ go_test( "@com_github_stretchr_testify//assert", ], ) + +go_mockgen( + name = "generate_mocks", + out = "mocks_test.go", + manifests = [ + "//:mockgen.yaml", + "//:mockgen.test.yaml", + "//:mockgen.temp.yaml", + ], + deps = [":syncer"], +) diff --git a/internal/codeintel/autoindexing/BUILD.bazel b/internal/codeintel/autoindexing/BUILD.bazel index 6eee23340f26..ea8d34f9f29e 100644 --- a/internal/codeintel/autoindexing/BUILD.bazel +++ b/internal/codeintel/autoindexing/BUILD.bazel @@ -1,3 +1,4 @@ +load("//dev:go_mockgen.bzl", "go_mockgen") load("//dev:go_defs.bzl", "go_test") load("@io_bazel_rules_go//go:def.bzl", "go_library") @@ -64,3 +65,17 @@ go_test( "@com_github_google_go_cmp//cmp", ], ) + +go_mockgen( + name = "generate_mocks", + out = "mocks_test.go", + manifests = [ + "//:mockgen.yaml", + "//:mockgen.test.yaml", + "//:mockgen.temp.yaml", + ], + deps = [ + ":autoindexing", + "//internal/codeintel/autoindexing/internal/store", + ], +) diff --git a/internal/codeintel/autoindexing/internal/background/dependencies/BUILD.bazel b/internal/codeintel/autoindexing/internal/background/dependencies/BUILD.bazel index 77190742f065..69415376a236 100644 --- a/internal/codeintel/autoindexing/internal/background/dependencies/BUILD.bazel +++ b/internal/codeintel/autoindexing/internal/background/dependencies/BUILD.bazel @@ -1,3 +1,4 @@ +load("//dev:go_mockgen.bzl", "go_mockgen") load("//dev:go_defs.bzl", "go_test") load("@io_bazel_rules_go//go:def.bzl", "go_library") @@ -85,3 +86,19 @@ go_test( "@com_github_stretchr_testify//require", ], ) + +go_mockgen( + name = "generate_mocks", + out = "mocks_test.go", + manifests = [ + "//:mockgen.yaml", + "//:mockgen.test.yaml", + "//:mockgen.temp.yaml", + ], + deps = [ + ":dependencies", + "//internal/codeintel/autoindexing/internal/store", + "//internal/codeintel/uploads/shared", + "//internal/workerutil/dbworker/store", + ], +) diff --git a/internal/codeintel/autoindexing/internal/inference/BUILD.bazel b/internal/codeintel/autoindexing/internal/inference/BUILD.bazel index 3b2e0d5b54ea..480486f326e6 100644 --- a/internal/codeintel/autoindexing/internal/inference/BUILD.bazel +++ b/internal/codeintel/autoindexing/internal/inference/BUILD.bazel @@ -1,3 +1,4 @@ +load("//dev:go_mockgen.bzl", "go_mockgen") load("//dev:go_defs.bzl", "go_test") load("@io_bazel_rules_go//go:def.bzl", "go_library") @@ -79,3 +80,14 @@ go_test( "@org_golang_x_time//rate", ], ) + +go_mockgen( + name = "generate_mocks", + out = "mocks_test.go", + manifests = [ + "//:mockgen.yaml", + "//:mockgen.test.yaml", + "//:mockgen.temp.yaml", + ], + deps = [":inference"], +) diff --git a/internal/codeintel/codenav/BUILD.bazel b/internal/codeintel/codenav/BUILD.bazel index 07f43ee19886..48636e4e555d 100644 --- a/internal/codeintel/codenav/BUILD.bazel +++ b/internal/codeintel/codenav/BUILD.bazel @@ -1,3 +1,4 @@ +load("//dev:go_mockgen.bzl", "go_mockgen") load("//dev:go_defs.bzl", "go_test") load("@io_bazel_rules_go//go:def.bzl", "go_library") @@ -77,3 +78,17 @@ go_test( "@com_github_sourcegraph_scip//bindings/go/scip", ], ) + +go_mockgen( + name = "generate_mocks", + out = "mocks_test.go", + manifests = [ + "//:mockgen.yaml", + "//:mockgen.test.yaml", + "//:mockgen.temp.yaml", + ], + deps = [ + ":codenav", + "//internal/codeintel/codenav/internal/lsifstore", + ], +) diff --git a/internal/codeintel/codenav/transport/graphql/BUILD.bazel b/internal/codeintel/codenav/transport/graphql/BUILD.bazel index 022147d6d474..257cd50047dc 100644 --- a/internal/codeintel/codenav/transport/graphql/BUILD.bazel +++ b/internal/codeintel/codenav/transport/graphql/BUILD.bazel @@ -1,3 +1,4 @@ +load("//dev:go_mockgen.bzl", "go_mockgen") load("//dev:go_defs.bzl", "go_test") load("@io_bazel_rules_go//go:def.bzl", "go_library") @@ -67,3 +68,14 @@ go_test( "@com_github_derision_test_go_mockgen//testutil/require", ], ) + +go_mockgen( + name = "generate_mocks", + out = "mocks_test.go", + manifests = [ + "//:mockgen.yaml", + "//:mockgen.test.yaml", + "//:mockgen.temp.yaml", + ], + deps = [":graphql"], +) diff --git a/internal/codeintel/dependencies/internal/background/BUILD.bazel b/internal/codeintel/dependencies/internal/background/BUILD.bazel index 806d2b5bde5b..5f1974ac4999 100644 --- a/internal/codeintel/dependencies/internal/background/BUILD.bazel +++ b/internal/codeintel/dependencies/internal/background/BUILD.bazel @@ -1,3 +1,4 @@ +load("//dev:go_mockgen.bzl", "go_mockgen") load("//dev:go_defs.bzl", "go_test") load("@io_bazel_rules_go//go:def.bzl", "go_library") @@ -49,3 +50,14 @@ go_test( "@com_github_sourcegraph_log//logtest", ], ) + +go_mockgen( + name = "generate_mocks", + out = "mocks_test.go", + manifests = [ + "//:mockgen.yaml", + "//:mockgen.test.yaml", + "//:mockgen.temp.yaml", + ], + deps = [":background"], +) diff --git a/internal/codeintel/policies/BUILD.bazel b/internal/codeintel/policies/BUILD.bazel index 4510cdbda436..b6535898cf3e 100644 --- a/internal/codeintel/policies/BUILD.bazel +++ b/internal/codeintel/policies/BUILD.bazel @@ -1,3 +1,4 @@ +load("//dev:go_mockgen.bzl", "go_mockgen") load("//dev:go_defs.bzl", "go_test") load("@io_bazel_rules_go//go:def.bzl", "go_library") @@ -61,3 +62,17 @@ go_test( "@com_github_google_go_cmp//cmp", ], ) + +go_mockgen( + name = "generate_mocks", + out = "mocks_test.go", + manifests = [ + "//:mockgen.yaml", + "//:mockgen.test.yaml", + "//:mockgen.temp.yaml", + ], + deps = [ + ":policies", + "//internal/codeintel/policies/internal/store", + ], +) diff --git a/internal/codeintel/ranking/BUILD.bazel b/internal/codeintel/ranking/BUILD.bazel index 449a7396868c..f41e6226f754 100644 --- a/internal/codeintel/ranking/BUILD.bazel +++ b/internal/codeintel/ranking/BUILD.bazel @@ -1,5 +1,6 @@ load("//dev:go_defs.bzl", "go_test") load("@io_bazel_rules_go//go:def.bzl", "go_library") +load("//dev:go_mockgen.bzl", "go_mockgen") go_library( name = "ranking", @@ -54,3 +55,17 @@ go_test( "//schema", ], ) + +go_mockgen( + name = "generate_mocks", + out = "mocks_test.go", + manifests = [ + "//:mockgen.yaml", + "//:mockgen.test.yaml", + "//:mockgen.temp.yaml", + ], + deps = [ + "//internal/codeintel/ranking/internal/store", + "//internal/conf/conftypes", + ], +) diff --git a/internal/codeintel/uploads/BUILD.bazel b/internal/codeintel/uploads/BUILD.bazel index 5848777b3072..f2b9875bb042 100644 --- a/internal/codeintel/uploads/BUILD.bazel +++ b/internal/codeintel/uploads/BUILD.bazel @@ -1,3 +1,4 @@ +load("//dev:go_mockgen.bzl", "go_mockgen") load("//dev:go_defs.bzl", "go_test") load("@io_bazel_rules_go//go:def.bzl", "go_library") @@ -63,3 +64,19 @@ go_test( "@com_github_keegancsmith_sqlf//:sqlf", ], ) + +go_mockgen( + name = "generate_mocks", + out = "mocks_test.go", + manifests = [ + "//:mockgen.yaml", + "//:mockgen.test.yaml", + "//:mockgen.temp.yaml", + ], + deps = [ + ":uploads", + "//internal/codeintel/uploads/internal/lsifstore", + "//internal/codeintel/uploads/internal/store", + "//internal/workerutil/dbworker/store", + ], +) diff --git a/internal/codeintel/uploads/internal/background/backfiller/BUILD.bazel b/internal/codeintel/uploads/internal/background/backfiller/BUILD.bazel index 50190a754dbf..bd1e0ecb4aba 100644 --- a/internal/codeintel/uploads/internal/background/backfiller/BUILD.bazel +++ b/internal/codeintel/uploads/internal/background/backfiller/BUILD.bazel @@ -1,3 +1,4 @@ +load("//dev:go_mockgen.bzl", "go_mockgen") load("//dev:go_defs.bzl", "go_test") load("@io_bazel_rules_go//go:def.bzl", "go_library") @@ -41,3 +42,14 @@ go_test( "@com_github_google_go_cmp//cmp", ], ) + +go_mockgen( + name = "generate_mocks", + out = "mocks_test.go", + manifests = [ + "//:mockgen.yaml", + "//:mockgen.test.yaml", + "//:mockgen.temp.yaml", + ], + deps = ["//internal/codeintel/uploads/internal/store"], +) diff --git a/internal/codeintel/uploads/internal/background/expirer/BUILD.bazel b/internal/codeintel/uploads/internal/background/expirer/BUILD.bazel index 82227be00076..84a2f6abb1b1 100644 --- a/internal/codeintel/uploads/internal/background/expirer/BUILD.bazel +++ b/internal/codeintel/uploads/internal/background/expirer/BUILD.bazel @@ -1,3 +1,4 @@ +load("//dev:go_mockgen.bzl", "go_mockgen") load("//dev:go_defs.bzl", "go_test") load("@io_bazel_rules_go//go:def.bzl", "go_library") @@ -60,3 +61,19 @@ go_test( "@com_github_sourcegraph_scip//bindings/go/scip", ], ) + +go_mockgen( + name = "generate_mocks", + out = "mocks_test.go", + manifests = [ + "//:mockgen.yaml", + "//:mockgen.test.yaml", + "//:mockgen.temp.yaml", + ], + deps = [ + ":expirer", + "//internal/codeintel/uploads/internal/lsifstore", + "//internal/codeintel/uploads/internal/store", + "//internal/workerutil/dbworker/store", + ], +) diff --git a/internal/codeintel/uploads/internal/background/processor/BUILD.bazel b/internal/codeintel/uploads/internal/background/processor/BUILD.bazel index bd5b4ac7a02f..4fca908cbdf0 100644 --- a/internal/codeintel/uploads/internal/background/processor/BUILD.bazel +++ b/internal/codeintel/uploads/internal/background/processor/BUILD.bazel @@ -1,3 +1,4 @@ +load("//dev:go_mockgen.bzl", "go_mockgen") load("//dev:go_defs.bzl", "go_test") load("@io_bazel_rules_go//go:def.bzl", "go_library") @@ -79,3 +80,19 @@ go_test( "@org_golang_google_protobuf//proto", ], ) + +go_mockgen( + name = "generate_mocks", + out = "mocks_test.go", + manifests = [ + "//:mockgen.yaml", + "//:mockgen.test.yaml", + "//:mockgen.temp.yaml", + ], + deps = [ + ":processor", + "//internal/codeintel/uploads/internal/lsifstore", + "//internal/codeintel/uploads/internal/store", + "//internal/workerutil/dbworker/store", + ], +) diff --git a/internal/codeintel/uploads/transport/graphql/BUILD.bazel b/internal/codeintel/uploads/transport/graphql/BUILD.bazel index bece8425a3c7..57d2c77b4b8b 100644 --- a/internal/codeintel/uploads/transport/graphql/BUILD.bazel +++ b/internal/codeintel/uploads/transport/graphql/BUILD.bazel @@ -1,3 +1,4 @@ +load("//dev:go_mockgen.bzl", "go_mockgen") load("//dev:go_defs.bzl", "go_test") load("@io_bazel_rules_go//go:def.bzl", "go_library") @@ -55,3 +56,14 @@ go_test( embed = [":graphql"], deps = ["//internal/codeintel/uploads/shared"], ) + +go_mockgen( + name = "generate_mocks", + out = "mocks_test.go", + manifests = [ + "//:mockgen.yaml", + "//:mockgen.test.yaml", + "//:mockgen.temp.yaml", + ], + deps = [":graphql"], +) diff --git a/internal/codeintel/uploads/transport/http/BUILD.bazel b/internal/codeintel/uploads/transport/http/BUILD.bazel index 6cb2951968e4..b79f960fac13 100644 --- a/internal/codeintel/uploads/transport/http/BUILD.bazel +++ b/internal/codeintel/uploads/transport/http/BUILD.bazel @@ -1,3 +1,4 @@ +load("//dev:go_mockgen.bzl", "go_mockgen") load("//dev:go_defs.bzl", "go_test") load("@io_bazel_rules_go//go:def.bzl", "go_library") @@ -65,3 +66,14 @@ go_test( "@com_github_sourcegraph_log//logtest", ], ) + +go_mockgen( + name = "generate_mocks", + out = "mocks_test.go", + manifests = [ + "//:mockgen.yaml", + "//:mockgen.test.yaml", + "//:mockgen.temp.yaml", + ], + deps = ["//internal/uploadhandler"], +) diff --git a/internal/codeintel/uploads/transport/http/auth/BUILD.bazel b/internal/codeintel/uploads/transport/http/auth/BUILD.bazel index 839610d88c12..136dc5dae3ad 100644 --- a/internal/codeintel/uploads/transport/http/auth/BUILD.bazel +++ b/internal/codeintel/uploads/transport/http/auth/BUILD.bazel @@ -1,3 +1,4 @@ +load("//dev:go_mockgen.bzl", "go_mockgen") load("//dev:go_defs.bzl", "go_test") load("@io_bazel_rules_go//go:def.bzl", "go_library") @@ -45,3 +46,14 @@ go_test( "@com_github_tomnomnom_linkheader//:linkheader", ], ) + +go_mockgen( + name = "generate_mocks", + out = "mocks_test.go", + manifests = [ + "//:mockgen.yaml", + "//:mockgen.test.yaml", + "//:mockgen.temp.yaml", + ], + deps = [":auth"], +) diff --git a/internal/conf/BUILD.bazel b/internal/conf/BUILD.bazel index df905f170450..aadb9c59db67 100644 --- a/internal/conf/BUILD.bazel +++ b/internal/conf/BUILD.bazel @@ -1,3 +1,4 @@ +load("//dev:go_mockgen.bzl", "go_mockgen") load("//dev:go_defs.bzl", "go_test") load("@io_bazel_rules_go//go:def.bzl", "go_library") @@ -79,3 +80,14 @@ go_test( "@com_github_stretchr_testify//require", ], ) + +go_mockgen( + name = "generate_mocks", + out = "mocks_test.go", + manifests = [ + "//:mockgen.yaml", + "//:mockgen.test.yaml", + "//:mockgen.temp.yaml", + ], + deps = [":conf"], +) diff --git a/internal/database/basestore/BUILD.bazel b/internal/database/basestore/BUILD.bazel index d163576ba24b..b71748302de2 100644 --- a/internal/database/basestore/BUILD.bazel +++ b/internal/database/basestore/BUILD.bazel @@ -1,3 +1,4 @@ +load("//dev:go_mockgen.bzl", "go_mockgen") load("//dev:go_defs.bzl", "go_test") load("@io_bazel_rules_go//go:def.bzl", "go_library") @@ -50,3 +51,14 @@ go_test( "@org_golang_x_sync//errgroup", ], ) + +go_mockgen( + name = "generate_mocks", + out = "mocks_test.go", + manifests = [ + "//:mockgen.yaml", + "//:mockgen.test.yaml", + "//:mockgen.temp.yaml", + ], + deps = [":basestore"], +) diff --git a/internal/database/dbmocks/BUILD.bazel b/internal/database/dbmocks/BUILD.bazel index 822b347811c8..f3cbae91dfdc 100644 --- a/internal/database/dbmocks/BUILD.bazel +++ b/internal/database/dbmocks/BUILD.bazel @@ -1,3 +1,4 @@ +load("//dev:go_mockgen.bzl", "go_mockgen") load("@io_bazel_rules_go//go:def.bzl", "go_library") go_library( @@ -28,3 +29,14 @@ go_library( "@com_github_sourcegraph_zoekt//:zoekt", ], ) + +go_mockgen( + name = "generate_mocks", + out = "mocks_temp.go", + manifests = [ + "//:mockgen.yaml", + "//:mockgen.test.yaml", + "//:mockgen.temp.yaml", + ], + deps = ["//internal/database"], +) diff --git a/internal/database/migration/runner/BUILD.bazel b/internal/database/migration/runner/BUILD.bazel index 705971aec0ec..6eba8b09b1d3 100644 --- a/internal/database/migration/runner/BUILD.bazel +++ b/internal/database/migration/runner/BUILD.bazel @@ -1,3 +1,4 @@ +load("//dev:go_mockgen.bzl", "go_mockgen") load("//dev:go_defs.bzl", "go_test") load("@io_bazel_rules_go//go:def.bzl", "go_library") @@ -47,3 +48,14 @@ go_test( "@com_github_sourcegraph_log//logtest", ], ) + +go_mockgen( + name = "generate_mocks", + out = "mocks_test.go", + manifests = [ + "//:mockgen.yaml", + "//:mockgen.test.yaml", + "//:mockgen.temp.yaml", + ], + deps = [":runner"], +) diff --git a/internal/embeddings/BUILD.bazel b/internal/embeddings/BUILD.bazel index e716228e1bea..1f1ff26c8d65 100644 --- a/internal/embeddings/BUILD.bazel +++ b/internal/embeddings/BUILD.bazel @@ -1,3 +1,4 @@ +load("//dev:go_mockgen.bzl", "go_mockgen") load("//dev:go_defs.bzl", "go_test") load("@io_bazel_rules_go//go:def.bzl", "go_library") @@ -89,3 +90,14 @@ go_test( "@com_github_stretchr_testify//require", ], ) + +go_mockgen( + name = "generate_mocks", + out = "mocks_temp.go", + manifests = [ + "//:mockgen.yaml", + "//:mockgen.test.yaml", + "//:mockgen.temp.yaml", + ], + deps = [":embeddings"], +) diff --git a/internal/embeddings/background/repo/BUILD.bazel b/internal/embeddings/background/repo/BUILD.bazel index b16751a8dd1b..51f8a2f5dcbc 100644 --- a/internal/embeddings/background/repo/BUILD.bazel +++ b/internal/embeddings/background/repo/BUILD.bazel @@ -1,3 +1,4 @@ +load("//dev:go_mockgen.bzl", "go_mockgen") load("//dev:go_defs.bzl", "go_test") load("@io_bazel_rules_go//go:def.bzl", "go_library") @@ -50,3 +51,14 @@ go_test( "@com_github_stretchr_testify//require", ], ) + +go_mockgen( + name = "generate_mocks", + out = "mocks_temp.go", + manifests = [ + "//:mockgen.yaml", + "//:mockgen.test.yaml", + "//:mockgen.temp.yaml", + ], + deps = [":repo"], +) diff --git a/internal/embeddings/embed/BUILD.bazel b/internal/embeddings/embed/BUILD.bazel index 2c4163cb6cf0..68e3c5c5c0f8 100644 --- a/internal/embeddings/embed/BUILD.bazel +++ b/internal/embeddings/embed/BUILD.bazel @@ -1,3 +1,4 @@ +load("//dev:go_mockgen.bzl", "go_mockgen") load("//dev:go_defs.bzl", "go_test") load("@io_bazel_rules_go//go:def.bzl", "go_library") @@ -55,3 +56,14 @@ go_test( "@com_github_stretchr_testify//require", ], ) + +go_mockgen( + name = "generate_mocks", + out = "mocks_test.go", + manifests = [ + "//:mockgen.yaml", + "//:mockgen.test.yaml", + "//:mockgen.temp.yaml", + ], + deps = [":embed"], +) diff --git a/internal/executor/store/BUILD.bazel b/internal/executor/store/BUILD.bazel index 6b175d570612..1b8a58bff637 100644 --- a/internal/executor/store/BUILD.bazel +++ b/internal/executor/store/BUILD.bazel @@ -1,3 +1,4 @@ +load("//dev:go_mockgen.bzl", "go_mockgen") load("//dev:go_defs.bzl", "go_test") load("@io_bazel_rules_go//go:def.bzl", "go_library") @@ -43,3 +44,14 @@ go_test( "@com_github_stretchr_testify//require", ], ) + +go_mockgen( + name = "generate_mocks", + out = "mocks_temp.go", + manifests = [ + "//:mockgen.yaml", + "//:mockgen.test.yaml", + "//:mockgen.temp.yaml", + ], + deps = [":store"], +) diff --git a/internal/featureflag/BUILD.bazel b/internal/featureflag/BUILD.bazel index 710f0eeff231..2dbdd2664459 100644 --- a/internal/featureflag/BUILD.bazel +++ b/internal/featureflag/BUILD.bazel @@ -1,3 +1,4 @@ +load("//dev:go_mockgen.bzl", "go_mockgen") load("//dev:go_defs.bzl", "go_test") load("@io_bazel_rules_go//go:def.bzl", "go_library") @@ -40,3 +41,14 @@ go_test( "@com_github_stretchr_testify//require", ], ) + +go_mockgen( + name = "generate_mocks", + out = "mocks_test.go", + manifests = [ + "//:mockgen.yaml", + "//:mockgen.test.yaml", + "//:mockgen.temp.yaml", + ], + deps = [":featureflag"], +) diff --git a/internal/github_apps/store/BUILD.bazel b/internal/github_apps/store/BUILD.bazel index 8c0d97053997..681f6fbf7140 100644 --- a/internal/github_apps/store/BUILD.bazel +++ b/internal/github_apps/store/BUILD.bazel @@ -1,3 +1,4 @@ +load("//dev:go_mockgen.bzl", "go_mockgen") load("//dev:go_defs.bzl", "go_test") load("@io_bazel_rules_go//go:def.bzl", "go_library") @@ -44,3 +45,14 @@ go_test( "@com_github_stretchr_testify//require", ], ) + +go_mockgen( + name = "generate_mocks", + out = "mocks_temp.go", + manifests = [ + "//:mockgen.yaml", + "//:mockgen.test.yaml", + "//:mockgen.temp.yaml", + ], + deps = [":store"], +) diff --git a/internal/gitserver/BUILD.bazel b/internal/gitserver/BUILD.bazel index 4c33abb3d700..d5db52c183ab 100644 --- a/internal/gitserver/BUILD.bazel +++ b/internal/gitserver/BUILD.bazel @@ -1,3 +1,4 @@ +load("//dev:go_mockgen.bzl", "go_mockgen") load("//dev:go_defs.bzl", "go_test") load("@io_bazel_rules_go//go:def.bzl", "go_library") @@ -93,3 +94,14 @@ go_test( "@org_golang_google_grpc//status", ], ) + +go_mockgen( + name = "generate_mocks", + out = "mock.go", + manifests = [ + "//:mockgen.yaml", + "//:mockgen.test.yaml", + "//:mockgen.temp.yaml", + ], + deps = ["//internal/gitserver/v1:gitserver"], +) diff --git a/internal/goroutine/BUILD.bazel b/internal/goroutine/BUILD.bazel index 112ac67544e9..7ca6653c91ef 100644 --- a/internal/goroutine/BUILD.bazel +++ b/internal/goroutine/BUILD.bazel @@ -1,3 +1,4 @@ +load("//dev:go_mockgen.bzl", "go_mockgen") load("//dev:go_defs.bzl", "go_test") load("@io_bazel_rules_go//go:def.bzl", "go_library") @@ -38,3 +39,14 @@ go_test( "@com_github_derision_test_glock//:glock", ], ) + +go_mockgen( + name = "generate_mocks", + out = "mocks_test.go", + manifests = [ + "//:mockgen.yaml", + "//:mockgen.test.yaml", + "//:mockgen.temp.yaml", + ], + deps = [":goroutine"], +) diff --git a/internal/insights/background/BUILD.bazel b/internal/insights/background/BUILD.bazel index 54aced864c7f..65bb7f59db25 100644 --- a/internal/insights/background/BUILD.bazel +++ b/internal/insights/background/BUILD.bazel @@ -1,3 +1,4 @@ +load("//dev:go_mockgen.bzl", "go_mockgen") load("//dev:go_defs.bzl", "go_test") load("@io_bazel_rules_go//go:def.bzl", "go_library") @@ -80,3 +81,14 @@ go_test( "@com_github_sourcegraph_log//logtest", ], ) + +go_mockgen( + name = "generate_mocks", + out = "mocks_test.go", + manifests = [ + "//:mockgen.yaml", + "//:mockgen.test.yaml", + "//:mockgen.temp.yaml", + ], + deps = [":background"], +) diff --git a/internal/insights/discovery/BUILD.bazel b/internal/insights/discovery/BUILD.bazel index 06dd04c1b868..9c179c734686 100644 --- a/internal/insights/discovery/BUILD.bazel +++ b/internal/insights/discovery/BUILD.bazel @@ -1,3 +1,4 @@ +load("//dev:go_mockgen.bzl", "go_mockgen") load("//dev:go_defs.bzl", "go_test") load("@io_bazel_rules_go//go:def.bzl", "go_library") @@ -55,3 +56,14 @@ go_test( "@com_github_stretchr_testify//require", ], ) + +go_mockgen( + name = "generate_mocks", + out = "mocks_temp.go", + manifests = [ + "//:mockgen.yaml", + "//:mockgen.test.yaml", + "//:mockgen.temp.yaml", + ], + deps = [":discovery"], +) diff --git a/internal/insights/scheduler/BUILD.bazel b/internal/insights/scheduler/BUILD.bazel index e35d724b6316..710a890c3172 100644 --- a/internal/insights/scheduler/BUILD.bazel +++ b/internal/insights/scheduler/BUILD.bazel @@ -1,3 +1,4 @@ +load("//dev:go_mockgen.bzl", "go_mockgen") load("//dev:go_defs.bzl", "go_test") load("@io_bazel_rules_go//go:def.bzl", "go_library") @@ -84,3 +85,14 @@ go_test( "@com_github_stretchr_testify//require", ], ) + +go_mockgen( + name = "generate_mocks", + out = "mocks_test.go", + manifests = [ + "//:mockgen.yaml", + "//:mockgen.test.yaml", + "//:mockgen.temp.yaml", + ], + deps = [":scheduler"], +) diff --git a/internal/insights/store/BUILD.bazel b/internal/insights/store/BUILD.bazel index 29e31265b409..feccff996f85 100644 --- a/internal/insights/store/BUILD.bazel +++ b/internal/insights/store/BUILD.bazel @@ -1,3 +1,4 @@ +load("//dev:go_mockgen.bzl", "go_mockgen") load("//dev:go_defs.bzl", "go_test") load("@io_bazel_rules_go//go:def.bzl", "go_library") @@ -68,3 +69,14 @@ go_test( "@io_k8s_apimachinery//pkg/util/rand", ], ) + +go_mockgen( + name = "generate_mocks", + out = "mocks_temp.go", + manifests = [ + "//:mockgen.yaml", + "//:mockgen.test.yaml", + "//:mockgen.temp.yaml", + ], + deps = [":store"], +) diff --git a/internal/metrics/store/BUILD.bazel b/internal/metrics/store/BUILD.bazel index fe2d2a872e83..36f46cafdacb 100644 --- a/internal/metrics/store/BUILD.bazel +++ b/internal/metrics/store/BUILD.bazel @@ -1,3 +1,4 @@ +load("//dev:go_mockgen.bzl", "go_mockgen") load("@io_bazel_rules_go//go:def.bzl", "go_library") go_library( @@ -17,3 +18,14 @@ go_library( "@com_github_prometheus_common//expfmt", ], ) + +go_mockgen( + name = "generate_mocks", + out = "mocks_temp.go", + manifests = [ + "//:mockgen.yaml", + "//:mockgen.test.yaml", + "//:mockgen.temp.yaml", + ], + deps = [":store"], +) diff --git a/internal/oobmigration/BUILD.bazel b/internal/oobmigration/BUILD.bazel index 9aa2beacff54..b95e1412f2bf 100644 --- a/internal/oobmigration/BUILD.bazel +++ b/internal/oobmigration/BUILD.bazel @@ -1,3 +1,4 @@ +load("//dev:go_mockgen.bzl", "go_mockgen") load("//dev:go_defs.bzl", "go_test") load("@io_bazel_rules_go//go:def.bzl", "go_library") @@ -73,3 +74,14 @@ go_test( "@com_github_sourcegraph_log//logtest", ], ) + +go_mockgen( + name = "generate_mocks", + out = "mocks_test.go", + manifests = [ + "//:mockgen.yaml", + "//:mockgen.test.yaml", + "//:mockgen.temp.yaml", + ], + deps = [":oobmigration"], +) diff --git a/internal/redispool/BUILD.bazel b/internal/redispool/BUILD.bazel index c7b577fed4e1..00226547adf5 100644 --- a/internal/redispool/BUILD.bazel +++ b/internal/redispool/BUILD.bazel @@ -1,3 +1,4 @@ +load("//dev:go_mockgen.bzl", "go_mockgen") load("//dev:go_defs.bzl", "go_test") load("@io_bazel_rules_go//go:def.bzl", "go_library") @@ -42,3 +43,14 @@ go_test( "@com_github_stretchr_testify//assert", ], ) + +go_mockgen( + name = "generate_mocks", + out = "mocks.go", + manifests = [ + "//:mockgen.yaml", + "//:mockgen.test.yaml", + "//:mockgen.temp.yaml", + ], + deps = [":redispool"], +) diff --git a/internal/repos/BUILD.bazel b/internal/repos/BUILD.bazel index ff77ec91d834..0b6e8a57d990 100644 --- a/internal/repos/BUILD.bazel +++ b/internal/repos/BUILD.bazel @@ -1,3 +1,4 @@ +load("//dev:go_mockgen.bzl", "go_mockgen") load("//dev:go_defs.bzl", "go_test") load("@io_bazel_rules_go//go:def.bzl", "go_library") @@ -199,3 +200,14 @@ go_test( "@org_golang_x_time//rate", ], ) + +go_mockgen( + name = "generate_mocks", + out = "mocks_temp.go", + manifests = [ + "//:mockgen.yaml", + "//:mockgen.test.yaml", + "//:mockgen.temp.yaml", + ], + deps = [":repos"], +) diff --git a/internal/search/client/BUILD.bazel b/internal/search/client/BUILD.bazel index 479a471311e0..cf4d3e82804a 100644 --- a/internal/search/client/BUILD.bazel +++ b/internal/search/client/BUILD.bazel @@ -1,3 +1,4 @@ +load("//dev:go_mockgen.bzl", "go_mockgen") load("//dev:go_defs.bzl", "go_test") load("@io_bazel_rules_go//go:def.bzl", "go_library") @@ -53,3 +54,14 @@ go_test( "@com_github_stretchr_testify//require", ], ) + +go_mockgen( + name = "generate_mocks", + out = "mocks_temp.go", + manifests = [ + "//:mockgen.yaml", + "//:mockgen.test.yaml", + "//:mockgen.temp.yaml", + ], + deps = [":client"], +) diff --git a/internal/search/job/mockjob/BUILD.bazel b/internal/search/job/mockjob/BUILD.bazel index 954d1ecc1f7d..ed99f731a64f 100644 --- a/internal/search/job/mockjob/BUILD.bazel +++ b/internal/search/job/mockjob/BUILD.bazel @@ -1,3 +1,4 @@ +load("//dev:go_mockgen.bzl", "go_mockgen") load("@io_bazel_rules_go//go:def.bzl", "go_library") go_library( @@ -12,3 +13,14 @@ go_library( "@io_opentelemetry_go_otel//attribute", ], ) + +go_mockgen( + name = "generate_mocks", + out = "mocks_temp.go", + manifests = [ + "//:mockgen.yaml", + "//:mockgen.test.yaml", + "//:mockgen.temp.yaml", + ], + deps = ["//internal/search/job"], +) diff --git a/internal/search/repos/BUILD.bazel b/internal/search/repos/BUILD.bazel index e61de8945d9b..f8903bb31e56 100644 --- a/internal/search/repos/BUILD.bazel +++ b/internal/search/repos/BUILD.bazel @@ -1,3 +1,4 @@ +load("//dev:go_mockgen.bzl", "go_mockgen") load("//dev:go_defs.bzl", "go_test") load("@io_bazel_rules_go//go:def.bzl", "go_library") @@ -82,3 +83,14 @@ go_test( "@com_github_stretchr_testify//require", ], ) + +go_mockgen( + name = "generate_mocks", + out = "mocks_test.go", + manifests = [ + "//:mockgen.yaml", + "//:mockgen.test.yaml", + "//:mockgen.temp.yaml", + ], + deps = ["@com_github_sourcegraph_zoekt//:zoekt"], +) diff --git a/internal/search/symbol/BUILD.bazel b/internal/search/symbol/BUILD.bazel index 7df76a51b260..5f37f9998cd0 100644 --- a/internal/search/symbol/BUILD.bazel +++ b/internal/search/symbol/BUILD.bazel @@ -1,3 +1,4 @@ +load("//dev:go_mockgen.bzl", "go_mockgen") load("//dev:go_defs.bzl", "go_test") load("@io_bazel_rules_go//go:def.bzl", "go_library") @@ -46,3 +47,14 @@ go_test( "@com_github_stretchr_testify//assert", ], ) + +go_mockgen( + name = "generate_mocks", + out = "mocks_test.go", + manifests = [ + "//:mockgen.yaml", + "//:mockgen.test.yaml", + "//:mockgen.temp.yaml", + ], + deps = ["@com_github_sourcegraph_zoekt//:zoekt"], +) diff --git a/internal/telemetry/telemetrytest/BUILD.bazel b/internal/telemetry/telemetrytest/BUILD.bazel index 6bb587938891..2c9478096230 100644 --- a/internal/telemetry/telemetrytest/BUILD.bazel +++ b/internal/telemetry/telemetrytest/BUILD.bazel @@ -1,3 +1,4 @@ +load("//dev:go_mockgen.bzl", "go_mockgen") load("//dev:go_defs.bzl", "go_test") load("@io_bazel_rules_go//go:def.bzl", "go_library") @@ -28,3 +29,14 @@ go_test( "@com_github_stretchr_testify//require", ], ) + +go_mockgen( + name = "generate_mocks", + out = "mocks.go", + manifests = [ + "//:mockgen.yaml", + "//:mockgen.test.yaml", + "//:mockgen.temp.yaml", + ], + deps = ["//internal/telemetry"], +) diff --git a/internal/uploadhandler/BUILD.bazel b/internal/uploadhandler/BUILD.bazel index 657cab16493d..25493b1400f8 100644 --- a/internal/uploadhandler/BUILD.bazel +++ b/internal/uploadhandler/BUILD.bazel @@ -1,3 +1,4 @@ +load("//dev:go_mockgen.bzl", "go_mockgen") load("//dev:go_defs.bzl", "go_test") load("@io_bazel_rules_go//go:def.bzl", "go_library") @@ -44,3 +45,14 @@ go_test( "@com_github_sourcegraph_log//logtest", ], ) + +go_mockgen( + name = "generate_mocks", + out = "mocks_test.go", + manifests = [ + "//:mockgen.yaml", + "//:mockgen.test.yaml", + "//:mockgen.temp.yaml", + ], + deps = [":uploadhandler"], +) diff --git a/internal/uploadstore/BUILD.bazel b/internal/uploadstore/BUILD.bazel index 4c6c1efc3463..733ea2026423 100644 --- a/internal/uploadstore/BUILD.bazel +++ b/internal/uploadstore/BUILD.bazel @@ -1,3 +1,4 @@ +load("//dev:go_mockgen.bzl", "go_mockgen") load("//dev:go_defs.bzl", "go_test") load("@io_bazel_rules_go//go:def.bzl", "go_library") @@ -64,3 +65,14 @@ go_test( "@org_golang_google_api//iterator", ], ) + +go_mockgen( + name = "generate_mocks", + out = "mocks_test.go", + manifests = [ + "//:mockgen.yaml", + "//:mockgen.test.yaml", + "//:mockgen.temp.yaml", + ], + deps = [":uploadstore"], +) diff --git a/internal/uploadstore/mocks/BUILD.bazel b/internal/uploadstore/mocks/BUILD.bazel index d2797fc6f498..20693480af04 100644 --- a/internal/uploadstore/mocks/BUILD.bazel +++ b/internal/uploadstore/mocks/BUILD.bazel @@ -1,3 +1,4 @@ +load("//dev:go_mockgen.bzl", "go_mockgen") load("@io_bazel_rules_go//go:def.bzl", "go_library") go_library( @@ -10,3 +11,14 @@ go_library( "//lib/iterator", ], ) + +go_mockgen( + name = "generate_mocks", + out = "mocks_temp.go", + manifests = [ + "//:mockgen.yaml", + "//:mockgen.test.yaml", + "//:mockgen.temp.yaml", + ], + deps = ["//internal/uploadstore"], +) diff --git a/internal/workerutil/BUILD.bazel b/internal/workerutil/BUILD.bazel index 26458fdc4d87..2965111b1c65 100644 --- a/internal/workerutil/BUILD.bazel +++ b/internal/workerutil/BUILD.bazel @@ -1,3 +1,4 @@ +load("//dev:go_mockgen.bzl", "go_mockgen") load("//dev:go_defs.bzl", "go_test") load("@io_bazel_rules_go//go:def.bzl", "go_library") @@ -47,3 +48,14 @@ go_test( "@com_github_sourcegraph_log//logtest", ], ) + +go_mockgen( + name = "generate_mocks", + out = "mocks_test.go", + manifests = [ + "//:mockgen.yaml", + "//:mockgen.test.yaml", + "//:mockgen.temp.yaml", + ], + deps = [":workerutil"], +) diff --git a/internal/workerutil/dbworker/store/mocks/BUILD.bazel b/internal/workerutil/dbworker/store/mocks/BUILD.bazel index aa8f94be2a49..a94860fc57ae 100644 --- a/internal/workerutil/dbworker/store/mocks/BUILD.bazel +++ b/internal/workerutil/dbworker/store/mocks/BUILD.bazel @@ -1,3 +1,4 @@ +load("//dev:go_mockgen.bzl", "go_mockgen") load("@io_bazel_rules_go//go:def.bzl", "go_library") go_library( @@ -13,3 +14,14 @@ go_library( "@com_github_keegancsmith_sqlf//:sqlf", ], ) + +go_mockgen( + name = "generate_mocks", + out = "mocks_temp.go", + manifests = [ + "//:mockgen.yaml", + "//:mockgen.test.yaml", + "//:mockgen.temp.yaml", + ], + deps = ["//internal/workerutil/dbworker/store"], +) diff --git a/lib/background/BUILD.bazel b/lib/background/BUILD.bazel index f53dbe5af2c4..212100a0c042 100644 --- a/lib/background/BUILD.bazel +++ b/lib/background/BUILD.bazel @@ -1,3 +1,4 @@ +load("//dev:go_mockgen.bzl", "go_mockgen") load("@io_bazel_rules_go//go:def.bzl", "go_library") load("//dev:go_defs.bzl", "go_test") @@ -20,3 +21,14 @@ go_test( ], embed = [":background"], ) + +go_mockgen( + name = "generate_mocks", + out = "mocks_test.go", + manifests = [ + "//:mockgen.yaml", + "//:mockgen.test.yaml", + "//:mockgen.temp.yaml", + ], + deps = [":background"], +) diff --git a/mockgen.test.yaml b/mockgen.test.yaml index 63cb22010341..f159d3dedf62 100644 --- a/mockgen.test.yaml +++ b/mockgen.test.yaml @@ -228,7 +228,7 @@ - path: github.com/sourcegraph/sourcegraph/internal/codeintel/uploads/internal/store interfaces: - Store - - path: internal/codeintel/uploads + - path: github.com/sourcegraph/sourcegraph/internal/codeintel/uploads interfaces: - RepoStore - path: github.com/sourcegraph/sourcegraph/internal/codeintel/uploads/internal/lsifstore diff --git a/mockgen.yaml b/mockgen.yaml index a5a24e9e3372..eb7808f24c1f 100644 --- a/mockgen.yaml +++ b/mockgen.yaml @@ -20,6 +20,8 @@ include-config-paths: - mockgen.test.yaml - mockgen.temp.yaml +# some of these values are ignored by bazel (such as force and goimports) as theyre not +# transferable or dont make sense force: true goimports: ./.bin/goimports file-prefix: | diff --git a/third_party/com_github_strum355_gomockgen/BUILD.bazel b/third_party/com_github_strum355_gomockgen/BUILD.bazel new file mode 100644 index 000000000000..af49d1ebbf8f --- /dev/null +++ b/third_party/com_github_strum355_gomockgen/BUILD.bazel @@ -0,0 +1 @@ +exports_files(glob(["*"])) diff --git a/third_party/com_github_strum355_gomockgen/debug.patch b/third_party/com_github_strum355_gomockgen/debug.patch new file mode 100644 index 000000000000..e69de29bb2d1