[result_adapter] don't produce invalid test IDs on Unicode test names

It's currently not possible to use result_adapter on Go tests that have
at least one printable Unicode character that isn't also a printable
ASCII character. This is crbug.com/1446084.

The long term fix is in allowing such characters on the ResultDB side.

Add a workaround to result_adapter that does simple escaping of test
IDs that would otherwise be considered invalid: a Unicode letter like
'ሴ' is written as "(U+1234)". No existing test IDs are affected, only
ones that couldn't have been previously uploaded. Doing this unblocks
uploading results of testing the Go standard library to ResultDB.

For go.dev/issue/59990.

Bug: 1446084
Change-Id: Ia7bce4a84cbc20075457e9dab63f0a489fef7add
Reviewed-on: https://chromium-review.googlesource.com/c/infra/infra/+/4549680
Reviewed-by: Robbie Iannucci <iannucci@chromium.org>
Commit-Queue: Dmitri Shuralyov <dmitshur@google.com>
Cr-Commit-Position: refs/heads/main@{#56944}
2 files changed
tree: c9fe91747eda1c859445e3067820e5d96ac031cc
  1. 3pp/
  2. appengine/
  3. appengine_module/
  4. bootstrap/
  5. build/
  6. chromeperf/
  7. crdx/
  8. doc/
  9. docker/
  10. go/
  11. infra/
  12. node/
  13. packages/
  14. python_pb2/
  15. recipes/
  16. test/
  17. utils/
  18. .gitallowed
  19. .gitattributes
  20. .gitignore
  21. .style.yapf
  22. .vpython
  23. .vpython3
  24. .yapfignore
  25. codereview.settings
  26. CONTRIBUTING.md
  27. DEPS
  28. LICENSE
  29. migration_warning.py
  30. navbar.md
  31. OWNERS
  32. PRESUBMIT.py
  33. README.md
  34. run.py
  35. test.py
  36. WATCHLISTS
  37. WHITESPACE
README.md

infra.git repository

Welcome to the Chrome Infra repository!

Wondering where to start? Check out General Chrome Infrastructure documentation. In particular, to check out this repo and the rest of the infrastructure code, follow the instructions here. The rest of this page is specific to this repo.

Entry points

  • run.py: wrapper script to run programs contained in subdirectories without having to deal with sys.path modifications.
  • test.py: multi-purpose script to run tests.
  • packages/infra_libs/: generally useful functions and classes
  • infra/services/: standalone programs intended to be run as daemons.
  • infra/tools: command-line tools, intended to be run by developers.
  • appengine/: many Chrome-infra-managed AppEngine applications.
  • infra/experimental: for, well, experimental stuff. Once they are stabilized and reviewed, they should be moved in a more permanent place.

Miscellaneous technical stuff

  • bootstrap/: utilities to set up a proper Python virtual environment.
  • utils/: purpose? utils?
  • Need to bump infra/deployed to pick up changes?
    • git push origin <updated hash>:deployed
    • mail chrome-troopers@, include:
      • previously deployed hash (for quick rollback)
      • the hash you just pushed
      • the list of CLs that made this push necessary
      • the output of the git push command

Integrating tests with test.py

If you've added a new module, run your tests with test.py:

  1. Create a .coveragerc file in the root directory of the module you want to test. Take a look at another .coveragerc to see what to include in that.
  2. Create a “test” directory in the root directory of the module you want to test. Move your *_test.py files to this directory.

Double-check that your tests are getting picked up when you want them to be: ./test.py test <path-to-package>.

Tests still not getting picked up by test.py? Double-check to make sure you have __init__.py files in each directory of your module so Python recognizes it as a package.

Style

The preferred style is PEP8 with two-space indent; that is, the Chromium Python style, except functions use lowercase_with_underscores. Use yapf (git cl format) to autoformat new code.