Bazel Bash Packaged
Experimenting with using Bazel & Bats in container images for writing up tests for shell scripts.
Sometimes while developing things it can be useful to have a small shell script that performs a simple action or operation, that in the short-term makes sense as a shell script. In this case, it can be useful to add some simple tests to ensure that:
- The script is runnable
- Simple transformations work as expected
- Any environment variable or file references work as intended
This isn’t intended for cases where a shell script is increasing in complexity, but rather where it acts as ‘Glue’ responsible for filling in gaps that might exist in a system.
Some minor notes about this process are included below:
- Using docker allows avoiding requiring the expected toolchains to be installed locally (or defined in bazel)
- The Bats image is used instead of installed bats onto an image. Installing bats onto an existing image might be a better option
- Container tests can check other properties of the executable shell scripts (as it should be packed the same as it would be for other targets)