Refactor StandaloneTestStrategy

- remove unnecessary throw in finalizeTest, simplify throws clause
  (TestRunnerAction already throws if the last attempt was unsuccessful)
- remove finally block in executeTestAttempt; don't try to recover from
  non-SpawnExecException, they are catastrophic anyway
- bubble up any IOException thrown in executeTestAttempt; the
  TestRunnerAction already has better handling for them
- Move the prepareFileSystem call to the TestRunnerSpawn
- Clean up createDirectoryAndParents calls
- Move touchFile(out) out of the finally block; it can throw
  IOException, which would cause the original exception to be dropped

- Add a prepareFileSystem overload - this is only called from Google's
  implementation of TestStrategy, but allows us increase consistency
  between the implementations

Note that we no longer include test.xml generation in the runtime of the
test process as measured locally (if the SpawnResult does not have wall
time set, which should usually be the case).

This is in preparation for async test execution.

Progress on #6394.

PiperOrigin-RevId: 238639508
3 files changed
tree: aadab7de7bbb1ddcd564b12ad49ccbe1feda392b
  1. .bazelci/
  2. examples/
  3. scripts/
  4. site/
  5. src/
  6. third_party/
  7. tools/
  8. .gitattributes
  9. .gitignore
  10. AUTHORS
  11. BUILD
  12. CHANGELOG.md
  13. CODEOWNERS
  14. combine_distfiles.py
  15. combine_distfiles_to_tar.sh
  16. compile.sh
  17. CONTRIBUTING.md
  18. CONTRIBUTORS
  19. distdir.bzl
  20. ISSUE_TEMPLATE.md
  21. LICENSE
  22. README.md
  23. 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 only rebuilds 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

Bazel is released in ‘Beta’. See the product roadmap to learn about the path toward a stable 1.0 release.