Coverage Visualization Not Working With Multiple Sources in Cobertura Report
Summary
Coverage Visualization does not work with two different sources defined
Steps to reproduce
Removing the second source magically enables coverage visualization.

Example Project
Sorry not enough time atm, already wasted too much time debugging this.
What is the current bug behavior?
No green and orange bars visibly in MR Changes view.
What is the expected correct behavior?
Get coverage data visualized in tests and package files.
Relevant logs and/or screenshots
My project layout looks like this:
Project Layout
.
├── README.md
├── coverage_perfect.xml
├── pyproject.toml
├── src
│ └── lal_lib
│ ├── __init__.py
│ ├── cind_load.py
│ ├── dsi_utilities.py
│ ├── lal.py
│ ├── lal_utilities.py
│ ├── load_config.yml
│ ├── matrix_config.yml
│ ├── mlscope_utilities.py
│ ├── res_load.py
│ ├── vcap_load.py
│ └── vind_load.py
└── tests
├── test_cind_load.py
├── test_usage.py
├── test_vcap_load.py
├── test_vind_load.py
└── test_yml_config.py
Coverage report Gitlab does not like
When manually removing the line <source>/builds/hw/lal_lib/tests</source> highlighting starts working.
coverage_broken.xml
<?xml version="1.0" ?>
<coverage version="6.3.3" timestamp="1653635568675" lines-valid="831" lines-covered="464" line-rate="0.5584" branches-valid="208" branches-covered="82" branch-rate="0.3942" complexity="0">
<!-- Generated by coverage.py: https://coverage.readthedocs.io -->
<!-- Based on https://raw.githubusercontent.com/cobertura/web/master/htdocs/xml/coverage-04.dtd -->
<sources>
<source>/builds/hw/lal_lib</source>
**<source>/builds/hw/lal_lib/tests</source>**
</sources>
<packages>
<package name="lal_lib" line-rate="0.4132" branch-rate="0.3152" complexity="0">
<classes>
<class name="__init__.py" filename="src/lal_lib/__init__.py" complexity="0" line-rate="1" branch-rate="1">
<methods/>
<lines>
<line number="3" hits="1"/>
</lines>
</class>
<class name="cind_load.py" filename="src/lal_lib/cind_load.py" complexity="0" line-rate="0.9778" branch-rate="0.9">
<methods/>
<lines>
<line number="1" hits="1"/>
<line number="2" hits="1"/>
<line number="4" hits="1"/>
<line number="5" hits="1"/>
<line number="6" hits="1"/>
<line number="8" hits="1"/>
<line number="9" hits="1"/>
<line number="10" hits="1"/>
<line number="13" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="15" hits="1"/>
<line number="16" hits="1"/>
<line number="17" hits="1"/>
<line number="18" hits="1"/>
<line number="19" hits="1"/>
<line number="20" hits="1"/>
<line number="22" hits="1"/>
<line number="27" hits="1"/>
<line number="29" hits="1"/>
<line number="31" hits="1"/>
<line number="34" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="36" hits="1"/>
<line number="37" hits="1"/>
<line number="38" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="39" hits="1"/>
<line number="40" hits="1"/>
<line number="41" hits="1"/>
<line number="42" hits="1"/>
<line number="43" hits="1"/>
<line number="44" hits="1"/>
<line number="46" hits="1"/>
<line number="47" hits="1"/>
<line number="48" hits="1"/>
<line number="49" hits="1"/>
<line number="50" hits="1"/>
<line number="51" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="52" hits="1"/>
<line number="53" hits="1" branch="true" condition-coverage="50% (1/2)" missing-branches="56"/>
<line number="54" hits="1"/>
<line number="56" hits="0"/>
<line number="57" hits="1"/>
<line number="59" hits="1"/>
<line number="60" hits="1"/>
<line number="62" hits="1"/>
<line number="63" hits="1"/>
<line number="64" hits="1"/>
</lines>
</class>
<class name="dsi_utilities.py" filename="src/lal_lib/dsi_utilities.py" complexity="0" line-rate="0" branch-rate="0">
<methods/>
<lines>
<line number="1" hits="0"/>
<line number="2" hits="0"/>
<line number="3" hits="0"/>
<line number="4" hits="0"/>
<line number="5" hits="0"/>
<line number="6" hits="0"/>
<line number="8" hits="0"/>
<line number="9" hits="0"/>
<line number="10" hits="0"/>
<line number="12" hits="0"/>
<line number="15" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="16,21"/>
<line number="16" hits="0"/>
<line number="17" hits="0"/>
<line number="18" hits="0"/>
<line number="21" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="22,25"/>
<line number="22" hits="0"/>
<line number="25" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="26,113"/>
<line number="26" hits="0"/>
<line number="28" hits="0"/>
<line number="29" hits="0"/>
<line number="30" hits="0"/>
<line number="32" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="33,35"/>
<line number="33" hits="0"/>
<line number="35" hits="0"/>
<line number="37" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="38,40"/>
<line number="38" hits="0"/>
<line number="40" hits="0"/>
<line number="42" hits="0"/>
<line number="43" hits="0"/>
<line number="45" hits="0"/>
<line number="46" hits="0"/>
<line number="47" hits="0"/>
<line number="49" hits="0"/>
<line number="50" hits="0"/>
<line number="53" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="54,57"/>
<line number="54" hits="0"/>
<line number="55" hits="0"/>
<line number="57" hits="0"/>
<line number="58" hits="0"/>
<line number="60" hits="0"/>
<line number="61" hits="0"/>
<line number="62" hits="0"/>
<line number="63" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="64,66"/>
<line number="64" hits="0"/>
<line number="66" hits="0"/>
<line number="67" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="68,78"/>
<line number="68" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="67,69"/>
<line number="69" hits="0"/>
<line number="70" hits="0"/>
<line number="71" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="72,76"/>
<line number="72" hits="0"/>
<line number="73" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="exit,67"/>
<line number="76" hits="0"/>
<line number="78" hits="0"/>
<line number="79" hits="0"/>
<line number="81" hits="0"/>
<line number="82" hits="0"/>
<line number="83" hits="0"/>
<line number="84" hits="0"/>
<line number="86" hits="0"/>
<line number="87" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="88,91"/>
<line number="88" hits="0"/>
<line number="89" hits="0"/>
<line number="91" hits="0"/>
<line number="92" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="93,97"/>
<line number="93" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="94,96"/>
<line number="94" hits="0"/>
<line number="96" hits="0"/>
<line number="97" hits="0"/>
<line number="98" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="99,105"/>
<line number="99" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="100,103"/>
<line number="100" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="exit,98"/>
<line number="103" hits="0"/>
<line number="105" hits="0"/>
<line number="106" hits="0"/>
<line number="108" hits="0"/>
<line number="109" hits="0"/>
<line number="110" hits="0"/>
<line number="113" hits="0"/>
<line number="114" hits="0"/>
<line number="115" hits="0"/>
<line number="116" hits="0"/>
<line number="117" hits="0"/>
<line number="119" hits="0"/>
<line number="121" hits="0"/>
<line number="122" hits="0"/>
<line number="124" hits="0"/>
<line number="125" hits="0"/>
<line number="127" hits="0"/>
<line number="128" hits="0"/>
<line number="129" hits="0"/>
</lines>
</class>
<class name="lal.py" filename="src/lal_lib/lal.py" complexity="0" line-rate="0.6759" branch-rate="0.5227">
<methods/>
<lines>
<line number="1" hits="1"/>
<line number="2" hits="1"/>
<line number="3" hits="1"/>
<line number="5" hits="1"/>
<line number="6" hits="1"/>
<line number="7" hits="1"/>
<line number="8" hits="1"/>
<line number="9" hits="1"/>
<line number="11" hits="1"/>
<line number="12" hits="1"/>
<line number="13" hits="0"/>
<line number="14" hits="0"/>
<line number="16" hits="0"/>
<line number="18" hits="1"/>
<line number="19" hits="1"/>
<line number="20" hits="1"/>
<line number="22" hits="1"/>
<line number="23" hits="1"/>
<line number="24" hits="1"/>
<line number="27" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="28" hits="1"/>
<line number="31" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="36" hits="1"/>
<line number="37" hits="1"/>
<line number="38" hits="1"/>
<line number="39" hits="1"/>
<line number="40" hits="1"/>
<line number="41" hits="1"/>
<line number="42" hits="1"/>
<line number="43" hits="1"/>
<line number="44" hits="1"/>
<line number="45" hits="1"/>
<line number="46" hits="1"/>
<line number="47" hits="1"/>
<line number="48" hits="1"/>
<line number="49" hits="1"/>
<line number="50" hits="1"/>
<line number="51" hits="1"/>
<line number="53" hits="1"/>
<line number="54" hits="1"/>
<line number="55" hits="1"/>
<line number="56" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="57" hits="1"/>
<line number="58" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="59" hits="1"/>
<line number="60" hits="1"/>
<line number="62" hits="1"/>
<line number="63" hits="1"/>
<line number="65" hits="1"/>
<line number="67" hits="1"/>
<line number="68" hits="1"/>
<line number="70" hits="0"/>
<line number="72" hits="1"/>
<line number="73" hits="1"/>
<line number="74" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="exit,75"/>
<line number="75" hits="0"/>
<line number="77" hits="1"/>
<line number="78" hits="1"/>
<line number="79" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="exit,80"/>
<line number="80" hits="0"/>
<line number="82" hits="1"/>
<line number="83" hits="1"/>
<line number="84" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="exit,85"/>
<line number="85" hits="0"/>
<line number="87" hits="1"/>
<line number="88" hits="1"/>
<line number="89" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="exit,90"/>
<line number="90" hits="0"/>
<line number="92" hits="1"/>
<line number="93" hits="1"/>
<line number="94" hits="0"/>
<line number="96" hits="1"/>
<line number="97" hits="1"/>
<line number="98" hits="0"/>
<line number="100" hits="1"/>
<line number="101" hits="1"/>
<line number="102" hits="0"/>
<line number="104" hits="1"/>
<line number="108" hits="1" branch="true" condition-coverage="50% (1/2)" missing-branches="109"/>
<line number="109" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="110,113"/>
<line number="110" hits="0"/>
<line number="111" hits="0"/>
<line number="113" hits="0"/>
<line number="115" hits="1"/>
<line number="116" hits="1"/>
<line number="118" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="119" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="121" hits="1"/>
<line number="122" hits="1"/>
<line number="123" hits="1"/>
<line number="125" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="126" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="127" hits="1"/>
<line number="128" hits="1"/>
<line number="129" hits="1"/>
<line number="130" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="133" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="134" hits="1"/>
<line number="135" hits="1"/>
<line number="136" hits="0"/>
<line number="137" hits="0"/>
<line number="138" hits="1"/>
<line number="139" hits="1"/>
<line number="140" hits="0"/>
<line number="141" hits="0"/>
<line number="143" hits="1"/>
<line number="144" hits="1"/>
<line number="145" hits="1"/>
<line number="147" hits="1"/>
<line number="149" hits="1"/>
<line number="151" hits="1" branch="true" condition-coverage="50% (1/2)" missing-branches="171"/>
<line number="154" hits="1" branch="true" condition-coverage="50% (1/2)" missing-branches="155"/>
<line number="155" hits="0"/>
<line number="156" hits="0"/>
<line number="157" hits="0"/>
<line number="158" hits="0"/>
<line number="159" hits="0"/>
<line number="160" hits="0"/>
<line number="161" hits="0"/>
<line number="162" hits="0"/>
<line number="164" hits="1"/>
<line number="165" hits="1"/>
<line number="166" hits="1"/>
<line number="168" hits="1"/>
<line number="170" hits="1"/>
<line number="171" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="174,177"/>
<line number="174" hits="0"/>
<line number="175" hits="0"/>
<line number="176" hits="0"/>
<line number="177" hits="1"/>
<line number="179" hits="1"/>
<line number="183" hits="0"/>
<line number="185" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="exit,186"/>
<line number="186" hits="0"/>
<line number="187" hits="0"/>
<line number="189" hits="1"/>
<line number="193" hits="0"/>
<line number="195" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="exit,196"/>
<line number="196" hits="0"/>
<line number="197" hits="0"/>
<line number="199" hits="1"/>
<line number="203" hits="0"/>
<line number="204" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="exit,205"/>
<line number="205" hits="0"/>
<line number="206" hits="0"/>
</lines>
</class>
<class name="lal_utilities.py" filename="src/lal_lib/lal_utilities.py" complexity="0" line-rate="0" branch-rate="0">
<methods/>
<lines>
<line number="1" hits="0"/>
<line number="2" hits="0"/>
<line number="3" hits="0"/>
<line number="4" hits="0"/>
<line number="6" hits="0"/>
<line number="7" hits="0"/>
<line number="9" hits="0"/>
<line number="11" hits="0"/>
<line number="14" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="15,18"/>
<line number="15" hits="0"/>
<line number="18" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="19,22"/>
<line number="19" hits="0"/>
<line number="22" hits="0"/>
<line number="24" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="25,31"/>
<line number="25" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="26,28"/>
<line number="26" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="exit,33"/>
<line number="28" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="exit,29"/>
<line number="29" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="30,33"/>
<line number="30" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="exit,33"/>
<line number="31" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="32,33"/>
<line number="32" hits="0"/>
<line number="33" hits="0"/>
<line number="36" hits="0"/>
<line number="37" hits="0"/>
<line number="41" hits="0"/>
<line number="42" hits="0"/>
<line number="46" hits="0"/>
<line number="47" hits="0"/>
<line number="51" hits="0"/>
<line number="60" hits="0"/>
<line number="64" hits="0"/>
<line number="75" hits="0"/>
<line number="79" hits="0"/>
<line number="80" hits="0"/>
<line number="84" hits="0"/>
<line number="85" hits="0"/>
<line number="89" hits="0"/>
<line number="90" hits="0"/>
<line number="94" hits="0"/>
<line number="95" hits="0"/>
<line number="97" hits="0"/>
<line number="100" hits="0"/>
<line number="101" hits="0"/>
<line number="102" hits="0"/>
<line number="105" hits="0"/>
<line number="106" hits="0"/>
<line number="108" hits="0"/>
<line number="111" hits="0"/>
<line number="112" hits="0"/>
<line number="113" hits="0"/>
<line number="116" hits="0"/>
<line number="117" hits="0"/>
<line number="118" hits="0"/>
<line number="121" hits="0"/>
<line number="122" hits="0"/>
<line number="123" hits="0"/>
<line number="126" hits="0"/>
<line number="127" hits="0"/>
<line number="128" hits="0"/>
<line number="131" hits="0"/>
<line number="132" hits="0"/>
<line number="133" hits="0"/>
<line number="136" hits="0"/>
<line number="137" hits="0"/>
<line number="138" hits="0"/>
<line number="141" hits="0"/>
<line number="142" hits="0"/>
<line number="143" hits="0"/>
<line number="146" hits="0"/>
<line number="147" hits="0"/>
<line number="148" hits="0"/>
<line number="201" hits="0"/>
<line number="202" hits="0"/>
<line number="206" hits="0"/>
<line number="207" hits="0"/>
<line number="208" hits="0"/>
<line number="209" hits="0"/>
<line number="210" hits="0"/>
<line number="211" hits="0"/>
<line number="214" hits="0"/>
<line number="215" hits="0"/>
<line number="225" hits="0"/>
<line number="226" hits="0"/>
<line number="227" hits="0"/>
<line number="228" hits="0"/>
<line number="229" hits="0"/>
<line number="230" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="exit,232"/>
<line number="232" hits="0"/>
<line number="233" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="exit,234"/>
<line number="234" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="235,256"/>
<line number="235" hits="0"/>
<line number="236" hits="0"/>
<line number="237" hits="0"/>
<line number="238" hits="0"/>
<line number="239" hits="0"/>
<line number="241" hits="0"/>
<line number="243" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="244,247"/>
<line number="244" hits="0"/>
<line number="245" hits="0"/>
<line number="246" hits="0"/>
<line number="247" hits="0"/>
<line number="248" hits="0"/>
<line number="249" hits="0"/>
<line number="250" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="234,251"/>
<line number="251" hits="0"/>
<line number="253" hits="0"/>
<line number="254" hits="0"/>
<line number="255" hits="0"/>
<line number="256" hits="0"/>
<line number="258" hits="0"/>
<line number="259" hits="0"/>
<line number="260" hits="0"/>
<line number="261" hits="0"/>
<line number="262" hits="0"/>
<line number="263" hits="0"/>
<line number="264" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="265,267"/>
<line number="265" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="exit,267"/>
<line number="267" hits="0"/>
<line number="268" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="269,270"/>
<line number="269" hits="0"/>
<line number="270" hits="0"/>
<line number="273" hits="0"/>
<line number="274" hits="0"/>
<line number="279" hits="0"/>
<line number="280" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="281,284"/>
<line number="281" hits="0"/>
<line number="284" hits="0"/>
<line number="286" hits="0"/>
<line number="289" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="290,292"/>
<line number="290" hits="0"/>
<line number="292" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="293,304"/>
<line number="293" hits="0"/>
<line number="304" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="305,308"/>
<line number="305" hits="0"/>
<line number="308" hits="0"/>
<line number="309" hits="0"/>
<line number="310" hits="0"/>
<line number="311" hits="0"/>
<line number="312" hits="0"/>
<line number="313" hits="0"/>
<line number="314" hits="0"/>
</lines>
</class>
<class name="mlscope_utilities.py" filename="src/lal_lib/mlscope_utilities.py" complexity="0" line-rate="0" branch-rate="0">
<methods/>
<lines>
<line number="1" hits="0"/>
<line number="2" hits="0"/>
<line number="3" hits="0"/>
<line number="4" hits="0"/>
<line number="5" hits="0"/>
<line number="6" hits="0"/>
<line number="7" hits="0"/>
<line number="9" hits="0"/>
<line number="12" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="13,16"/>
<line number="13" hits="0"/>
<line number="16" hits="0"/>
<line number="18" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="19,23"/>
<line number="19" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="20,22"/>
<line number="20" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="exit,25"/>
<line number="22" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="exit,25"/>
<line number="23" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="24,25"/>
<line number="24" hits="0"/>
<line number="25" hits="0"/>
<line number="28" hits="0"/>
<line number="29" hits="0"/>
<line number="33" hits="0"/>
<line number="34" hits="0"/>
<line number="35" hits="0"/>
<line number="38" hits="0"/>
<line number="39" hits="0"/>
<line number="43" hits="0"/>
<line number="44" hits="0"/>
<line number="45" hits="0"/>
<line number="47" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="48,52"/>
<line number="48" hits="0"/>
<line number="52" hits="0"/>
<line number="53" hits="0"/>
<line number="54" hits="0"/>
<line number="55" hits="0"/>
<line number="56" hits="0"/>
<line number="59" hits="0"/>
<line number="60" hits="0"/>
<line number="61" hits="0"/>
<line number="62" hits="0"/>
<line number="64" hits="0"/>
<line number="66" hits="0"/>
<line number="67" hits="0"/>
<line number="69" hits="0"/>
<line number="70" hits="0"/>
<line number="72" hits="0"/>
<line number="73" hits="0"/>
<line number="74" hits="0"/>
<line number="77" hits="0"/>
<line number="78" hits="0"/>
<line number="79" hits="0"/>
<line number="80" hits="0"/>
<line number="81" hits="0"/>
<line number="82" hits="0"/>
<line number="83" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="exit,84"/>
<line number="84" hits="0"/>
</lines>
</class>
<class name="res_load.py" filename="src/lal_lib/res_load.py" complexity="0" line-rate="0.5294" branch-rate="0.4444">
<methods/>
<lines>
<line number="1" hits="1"/>
<line number="2" hits="1"/>
<line number="5" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="7" hits="1"/>
<line number="9" hits="1"/>
<line number="10" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="11" hits="1"/>
<line number="12" hits="1"/>
<line number="14" hits="1"/>
<line number="16" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="17,21"/>
<line number="17" hits="0"/>
<line number="18" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="19,30"/>
<line number="19" hits="0"/>
<line number="20" hits="0"/>
<line number="21" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="22,27"/>
<line number="22" hits="0"/>
<line number="23" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="24,30"/>
<line number="24" hits="0"/>
<line number="25" hits="0"/>
<line number="27" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="28,30"/>
<line number="28" hits="0"/>
<line number="29" hits="0"/>
<line number="30" hits="0"/>
<line number="32" hits="1"/>
<line number="33" hits="0"/>
<line number="35" hits="1"/>
<line number="36" hits="1"/>
<line number="37" hits="0"/>
<line number="40" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="41" hits="1"/>
<line number="42" hits="1"/>
<line number="45" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="46" hits="1"/>
<line number="47" hits="1"/>
</lines>
</class>
<class name="vcap_load.py" filename="src/lal_lib/vcap_load.py" complexity="0" line-rate="0.9778" branch-rate="0.9">
<methods/>
<lines>
<line number="1" hits="1"/>
<line number="2" hits="1"/>
<line number="4" hits="1"/>
<line number="5" hits="1"/>
<line number="6" hits="1"/>
<line number="8" hits="1"/>
<line number="9" hits="1"/>
<line number="10" hits="1"/>
<line number="13" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="15" hits="1"/>
<line number="16" hits="1"/>
<line number="17" hits="1"/>
<line number="18" hits="1"/>
<line number="19" hits="1"/>
<line number="20" hits="1"/>
<line number="22" hits="1"/>
<line number="27" hits="1"/>
<line number="29" hits="1"/>
<line number="31" hits="1"/>
<line number="34" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="36" hits="1"/>
<line number="37" hits="1"/>
<line number="38" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="39" hits="1"/>
<line number="40" hits="1"/>
<line number="41" hits="1"/>
<line number="42" hits="1"/>
<line number="43" hits="1"/>
<line number="44" hits="1"/>
<line number="46" hits="1"/>
<line number="47" hits="1"/>
<line number="48" hits="1"/>
<line number="49" hits="1"/>
<line number="50" hits="1"/>
<line number="51" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="52" hits="1"/>
<line number="53" hits="1" branch="true" condition-coverage="50% (1/2)" missing-branches="56"/>
<line number="54" hits="1"/>
<line number="56" hits="0"/>
<line number="57" hits="1"/>
<line number="59" hits="1"/>
<line number="60" hits="1"/>
<line number="62" hits="1"/>
<line number="63" hits="1"/>
<line number="64" hits="1"/>
</lines>
</class>
<class name="vind_load.py" filename="src/lal_lib/vind_load.py" complexity="0" line-rate="0.9375" branch-rate="0.9">
<methods/>
<lines>
<line number="1" hits="1"/>
<line number="2" hits="1"/>
<line number="4" hits="1"/>
<line number="5" hits="1"/>
<line number="6" hits="1"/>
<line number="8" hits="1"/>
<line number="9" hits="1"/>
<line number="10" hits="1"/>
<line number="13" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="15" hits="1"/>
<line number="16" hits="1"/>
<line number="17" hits="1"/>
<line number="18" hits="1"/>
<line number="19" hits="1"/>
<line number="20" hits="1"/>
<line number="22" hits="1"/>
<line number="27" hits="1"/>
<line number="29" hits="1"/>
<line number="31" hits="1"/>
<line number="34" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="36" hits="1"/>
<line number="37" hits="1"/>
<line number="38" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="39" hits="1"/>
<line number="40" hits="1"/>
<line number="41" hits="1"/>
<line number="42" hits="1"/>
<line number="43" hits="1"/>
<line number="44" hits="1"/>
<line number="46" hits="1"/>
<line number="47" hits="1"/>
<line number="48" hits="1"/>
<line number="49" hits="1"/>
<line number="50" hits="1"/>
<line number="51" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="52" hits="1"/>
<line number="53" hits="1" branch="true" condition-coverage="50% (1/2)" missing-branches="56"/>
<line number="54" hits="1"/>
<line number="56" hits="0"/>
<line number="57" hits="1"/>
<line number="59" hits="1"/>
<line number="60" hits="1"/>
<line number="62" hits="1"/>
<line number="63" hits="1"/>
<line number="64" hits="1"/>
<line number="66" hits="1"/>
<line number="67" hits="0"/>
<line number="68" hits="0"/>
</lines>
</class>
</classes>
</package>
<package name="tests" line-rate="0.9469" branch-rate="1" complexity="0">
<classes>
<class name="test_cind_load.py" filename="tests/test_cind_load.py" complexity="0" line-rate="0.9231" branch-rate="1">
<methods/>
<lines>
<line number="1" hits="1"/>
<line number="2" hits="1"/>
<line number="3" hits="1"/>
<line number="5" hits="1"/>
<line number="8" hits="1"/>
<line number="9" hits="1"/>
<line number="18" hits="0"/>
<line number="19" hits="0"/>
<line number="20" hits="0"/>
<line number="21" hits="0"/>
<line number="24" hits="1"/>
<line number="25" hits="1"/>
<line number="33" hits="1"/>
<line number="34" hits="1"/>
<line number="35" hits="1"/>
<line number="38" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="39" hits="1"/>
<line number="40" hits="1"/>
<line number="43" hits="1"/>
<line number="44" hits="1"/>
<line number="45" hits="1"/>
<line number="46" hits="1"/>
<line number="49" hits="1"/>
<line number="50" hits="1"/>
<line number="51" hits="1"/>
<line number="54" hits="1"/>
<line number="55" hits="1"/>
<line number="56" hits="1"/>
<line number="59" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="60" hits="1"/>
<line number="61" hits="1"/>
<line number="62" hits="1"/>
<line number="63" hits="1"/>
<line number="64" hits="1"/>
<line number="66" hits="1"/>
<line number="67" hits="1"/>
<line number="68" hits="1"/>
<line number="69" hits="1"/>
<line number="70" hits="1"/>
<line number="71" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="72" hits="1"/>
<line number="73" hits="1"/>
<line number="75" hits="1"/>
<line number="76" hits="1"/>
<line number="77" hits="1"/>
<line number="78" hits="1"/>
<line number="80" hits="1"/>
<line number="81" hits="1"/>
<line number="82" hits="1"/>
<line number="83" hits="1"/>
<line number="84" hits="1"/>
<line number="85" hits="1"/>
</lines>
</class>
<class name="test_usage.py" filename="tests/test_usage.py" complexity="0" line-rate="1" branch-rate="1">
<methods/>
<lines>
<line number="1" hits="1"/>
<line number="2" hits="1"/>
<line number="3" hits="1"/>
<line number="4" hits="1"/>
<line number="5" hits="1"/>
<line number="7" hits="1"/>
<line number="8" hits="1"/>
<line number="10" hits="1"/>
<line number="11" hits="1"/>
<line number="12" hits="1"/>
<line number="13" hits="1"/>
<line number="16" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="17" hits="1"/>
<line number="18" hits="1"/>
<line number="21" hits="1"/>
<line number="22" hits="1"/>
<line number="23" hits="1"/>
<line number="24" hits="1"/>
<line number="25" hits="1"/>
<line number="26" hits="1"/>
<line number="27" hits="1"/>
<line number="28" hits="1"/>
<line number="31" hits="1"/>
<line number="32" hits="1"/>
<line number="33" hits="1"/>
<line number="36" hits="1"/>
<line number="39" hits="1"/>
<line number="40" hits="1"/>
<line number="41" hits="1"/>
</lines>
</class>
<class name="test_vcap_load.py" filename="tests/test_vcap_load.py" complexity="0" line-rate="0.9231" branch-rate="1">
<methods/>
<lines>
<line number="1" hits="1"/>
<line number="2" hits="1"/>
<line number="3" hits="1"/>
<line number="5" hits="1"/>
<line number="8" hits="1"/>
<line number="9" hits="1"/>
<line number="18" hits="0"/>
<line number="19" hits="0"/>
<line number="20" hits="0"/>
<line number="21" hits="0"/>
<line number="24" hits="1"/>
<line number="25" hits="1"/>
<line number="33" hits="1"/>
<line number="34" hits="1"/>
<line number="35" hits="1"/>
<line number="38" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="39" hits="1"/>
<line number="40" hits="1"/>
<line number="43" hits="1"/>
<line number="44" hits="1"/>
<line number="45" hits="1"/>
<line number="46" hits="1"/>
<line number="49" hits="1"/>
<line number="50" hits="1"/>
<line number="51" hits="1"/>
<line number="54" hits="1"/>
<line number="55" hits="1"/>
<line number="56" hits="1"/>
<line number="59" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="60" hits="1"/>
<line number="61" hits="1"/>
<line number="62" hits="1"/>
<line number="63" hits="1"/>
<line number="64" hits="1"/>
<line number="66" hits="1"/>
<line number="67" hits="1"/>
<line number="68" hits="1"/>
<line number="69" hits="1"/>
<line number="70" hits="1"/>
<line number="71" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="72" hits="1"/>
<line number="73" hits="1"/>
<line number="75" hits="1"/>
<line number="76" hits="1"/>
<line number="77" hits="1"/>
<line number="78" hits="1"/>
<line number="80" hits="1"/>
<line number="81" hits="1"/>
<line number="82" hits="1"/>
<line number="83" hits="1"/>
<line number="84" hits="1"/>
<line number="85" hits="1"/>
</lines>
</class>
<class name="test_vind_load.py" filename="tests/test_vind_load.py" complexity="0" line-rate="0.9259" branch-rate="1">
<methods/>
<lines>
<line number="1" hits="1"/>
<line number="2" hits="1"/>
<line number="3" hits="1"/>
<line number="5" hits="1"/>
<line number="8" hits="1"/>
<line number="9" hits="1"/>
<line number="18" hits="0"/>
<line number="19" hits="0"/>
<line number="20" hits="0"/>
<line number="21" hits="0"/>
<line number="24" hits="1"/>
<line number="25" hits="1"/>
<line number="33" hits="1"/>
<line number="34" hits="1"/>
<line number="35" hits="1"/>
<line number="38" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="39" hits="1"/>
<line number="40" hits="1"/>
<line number="43" hits="1"/>
<line number="44" hits="1"/>
<line number="45" hits="1"/>
<line number="46" hits="1"/>
<line number="49" hits="1"/>
<line number="50" hits="1"/>
<line number="51" hits="1"/>
<line number="54" hits="1"/>
<line number="55" hits="1"/>
<line number="56" hits="1"/>
<line number="59" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="60" hits="1"/>
<line number="61" hits="1"/>
<line number="62" hits="1"/>
<line number="63" hits="1"/>
<line number="64" hits="1"/>
<line number="66" hits="1"/>
<line number="67" hits="1"/>
<line number="68" hits="1"/>
<line number="69" hits="1"/>
<line number="70" hits="1"/>
<line number="71" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="72" hits="1"/>
<line number="73" hits="1"/>
<line number="75" hits="1"/>
<line number="76" hits="1"/>
<line number="77" hits="1"/>
<line number="78" hits="1"/>
<line number="80" hits="1"/>
<line number="81" hits="1"/>
<line number="82" hits="1"/>
<line number="83" hits="1"/>
<line number="84" hits="1"/>
<line number="85" hits="1"/>
<line number="87" hits="1"/>
<line number="88" hits="1"/>
</lines>
</class>
<class name="test_yml_config.py" filename="tests/test_yml_config.py" complexity="0" line-rate="1" branch-rate="1">
<methods/>
<lines>
<line number="1" hits="1"/>
<line number="2" hits="1"/>
<line number="4" hits="1"/>
<line number="5" hits="1"/>
<line number="7" hits="1"/>
<line number="8" hits="1"/>
<line number="11" hits="1"/>
<line number="12" hits="1"/>
<line number="13" hits="1"/>
<line number="16" hits="1"/>
<line number="17" hits="1"/>
<line number="18" hits="1"/>
<line number="19" hits="1"/>
<line number="20" hits="1"/>
<line number="21" hits="1"/>
<line number="24" hits="1"/>
<line number="25" hits="1"/>
<line number="28" hits="1"/>
<line number="29" hits="1"/>
<line number="32" hits="1"/>
<line number="33" hits="1"/>
<line number="34" hits="1"/>
<line number="37" hits="1"/>
<line number="38" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="39" hits="1"/>
<line number="40" hits="1"/>
<line number="41" hits="1"/>
<line number="42" hits="1"/>
<line number="43" hits="1"/>
<line number="44" hits="1"/>
<line number="45" hits="1"/>
<line number="46" hits="1"/>
<line number="47" hits="1"/>
<line number="48" hits="1"/>
<line number="49" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="50" hits="1"/>
<line number="51" hits="1"/>
<line number="52" hits="1"/>
<line number="53" hits="1"/>
</lines>
</class>
</classes>
</package>
</packages>
</coverage>
Possible fixes
No idea of the line of code, but I suppose that the "Automatic class path correction" is somehow faulty.