[testing/assert/result] Add proto representation for Result.

This will replace the Go Result type, fixing a couple issues:
  1) Currently Result carries around Go values as `any` and relies
     on reflect.DeepEquals to compare Result objects in tests. Using
     a proto will remove the temptation for the Result to carry
     non-primitive types.
  2) Results may be rendered by multiple implementations (e.g. for
     CLI, log output, JSON, web). This proto tries to strike
     a balance between deferred rendering and complexity of the
     intermediate type.
  3) We can remove `structuraldiff` from the library (or perhaps use
     it internally for some comparison functions). The lingua franca
     will be plain strings now.
  4) Reduces the criticality of using a builder for the Result
     object - the proto doc will clearly describe what the
     responsibility of a well-formed Result is, and the builder will
     be helpful (but not essential) to generate a Result.
  5) Rendering logic will be extracted from the core Result type and
     will be pushed to various output places.

R=gregorynisbet@google.com

Bug: 319730573
Change-Id: Ic3fb5b641ceb3f360dd0f5369367150189c8c163
Reviewed-on: https://chromium-review.googlesource.com/c/infra/luci/luci-go/+/5512986
Commit-Queue: Robbie Iannucci <iannucci@chromium.org>
Auto-Submit: Robbie Iannucci <iannucci@chromium.org>
Commit-Queue: Gregory Nisbet <gregorynisbet@google.com>
Reviewed-by: Gregory Nisbet <gregorynisbet@google.com>
13 files changed
tree: 05a0cd022dbc79c07b94703dd3ec2102ae0991a9
  1. analysis/
  2. appengine/
  3. auth/
  4. auth_service/
  5. bisection/
  6. build/
  7. buildbucket/
  8. casviewer/
  9. cipd/
  10. cipkg/
  11. client/
  12. common/
  13. config/
  14. config_service/
  15. cv/
  16. deploy/
  17. examples/
  18. gae/
  19. gce/
  20. grpc/
  21. hardcoded/
  22. led/
  23. logdog/
  24. luci_notify/
  25. lucicfg/
  26. lucictx/
  27. luciexe/
  28. mailer/
  29. milo/
  30. mmutex/
  31. provenance/
  32. resultdb/
  33. scheduler/
  34. scripts/
  35. server/
  36. standalone/
  37. starlark/
  38. swarming/
  39. teams/
  40. third_party/
  41. tokenserver/
  42. tools/
  43. tree_status/
  44. vpython/
  45. web/
  46. .gitallowed
  47. .gitattributes
  48. .gitignore
  49. .go-lintable
  50. AUTHORS
  51. codereview.settings
  52. CONTRIBUTING.md
  53. CONTRIBUTORS
  54. go.mod
  55. go.sum
  56. LICENSE
  57. OWNERS
  58. PRESUBMIT.py
  59. README.md
  60. tools.go
  61. WATCHLISTS
README.md

luci-go: LUCI services and tools in Go

GoReference

Installing

LUCI Go code is meant to be worked on from an Chromium infra.git checkout, which enforces packages versions and Go toolchain version. First get fetch via depot_tools.git then run:

fetch infra
cd infra/go
eval `./env.py`
cd src/go.chromium.org/luci

It is now possible to directly install tools with go install:

go install go.chromium.org/luci/auth/client/cmd/...@latest
go install go.chromium.org/luci/buildbucket/cmd/...@latest
go install go.chromium.org/luci/cipd/client/cmd/...@latest
go install go.chromium.org/luci/client/cmd/...@latest
go install go.chromium.org/luci/cv/cmd/...@latest
go install go.chromium.org/luci/gce/cmd/...@latest
go install go.chromium.org/luci/grpc/cmd/...@latest
go install go.chromium.org/luci/logdog/client/cmd/...@latest
go install go.chromium.org/luci/luci_notify/cmd/...@latest
go install go.chromium.org/luci/lucicfg/cmd/...@latest
go install go.chromium.org/luci/luciexe/legacy/cmd/...@latest
go install go.chromium.org/luci/mailer/cmd/...@latest
go install go.chromium.org/luci/mmutex/cmd/...@latest
go install go.chromium.org/luci/resultdb/cmd/...@latest
go install go.chromium.org/luci/server/cmd/...@latest
go install go.chromium.org/luci/swarming/cmd/...@latest
go install go.chromium.org/luci/tokenserver/cmd/...@latest
go install go.chromium.org/luci/tools/cmd/...@latest

Contributing

Contributing uses the same flow as Chromium contributions.