{% extends "base.html" %}
{% import "repo_tabs.html" as m %}
{% block title %}Coverage · {{ repo.owner }}/{{ repo.name }}{% endblock %}
{% block tabs %}{% call m::tabs(repo, "coverage") %}{% endblock %}
{% block content %}
{% if let Some(r) = report %}
Coverage
| {{ f.path }} | {{ self.pct_of(f.before) }} → {{ self.pct_of(f.after) }} | {{ self.signed(&f.delta) }} |
| Run | Job | Coverage | Change | Lines | When |
|---|---|---|---|---|---|
| #{{ x.report.run_number }} | {{ x.report.job }} | {{ self.pct(x.report.percent()) }} | {% if let Some(d) = x.delta %}{{ self.signed(d) }}{% endif %} | {{ x.report.lines_hit }} / {{ x.report.lines_found }} |
| File | Coverage | Lines | Missed |
|---|---|---|---|
| {{ f.path }} | {{ self.pct(f.percent()) }} | {{ f.lines_found }} | {{ f.missed() }} |
No coverage report for {{ bookmark }} yet.
Give a job in .flow/pipeline.kdl an artifact named coverage holding an LCOV report, and the hub reads it when the job uploads it. For Rust:
job "coverage" {
sandbox "rust"
exec "cargo" "llvm-cov" "--workspace" "--lcov" "--output-path" "/src/target/lcov.info"
output {
artifact "coverage" { path "/src/target/lcov.info" }
}
}
Istanbul (--reporter=lcov), coverage.py (coverage lcov) and gcov with lcov write LCOV too. Paths are read relative to the job's /src.