Windows, test wrapper: add CdataEncode function

The test wrapper must output a test XML file.

This XML file contains metadata about the test
(such as its name, duration it ran for, whether it
failed or passed), as well as the test's stdout
and stderr.

Because not every Unicode code point is allowed in
the XML file, and because the test's output is
stored in a CDATA section, we need to escape the
test's output.

This PR adds half of the escaping logic: the part
that replaces invalid octets with question marks.

The function also marks the locations of "]]>" in
the test output, because this string cannot be
embedded in a CDATA section, so a function I'll
add later will replace those in the output.

See https://github.com/bazelbuild/bazel/issues/5508

Closes #6703.

PiperOrigin-RevId: 222077759
3 files changed
tree: 6af9dadfd1c12e145b00d7e0de4e7ca65cdc493b
  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.