| # Development | |
| Gazelle extensions are written in Go. | |
| See the [Gazelle documentation][gazelle-extend] for more information on | |
| extending Gazelle. | |
| [gazelle-extend]: https://github.com/bazel-contrib/bazel-gazelle/blob/master/extend.md | |
| ## Dependencies | |
| 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. | |
| ## Tests | |
| :::{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. | |
| + and empty `WORKSPACE` file | |
| You 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`. |