Page MenuHomePhabricator

Implement "Run Arc Unit" build step and support showing unit test results inside Harbormaster
Open, NormalPublic

Description

This involves:

  • Adding storage for storing unit test results. I think for Differential this is stored as JSON and loaded, and we might just use the same mechanism for consistency, or we could have a dedicated table that actually stores the data into columns properly.
  • Implementing a build step that runs "arc unit" consistently across different platforms. D9113 actually addresses most of the cross-platform issues that were encountered with running a specific command, so most of that should be able to be adapted to the "arc unit" test case.

Event Timeline

hach-que claimed this task.
hach-que raised the priority of this task from to Normal.
hach-que updated the task description. (Show Details)
hach-que changed the visibility from "Public (No Login Required)" to "All Users".
hach-que added subscribers: hach-que, epriestley.

More or less. Broadly, the plan here is:

  • Harbormaster "owns" lint and unit test results in the future.
  • Arcanist, Harbormaster, and third-party test integrations upload results to Harbormaster, either as part of a build or in some as-yet-unspecified way that's more like "here are some results for this thing, they aren't really part of a build per se". Not sure if that'll be a special case or a real build with a special flag or what.
  • Differential pulls results in from Harbormaster and renders them.

This task doesn't really cover that responsibility change, but it will happen when Harbormaster moves forward.

epriestley changed the visibility from "All Users" to "Public (No Login Required)".

After D14190, you can do this with a vanilla "Command" build step that runs something like this:

$ arc unit --everything --conduit-uri <api-token> --target ${target.phid}

This is relatively not-that-terrible, although I think it's probably still worthwhile to have a custom step for this which is a thin wrapper around the command step.

The need to have a bare API token here is a little sketchy. Putting it in Passphrase and exposing it as a build variable would be one step better. Doing Conduit over SSH might be even cleaner (T550).

epriestley edited projects, added Harbormaster (v3); removed Harbormaster.
eadler added a project: Restricted Project.Aug 5 2016, 4:44 PM