{% if let Some(d) = delta %}<divclass="cov-change {{ self.delta_class(d) }}"title="Against run #{% if let Some(p) = previous %}{{ p.run_number }}{% endif %}">{{ self.signed(d) }} since the run before</div>{% else %}<divclass="cov-change same">the first report here</div>{% endif %}
17
</div>
18
</div>
19
{% if runs > 1 %}<divclass="cov-hero-chart">{{ coverage_chart|safe }}</div>{% endif %}
{% if let Some((found, hit)) = self.lines_delta() %}<li>{% if *found >= 0 %}+{% endif %}{{ found }} relevant lines, {% if *hit >= 0 %}+{% endif %}{{ hit }} covered, against run #{% if let Some(p) = previous %}{{ p.run_number }}{% endif %}</li>{% endif %}
38
<li><strong>{{ self.hits(r) }}</strong> hits per line</li>
39
<li>Job <strong>{{ r.job }}</strong>{% if r.dropped > 0 %}; {{ r.dropped }} files the report named are not in this state and are left out{% endif %}</li>
40
{% if added > 0 %}<li>{{ added }} new files</li>{% endif %}
41
</ul>
42
{% if !moved.is_empty() %}<h3>Coverage moved in</h3>
43
<tableclass="cov-moved">{% for f in moved %}<tr><td><ahref="{{ repo.url }}/coverage/{{ r.id }}/file/{{ f.path }}">{{ f.path }}</a></td><tdclass="num mute">{{ self.pct_of(f.before) }} → {{ self.pct_of(f.after) }}</td><tdclass="num cov-change {{ self.delta_class(&f.delta) }}">{{ self.signed(&f.delta) }}</td></tr>{% endfor %}</table>{% endif %}
44
</section>
45
<sectionclass="panel cov-card">
46
<h2>Files by coverage</h2>
47
<divclass="cov-bands">{% for b in bands %}<divclass="cov-band"><spanclass="cov-band-lbl">{{ b.label }}</span><spanclass="bar {{ b.class }}"><spanstyle="width:{{ b.width}}%"></span></span><spanclass="n">{{ b.files }}</span></div>{% endfor %}</div>
<p>No coverage report for <strong>{{ bookmark }}</strong> yet.</p>
88
<p>Give a job in <code>.flow/pipeline.kdl</code> an artifact named <code>coverage</code> holding an LCOV report, and the hub reads it when the job uploads it. For Rust:</p>
<pclass="small mute">Istanbul (<code>--reporter=lcov</code>), coverage.py (<code>coverage lcov</code>) and gcov with lcov write LCOV too; Cobertura XML (<code>coverage xml</code>, Coverlet, JaCoCo through cover2cover) is read as well. Paths are read relative to the job's <code>/src</code>.</p>