in bot/code_coverage_bot/hooks/repo.py [0:0]
def run(self):
# Check the covdir report does not already exists
bucket = gcp.get_bucket(secrets[secrets.GOOGLE_CLOUD_STORAGE])
if uploader.gcp_covdir_exists(bucket, self.branch, self.revision, "all", "all"):
logger.warn("Full covdir report already on GCP")
return
# Generate and upload the full report as soon as possible, so it is available
# for consumers (e.g. Searchfox) right away.
self.retrieve_source_and_artifacts()
reports = self.build_reports(only=[("all", "all")])
full_path = reports.get(("all", "all"))
assert full_path is not None, "Missing full report (all:all)"
with open(full_path, "r") as f:
report_text = f.read()
# Upload report as an artifact.
taskcluster_config.upload_artifact(
"public/code-coverage-report.json",
report_text,
"application/json",
timedelta(days=14),
)
# Index on Taskcluster
self.index_task(
[
"project.relman.code-coverage.{}.repo.mozilla-central.{}".format(
secrets[secrets.APP_CHANNEL], self.revision
),
"project.relman.code-coverage.{}.repo.mozilla-central.latest".format(
secrets[secrets.APP_CHANNEL]
),
]
)
report = json.loads(report_text)
# Check extensions
paths = uploader.covdir_paths(report)
for extension in [".js", ".cpp"]:
assert any(
path.endswith(extension) for path in paths
), "No {} file in the generated report".format(extension)
# Upload coverage on phabricator
changesets = self.get_hgmo_changesets()
coverage = self.upload_phabricator(report, changesets)
# Send an email on low coverage
notify_email(self.revision, changesets, coverage)
logger.info("Sent low coverage email notification")
if secrets.get(secrets.CHECK_JAVASCRIPT_FILES, False):
self.check_javascript_files()
# Generate all reports except the full one which we generated earlier.
all_report_combinations = self.artifactsHandler.get_combinations()
del all_report_combinations[("all", "all")]
reports.update(self.build_reports())
logger.info("Built all covdir reports", nb=len(reports))
# Upload reports on GCP
self.upload_reports(reports)
logger.info("Uploaded all covdir reports", nb=len(reports))