A Revision's Harbormaster results are many jumps away from a it (Revision → Diff → Buildable → BuildTarget), and don't aggregate lint and unit status (They have only "pass/fail" status).
This results in several issues when using CI to test Revisions:
- Diffs still show "No Unit Test Coverage" even if many tests exist.
- If the CI also lints, you can see "No lint issues" followed by a list of 50 "lint errors".
- Displaying a revision with lots of tests is slow, because we load all tests to figure out which to show, and to aggregate coverage information.
- Revision History shows stars for lint/unit, but these don't take into account HM results.
- The "arc lint/arc unit" auto-build also allow for excuses, which we store on the diff instead of the HM build, which is funny.
We should aggregate lints, units, and coverage on the Buildable/Build/BuildTarget level (and maybe allow "excuse" as well, to avoid some special casing).
We currently figure out the status of build/unit on the client, and send it up during arc diff using differential.creatediff; We'll need to either change this flow to use a new/modified harbormaster.sendmessage (Which we currently use for lint/unit content), or else calculate it on the server (Where we'll be aggregating anyway).
Harbormaster reported unit results showing "No Unit Test Coverage"
I'm implementing Unit test reporting over harbormaster for Jenkins (via the jenkins-phabricator-plugin: https://github.com/uber/phabricator-jenkins-plugin/pull/93)
I've successfully converted the unit tests into the harbormaster format, however on the Differential summary, under "Unit" it still shows "No Unit Test Coverage", even though it has test results:
As per the conduit spec, I am sending a single harbormaster.sendmessage call with a unit array (and overall result "pass").
Is this a UI bug, or is there a (possibly undocumented?) way to update the differential to show that it does have "Unit Test Coverage" available?