You need Java 11 or higher to run the build. The build produces Java 8-compatible bytecode.
Install bazelisk
in your PATH
for gapic-generator-java's Bazel build.
-
Clone this repo.
-
(OPTIONAL) Copy the Git pre-commit hooks. This will automatically check the build, run tests, and perform linting before each commit. (Symlinks don't seem to work, but if you find a way, please add it here!)
cp .githooks/pre-commit .git/hooks/pre-commit
-
Run all unit tests in all modules.
mvn install
-
Run linter checks without actually doing the formatting.
mvn fmt:check
-
Format files.
mvn fmt:format
There are 4 layers of testing in this repo:
- Traditional unit tests. These tests usually focus on testing one very specific test case at a time. For example, MethodTest
- Golden unit tests. These tests start with a test proto, we create different test cases in the proto, load the proto in unit tests and save the generated file as golden files. For example, routing header proto -> Load in the unit test -> Saved as golden
- Showcase integration tests. They test the generated library's behavior against a mock server, see README.md of showcase module for details.
- Golden integration tests. These tests generate a full client library with real protos from googleapis, for example, golden integration tests for compute. However, we should stop adding new ones, and rely on golden unit tests and showcase tests.
Based on where the code changes are, we should add different tests, in general
- If the changes are in
gax
orapi-common
only, you must add traditional unit tests, you may add showcase integration tests if you are modifying a public setting. - If the changes are in
gapic-generator-java
only, showcase integration tests are most likely not needed- If it is in the
composer
module, you must add golden unit tests, you may add traditional unit tests for better coverage and easier testing. - If it is in the
parser
module, you may add traditional unit tests with a test proto. For example, routing_rule_parser_testing that is only used for testing RoutingRuleParser. - If it is in
other modules(ast, model, writer etc.)
, you must add traditional unit tests, you may add golden unit tests to easily see the changes.
- If it is in the
- If the changes are in both
gax
andgapic-generator-java
, you must add all test layers, including traditional unit tests, golden unit tests and showcase integration tests.
See the Unit Tests section in gapic-generator-java/DEVELOPMENT.md for how to run traditional and golden unit tests.
See Running the Integration Tests and Update the Golden Showcase Files sections in showcase/README.md for how to run and update showcase integration tests.
See the Integration Tests section in gapic-generator-java/DEVELOPMENT.md for how to run golden integration tests.