sourcegraph/cmd/gitserver/internal/integration_tests/BUILD.bazel
Noah S-C 19d9cfc73b
bazel: native go-mockgen in Bazel (#60386)
Adds a new:
- gazelle generator
- rule + rule targets + catchall target
for generating go-mockgen mocks & testing for their being up-to-date.

Each go_mockgen macro invocation adds targets for generating mocks, copying to the source tree, as well as testing whether the current source tree mocks are up-to-date.

How to use this: `bazel run //dev:go_mockgen` for the catch-all, or `bazel run //some/target:generate_mocks` for an individual package, and `bazel test //some/target:generate_mocks_tests` to test for up-to-date-ness. There is no catch-all for testing

This currently uses a fork of go-mockgen, with an open PR for upstream here: https://github.com/derision-test/go-mockgen/pull/50.

Closes https://github.com/sourcegraph/sourcegraph/issues/60099

## Test plan

Extensive testing during development, including the following cases:
- Deleting a generated file and its entry in a go_library/go_test `srcs` attribute list and then re-running `sg bazel configure`
- Adding a non-existent output directory to mockgen.test.yaml and running the bash one-liner emitted to prepare the workspace for rerunning `sg bazel configure`

The existing config tests a lot of existing paths anyway (creating mocks for a 3rd party library's interface, entries for a given output file in >1 config file etc)
2024-02-16 13:26:48 +00:00

95 lines
2.9 KiB
Python

load("//dev:go_mockgen.bzl", "go_mockgen")
load("@io_bazel_rules_go//go:def.bzl", "go_library")
load("//dev:go_defs.bzl", "go_test")
go_library(
name = "integration_tests",
srcs = [
"mocks.go",
"test_utils.go",
],
importpath = "github.com/sourcegraph/sourcegraph/cmd/gitserver/internal/integration_tests",
visibility = ["//cmd/gitserver:__subpackages__"],
deps = [
"//cmd/gitserver/internal",
"//cmd/gitserver/internal/common",
"//cmd/gitserver/internal/git",
"//cmd/gitserver/internal/git/gitcli",
"//cmd/gitserver/internal/vcssyncer",
"//internal/api",
"//internal/database/dbmocks",
"//internal/extsvc",
"//internal/gitserver",
"//internal/gitserver/v1:gitserver",
"//internal/grpc",
"//internal/grpc/defaults",
"//internal/ratelimit",
"//internal/types",
"//internal/wrexec",
"@com_github_sourcegraph_log//:log",
"@com_github_sourcegraph_log//logtest",
"@org_golang_x_time//rate",
],
)
go_test(
name = "integration_tests_test",
timeout = "short",
srcs = [
"clone_test.go",
"main_test.go",
"object_test.go",
"resolverevisions_test.go",
"tree_test.go",
],
embed = [":integration_tests"],
# This test loads coursier as a side effect, so we ensure the
# path is sandboxed properly.
env = {"COURSIER_CACHE_DIR": "/tmp"},
deps = [
"//cmd/gitserver/internal",
"//cmd/gitserver/internal/common",
"//cmd/gitserver/internal/git",
"//cmd/gitserver/internal/git/gitcli",
"//cmd/gitserver/internal/gitserverfs",
"//cmd/gitserver/internal/perforce",
"//cmd/gitserver/internal/vcssyncer",
"//internal/actor",
"//internal/api",
"//internal/authz",
"//internal/authz/subrepoperms",
"//internal/conf",
"//internal/database/dbmocks",
"//internal/extsvc",
"//internal/gitserver",
"//internal/gitserver/gitdomain",
"//internal/gitserver/v1:gitserver",
"//internal/grpc",
"//internal/grpc/defaults",
"//internal/observation",
"//internal/ratelimit",
"//internal/types",
"//internal/vcs",
"//internal/wrexec",
"//schema",
"@com_github_derision_test_go_mockgen//testutil/assert",
"@com_github_derision_test_go_mockgen//testutil/require",
"@com_github_sourcegraph_log//:log",
"@com_github_sourcegraph_log//logtest",
"@com_github_stretchr_testify//assert",
"@com_github_stretchr_testify//require",
"@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"],
)