Gazelle extensions are written in Go.
See the Gazelle documentation for more information on extending Gazelle.
If you add new Go dependencies to the plugin source code, you need to “tidy” the go.mod file. After changing that file, run go mod tidy
or bazel run @go_sdk//:bin/go -- mod tidy
to update the go.mod
and go.sum
files. Then run bazel run //:gazelle_update_repos
to have gazelle add the new dependencies to the deps.bzl
file. The deps.bzl
file is used as defined in our /WORKSPACE
to include the external repos Bazel loads Go dependencies from.
Then after editing Go code, run bazel run //:gazelle
to generate/update the rules in the BUILD.bazel
files in our repo.
:::{seealso} {gh-path}gazelle/python/testdata/README.md
:::
To run tests, {command}cd
into the {gh-path}gazelle
directory and run bazel test //...
.
Test cases are found at {gh-path}gazelle/python/testdata
. To make a new test case, create a directory in that folder with the following files:
README.md
with a short blurb describing the test case(s).test.yaml
, either empty (with just the docstart ---
line) or with the expected stderr
and exit codes of the test case.WORKSPACE
fileYou will also need BUILD.in
and BUILD.out
files somewhere within the test case directory. These can be in the test case root, in subdirectories, or both.
BUILD.in
files are populated with the “before” information - typically things like Gazelle directives or pre-existing targets. This is how the BUILD.bazel
file looks before running Gazelle.BUILD.out
files are the expected result after running Gazelle within the test case.:::{tip} The easiest way to create a new test is to look at one of the existing test cases. :::
The source code for running tests is {gh-path}gazelle/python/python_test.go
.