ryanluker / vscode-coverage-gutters

Display test coverage generated by lcov and xml - works with many languages
https://marketplace.visualstudio.com/items?itemName=ryanluker.vscode-coverage-gutters
MIT License
464 stars 90 forks source link

Coverage information fails to render when branch coverage is enabled #428

Open davidjrice opened 1 year ago

davidjrice commented 1 year ago

Describe the bug The code coverage information does not load for this one file in a project I'm working on, it renders correctly for the rest. Thankfully it's open sourced though so it's easy to reproduce.

To Reproduce Steps to reproduce the behaviour:

git clone https://github.com/davidjrice/autopytest.git
make deps
make test

The coverage information should be generated to .coverage/lcov.info

Expected behaviour Coverage information should be shown for the file autopytest/autotest.py

Desktop:

Additional context

I've attached a sample of the lcov.info dump from my project for the version @ davidjrice/autopytest#7c927c9

UPDATE: I have managed to track it down to one of the specific lines in the lcov output. Line 82. If I delete that, the coverage gutter renders correctly.

BRDA:0,3,0,-
lcov.info ``` TN: SF:autopytest/__init__.py DA:1,1,L+Y7/v9pGtZw7CR2v9eS1g DA:3,1,Ba8BbWzTZYxN+sS2jfKSIg LF:2 LH:2 BRF:0 BRH:0 end_of_record TN: SF:autopytest/autotest.py DA:1,1,CmQjML8SXrFpIKwAziTVSA DA:2,1,p7hNY1S5rX9QtYADf+cK4g DA:3,1,mUDsnWRiqW9R9nTILGKIZg DA:4,1,4KXOIu0EzlFAqlH6QJ+whA DA:5,1,6vWAvNsegNqafFN4IKLrhg DA:7,1,4XuB/r5BWS2VCfv6SOlIpQ DA:8,1,HhSt8mj/hlUExdhVbEHBrw DA:10,1,Z29K/w6UHxj2yIDWywfM/g DA:11,1,mJDv6ZWD6AS6WrbFLQLwlQ DA:12,1,NY0SMcFRNTXkXd0D5s0Zvg DA:13,1,YjVobaYBCRI9bPeRCCKu4A DA:16,1,UEIGwCN2+ZRoAgjJqZaLJw DA:17,1,SkNgFMo57LTDaw1P42lXSA DA:18,1,hDqMbknywtk6wERVZZ7EUg DA:23,1,yY4aJjJQARSPhNergDw35A DA:24,1,OGcjHGDn1EYJwG/P8VA65A DA:26,1,OQNDvILy5Wx4uq/F418OHg DA:27,1,K0LrGT5GevFr0YL2KfAtTA DA:28,1,elm9+iWzhSgtHKMdvvmCOw DA:29,1,2kWpGzrRXm3LTMKBhBagyA DA:32,1,UH+1D0yXv5NYK2ZXi86uYA DA:33,1,xWYnJCkWvmfdHqchwthJqw DA:35,1,tDHOxfihvhJSIucyLbR+KA DA:36,1,75canBlb/qAQdX1kewX3qQ DA:38,1,ERY1K5/nKRDbnTpiV88ecA DA:52,1,Vkf4O8UxtweqKWQ0V+HXdg DA:53,1,hFsltHIK5H4jXyFzDkpdSg DA:54,1,okjKkPxoLU5EBoJhNyC+wg DA:57,1,DiDGWCHZGAaqtD0yMvXgiw DA:58,1,zpnNP3ROEId9peEsaAhteA DA:60,1,OBDswRFs0LH5ZVdF9HzSmg DA:62,1,ktSQaJ933Ack00iXuvvg2g DA:64,1,6mi8s8oToNm04r3wvzSh1w DA:65,1,7FLfMM1R3hXNqTrOX8kL2Q DA:66,1,uB3KYHYZ1Oa4xe5HSlm1SQ DA:67,1,7AizVNNN53ZxkL3olSUlIQ DA:68,1,MnzpXe1veqpfA7nIMRo0OA DA:70,1,FrC1LDEEdGO9+Cfg/q3iFg DA:71,1,ONa/wNjE0W+BNFZvmMJBlQ DA:72,1,j4l71zbIal5I09fhNuEe/g DA:78,1,kFfbGt2VSHVnmgP/ay7UYg DA:79,1,ZhWQYRhLedVqlsmXiQh75w DA:80,1,LyRYBTs0Ub+zqAZx1q+cHA DA:39,0,8DuZH0CF3f7BkCQNCHdWng DA:41,0,KISpQQSVIPnaw9WgVApIHA DA:42,0,xjcDBnSwra0OiNOAYAwoHA DA:43,0,4DHWKiBFAhYGQ4MhsCjVJA DA:44,0,GkmYLxAcqLPWIENxFu0B6g DA:45,0,SkO+HohD3ftvzHDUY1PbjA DA:46,0,Uwy2viRXKqI9Un2npdYDbw DA:47,0,KvHLPOcnSqaUfx5CVjGgKg DA:49,0,upAtmPCvEsm38GAy6O71ww DA:50,0,kD6yCpJnRKSby1zzM5YDgQ DA:55,0,MnzpXe1veqpfA7nIMRo0OA LF:54 LH:43 BRDA:28,0,0,1 BRDA:35,0,1,1 BRDA:55,1,0,- BRDA:57,1,1,1 BRDA:65,2,0,1 BRDA:70,2,1,1 BRDA:0,3,0,- BRDA:71,3,1,1 BRDA:70,4,0,- BRDA:72,4,1,1 BRF:10 BRH:7 end_of_record TN: SF:autopytest/cli.py DA:1,1,mUDsnWRiqW9R9nTILGKIZg DA:3,1,4VuCxs9I2MXuN6cquQ24Hg DA:6,1,Qc6dQ+MR6SEc7PwReo0kBQ DA:7,1,R0LOecDW3KZ+rpM4tB7/9g DA:8,1,RY/kl46aUeosM9LcQ1Je8w DA:9,1,u6KXqa2XiOHph8QwQw0xrw DA:12,1,anLwUjx/Sxmj/0lcG6qlxQ DA:13,1,+bJC1GOZZjqV1KG6nW+dFw LF:8 LH:8 BRF:0 BRH:0 end_of_record TN: SF:autopytest/config.py DA:1,1,doJ+s5jyvyJiPCQebfFcIA DA:2,1,p7hNY1S5rX9QtYADf+cK4g DA:3,1,7HpIEQVf5K0efdTzo05mJg DA:4,1,6vWAvNsegNqafFN4IKLrhg DA:5,1,gGTQvjsCFZRTAK01JA8k5Q DA:7,1,LqcQRU1tw3LZiWu0BEsDJQ DA:9,1,eEvOIw/jIOtCpWdZQYzPhg DA:13,1,vMeBd8Zy1dYSGHcVgG4huA DA:15,1,m/x4R99eTJltxBerWj3g7w DA:17,1,9xsRTsQ/179gTxevCbZycw DA:31,1,CT9XrugR0VmgtyLiirko8A DA:32,1,W1vzqS5yEbTtOfddYP2dfg DA:33,1,LNHnOtGCXObpLe0XH5tEKg DA:34,1,ab0WyPcIHNhZ6FAQexnhKg DA:35,1,GSEY+o8qzNvLCigv4tDTnw DA:36,1,MUAGu62J9921agJ5991xAw DA:37,1,wpQSkBlwXysERQmdGRvqyQ DA:39,1,Nnqu9X+lU2lagW39QNhFWA DA:40,1,TLqzN85OB+BbHY964K4YQQ DA:41,1,Euq/rch0cB5RVWrSGuaj+A DA:42,1,zaPBYgvqr7unnYvQdi/78w DA:43,1,+SJAuvz1J0/tyuQl/nYxEg DA:45,1,HmADa1g/W1C2Vo9Wm4sNNA DA:46,1,Z4L4JIF2IavHqHB+Tdfbrw DA:47,1,TuCzgwiFDFgBq9ESr80DGw DA:49,1,HmADa1g/W1C2Vo9Wm4sNNA DA:50,1,mudHU8DNYh8eXcwm3V3VgQ DA:51,1,dR5kCOfX9+3i8pwNtknoTw DA:53,1,HmADa1g/W1C2Vo9Wm4sNNA DA:54,1,/uq5CQaPvldIBL8ovv+8eQ DA:55,1,ajY4AYjiJgahn2OdFLOEsQ DA:57,1,HmADa1g/W1C2Vo9Wm4sNNA DA:58,1,cOpsMWVOItkH3ppYuQHgdA DA:59,1,uJ39uBY2ABt/HB3o1YPSbg DA:62,1,rSn4fqrApBgYNQvnxjlJtw DA:63,1,qaWHH34q/TER7sWZuxZ2lg DA:64,1,jJuK0HBi5LeyPxIXC43IQw DA:65,1,xjcDBnSwra0OiNOAYAwoHA DA:66,1,2sQRPrCOZ3AChja4zi/A7Q DA:70,1,lOOQ9CJHlGx69BXYj3Ks1A DA:72,1,u5Rxld9ylbXM+aVfn/rYXg DA:10,0,B2nk/9x1NUhuRejowKhweQ DA:11,0,fmyPdYlscX7P1sT8lk670Q DA:67,0,Z0de334jRadqdmneeMSW9A DA:68,0,rkURDR0kVxd1zcISlSSDAQ LF:45 LH:41 BRDA:10,0,0,- BRDA:13,0,1,1 BRDA:32,1,0,1 BRDA:33,1,1,1 BRDA:39,2,0,1 BRDA:45,2,1,1 BRDA:45,3,0,1 BRDA:49,3,1,1 BRDA:49,4,0,1 BRDA:53,4,1,1 BRDA:53,5,0,1 BRDA:57,5,1,1 BRDA:0,6,0,1 BRDA:57,6,1,1 BRDA:65,7,0,1 BRDA:70,7,1,1 BRF:16 BRH:15 end_of_record TN: SF:autopytest/file.py DA:1,1,XIMNrsE4hb4ziOGy4GNuQA DA:2,1,6vWAvNsegNqafFN4IKLrhg DA:4,1,NY0SMcFRNTXkXd0D5s0Zvg DA:7,1,IwQrfHY6QLCIcyAx4jr7YA DA:8,1,79aAOS6LhvDwyebeiMmDTA DA:9,1,43cj6ORhjj1LeAFz93X9tQ DA:10,1,b+9+H5K7xbyZMSHuamrSGg DA:11,1,zMp926XLamv42jvC+1Q6Jg DA:12,1,56N/8s+DY+WSTbIg8hNHNQ DA:16,1,P0rM2vm7flVElomMikBWJw DA:17,1,mudHU8DNYh8eXcwm3V3VgQ DA:18,1,sY94mVHHAhgUZ/JJZKfP/w DA:19,1,HrvX4CA3MmExHWSZMsUdCQ DA:21,1,Ps5bU78sfSXy6NIMYWjhvw DA:22,1,oPhOQN6TkKmUxauyh+becg DA:23,1,YktoBJhUL5h2V2fGiHrIKw DA:25,1,iX6EbOWKrfy6+ysJ3AFz3Q DA:26,1,+plWgmSKGJjoSGAiqS5YFA LF:18 LH:18 BRDA:0,0,0,1 BRDA:16,0,1,1 BRDA:19,1,0,1 BRDA:21,1,1,1 BRF:4 BRH:4 end_of_record TN: SF:autopytest/runners/__init__.py LF:0 LH:0 BRF:0 BRH:0 end_of_record TN: SF:autopytest/runners/pytest.py DA:1,1,XRh5gz49gzin2tgbGaB31w DA:2,1,xIufkPwlvKWKBdjKaaDUsQ DA:5,1,v9az3yajLv5CYImaMzJQTA DA:6,1,o+SSeNzgVF3fFY+n/S2Jvw DA:12,1,Nnqu9X+lU2lagW39QNhFWA DA:13,1,aT5K92dXmxll1l76/efr5g DA:14,1,U081eABjdWiLwlm6AkPvEA DA:16,1,Nnqu9X+lU2lagW39QNhFWA DA:17,1,aTYgSRkYgLNE0lJcJ1Ivkg DA:18,1,9cBkwsbtUVcnOO8BgHJ2KA LF:10 LH:10 BRDA:12,0,0,1 BRDA:16,0,1,1 BRDA:0,1,0,1 BRDA:16,1,1,1 BRF:4 BRH:4 end_of_record TN: SF:autopytest/source.py DA:1,1,p7hNY1S5rX9QtYADf+cK4g DA:2,1,6vWAvNsegNqafFN4IKLrhg DA:5,1,Vt5O9l+ixVZ6tA0wFse3JA DA:6,1,lffdfHLSKl1/x+kjhj+1og DA:7,1,LyUiiFGERykPXYdynQhQaw DA:8,1,1jhNTCVUJjEidVQPCOtw/Q DA:9,1,CFpE50i7nmdkx1wpo5IgMw DA:11,1,HmADa1g/W1C2Vo9Wm4sNNA DA:12,1,YLcx4QIH9dGIYkjoLz4R0A DA:13,1,EtFT4nuymHqd8l90zAHhqw DA:15,1,HmADa1g/W1C2Vo9Wm4sNNA DA:16,1,R5G7WmnHAYPDgjK47WfCQQ DA:17,1,22huEmnv80pGAjZo9ewrSw DA:19,1,HmADa1g/W1C2Vo9Wm4sNNA DA:20,1,Z4L4JIF2IavHqHB+Tdfbrw DA:21,1,GMpNvrgu7n8/wzx/ddXFfQ DA:23,1,HmADa1g/W1C2Vo9Wm4sNNA DA:24,1,+XOszJt5XQO6LnWdiGm+rA DA:25,1,RYofuz+TALCfjSB64kCYtg DA:27,1,HmADa1g/W1C2Vo9Wm4sNNA DA:28,1,OHzRSUGLy2TVPdcVMLzkJA DA:29,1,LET1AvHAFFJ+d6wBgayaZg DA:31,1,HmADa1g/W1C2Vo9Wm4sNNA DA:32,1,dry2JbUf7py9JczJ1vOM+w DA:33,1,cf+7mO/ieI8tD5JQHHMaLQ DA:35,1,CDNmbL2rwJpUi5GvGwMMCw DA:36,1,zjRxW5hY3PAX7DvAHN3hlw DA:38,1,pgj2/97Ru6VKWspaE8N7nQ DA:39,1,+abwtcSj0dn4N4NW+Uc6tg LF:29 LH:29 BRDA:11,0,0,1 BRDA:15,0,1,1 BRDA:15,1,0,1 BRDA:19,1,1,1 BRDA:19,2,0,1 BRDA:23,2,1,1 BRDA:23,3,0,1 BRDA:27,3,1,1 BRDA:27,4,0,1 BRDA:31,4,1,1 BRDA:31,5,0,1 BRDA:35,5,1,1 BRF:12 BRH:12 end_of_record TN: SF:autopytest/strategy.py DA:1,1,CmQjML8SXrFpIKwAziTVSA DA:2,1,6vWAvNsegNqafFN4IKLrhg DA:4,1,mJDv6ZWD6AS6WrbFLQLwlQ DA:5,1,fG3Kmj9shb63i8mzJ3eOJg DA:8,1,WrJAJi3NEqKTRV6hmV96MA DA:9,1,HBwCXTZ1wlAg7ZtrNgw4fA DA:13,1,qJj3fd6vPtfOjIG8eqKZ1w DA:14,1,6pc5rExol30BMgdnehauqQ DA:15,1,8uL80V5kFI3X5IZiIJEjjA DA:17,1,4TeJuAOtaKeRWuM7Ca9Sfg DA:18,1,+37mZhxjjC3cEzmQ2xeXBQ DA:20,1,yN4Ams3MwHwN657aN1/R1Q DA:21,1,jLV499PV9G6m07uxm2/iow DA:23,1,HjjbZMKO47VAQ5RE5XP44g DA:25,1,sZX443Pq0rBEte1P53xc7A DA:26,1,W3wo0/n9uL4AiMl79Ymbew DA:28,1,HmADa1g/W1C2Vo9Wm4sNNA DA:29,1,HusjzEDMd4CFAaeTlwQjvg DA:30,1,ZGancFBU/ZMCIXthknb3YQ DA:31,1,J94aw2UhiUStYhKA0HpJwQ DA:32,1,LaGi9n7so4fXyS25BjpCgQ DA:33,1,5D4andPVD6BIQpV0Apy0AA DA:36,1,HmADa1g/W1C2Vo9Wm4sNNA DA:37,1,c4hde/GxM4oZgYxhJqnSVA DA:38,1,ZGancFBU/ZMCIXthknb3YQ DA:39,1,jOTOPiWTLK6AJ8ughp/7bA DA:44,1,HmADa1g/W1C2Vo9Wm4sNNA DA:45,1,b2BZO/W3Me9Bcq990HyJEA DA:46,1,ZGancFBU/ZMCIXthknb3YQ DA:47,1,Ds62OH2cm56TIYhHIeVJ+A DA:54,1,peOUVXk2+OX1X7nsyZaqyQ DA:55,1,sZX443Pq0rBEte1P53xc7A DA:56,1,94W39B3oLuDZ26yuFQFESw DA:57,1,bfdmIbG0HGKJFMeQQ4Az4A DA:61,1,Wgukg3FjEMm4KDVJLYi1Hg DA:64,1,FhfOmnRp2fIncTGODnT47Q DA:65,1,sZX443Pq0rBEte1P53xc7A DA:66,1,Wgukg3FjEMm4KDVJLYi1Hg DA:10,0,hLpIwRRoMeQo5l+xIEsE4g DA:19,0,0bjHwki3DEvhWk0bng956Q DA:34,0,xO6jxvy51vVNl+WwVx1k1w DA:40,0,LaGi9n7so4fXyS25BjpCgQ DA:41,0,5D4andPVD6BIQpV0Apy0AA DA:42,0,xO6jxvy51vVNl+WwVx1k1w DA:48,0,LaGi9n7so4fXyS25BjpCgQ DA:49,0,zXTw88mbSbXJ5rc3EyDojw DA:51,0,xO6jxvy51vVNl+WwVx1k1w LF:47 LH:38 BRDA:19,0,0,- BRDA:20,0,1,1 BRDA:21,1,0,1 BRDA:23,1,1,1 BRDA:28,2,0,1 BRDA:36,2,1,1 BRDA:31,3,0,1 BRDA:32,3,1,1 BRDA:34,4,0,- BRDA:33,4,1,1 BRDA:36,5,0,1 BRDA:44,5,1,1 BRDA:40,6,0,- BRDA:39,6,1,1 BRDA:41,7,0,- BRDA:42,7,1,- BRDA:0,8,0,1 BRDA:44,8,1,1 BRDA:48,9,0,- BRDA:47,9,1,1 BRDA:49,10,0,- BRDA:51,10,1,- BRDA:61,11,0,- BRDA:57,11,1,1 BRF:24 BRH:15 end_of_record ```
ryanluker commented 11 months ago

@davidjrice Thanks for the ticket!

BRDA:0,3,0,-

Interesting finding on the branch coverage above... I wonder if the lcov library is missing some considerations for this. The library we use is quick old as well, there might be better options nowadays. https://github.com/davglass/lcov-parse