in bot/code_coverage_bot/phabricator.py [0:0]
def upload(self, report: dict, changesets: List[dict]) -> Dict[str, Dict[str, Any]]:
with hglib.open(self.repo_dir) as hg:
results = self.generate(hg, report, changesets)
if secrets[secrets.PHABRICATOR_ENABLED]:
phabricator = PhabricatorAPI(
secrets[secrets.PHABRICATOR_TOKEN], secrets[secrets.PHABRICATOR_URL]
)
else:
phabricator = None
for result in results.values():
rev_id = result["revision_id"]
if rev_id is None:
continue
# Only upload raw coverage data to Phabricator, not stats
coverage = {path: cov["coverage"] for path, cov in result["paths"].items()}
logger.info("{} coverage: {}".format(rev_id, coverage))
if not phabricator or not coverage:
continue
try:
rev_data = phabricator.load_revision(rev_id=rev_id)
phabricator.upload_coverage_results(
rev_data["fields"]["diffPHID"], coverage
)
# XXX: This is only necessary until https://bugzilla.mozilla.org/show_bug.cgi?id=1487843 is resolved.
phabricator.upload_lint_results(
rev_data["fields"]["diffPHID"], BuildState.Pass, []
)
except PhabricatorRevisionNotFoundException:
logger.warn("Phabricator revision not found", rev_id=rev_id)
return results