Return exit codes describing test action system failures instead of 3

Previously, the numerical exit code returned from "test" and "coverage"
invocations which experienced a system failure during a test action
execution was 3, the same as what is returned given a user-attributable
test failure.

Now, the numerical exit code will reflect the test action failure when
it's attributable to the system. For example, if a test action fails
because of a remote execution error, the invocation will return 34
(REMOTE_ERROR).

Tests that failed because of a system error get rerun when subsequently
requested, regardless of the value specified for "--cache_test_results".

This cache avoiding behavior is implemented by resurrecting the use of
the TestResultData.cachable field, which was previously used nowhere,
since an ancient change to the codebase took it out of use.
TestResultData.cachable is now set to false when a test action fails due
to a system error. The logic that determines whether to use cached test
results based on the properties of that result and the value of
"--cache_test_results" now always ignores those results if they have
cachable=false.

RELNOTES: The "test" and "coverage" commands no longer return 3 when a
test action fails because of a system error. Instead, the exit code
reflects the type of system error.
PiperOrigin-RevId: 349337510
11 files changed
tree: b2d6687ef5789f2888e095e84b45963abc272659
  1. .bazelci/
  2. examples/
  3. scripts/
  4. site/
  5. src/
  6. third_party/
  7. tools/
  8. .bazelrc
  9. .gitattributes
  10. .gitignore
  11. AUTHORS
  12. BUILD
  13. CHANGELOG.md
  14. CODEBASE.md
  15. CODEOWNERS
  16. combine_distfiles.py
  17. combine_distfiles_to_tar.sh
  18. compile.sh
  19. CONTRIBUTING.md
  20. CONTRIBUTORS
  21. distdir.bzl
  22. distdir_deps.bzl
  23. ISSUE_TEMPLATE.md
  24. LICENSE
  25. README.md
  26. WORKSPACE
README.md

Bazel

{Fast, Correct} - Choose two

Build and test software of any size, quickly and reliably.

  • Speed up your builds and tests: Bazel rebuilds only what is necessary. With advanced local and distributed caching, optimized dependency analysis and parallel execution, you get fast and incremental builds.

  • One tool, multiple languages: Build and test Java, C++, Android, iOS, Go, and a wide variety of other language platforms. Bazel runs on Windows, macOS, and Linux.

  • Scalable: Bazel helps you scale your organization, codebase, and continuous integration solution. It handles codebases of any size, in multiple repositories or a huge monorepo.

  • Extensible to your needs: Easily add support for new languages and platforms with Bazel's familiar extension language. Share and re-use language rules written by the growing Bazel community.

Getting Started

Documentation

Contributing to Bazel

See CONTRIBUTING.md

Build status