mirror of
https://github.com/sourcegraph/sourcegraph.git
synced 2026-02-06 16:11:57 +00:00
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)
31 lines
1.5 KiB
YAML
31 lines
1.5 KiB
YAML
# To generate a new mock struct from an interface definition, add a new entry to one of
|
|
# the lists in a file below (or create a new file if the current categories do not fit).
|
|
#
|
|
# Each item will need to supply the following pieces of information:
|
|
#
|
|
# (1) First, you will need to give a target filename
|
|
# (2) Second, you will need to supply a target import path and interface name. If the
|
|
# set of interface definitions you are mocking are all from the same package, then
|
|
# you can supply a `path` and `interfaces` key which take a string and string array,
|
|
# respectively. If the set of interface definitions you are mocking come from multiple
|
|
# import paths, you can supply a `sources` array, each item containing a `path` and
|
|
# `interfaces` key.
|
|
#
|
|
# By convention, you should generate mocks next to the CONSUMER of an interface, not the
|
|
# definition. It is NOT considered an anti-pattern to generate multiple mocks for the same
|
|
# shared interface.
|
|
#
|
|
# By convention, the filename containing generated mocks should be `mocks_test.go`.
|
|
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: |
|
|
This file was generated by running `sg generate` (or `go-mockgen`) at the root of
|
|
this repository. To add additional mocks to this or another package, add a new entry
|
|
to the mockgen.yaml file in the root of this repository.
|