hurl/bin/coverage_uncovered_lines.py
2023-12-07 12:41:59 +00:00

43 lines
1.1 KiB
Python
Executable File

#!/usr/bin/env python3
import sys
from bs4 import BeautifulSoup
COVERAGE_DIR = "target/coverage"
def uncovered_lines(src_file):
html_file = COVERAGE_DIR + "/" + src_file + ".html"
sys.stderr.write(html_file + "\n")
html = open(html_file).read()
soup = BeautifulSoup(html, "html.parser")
elements = soup.select('div[role="row"]')
lines = []
for element in elements:
line = parse_row(element)
if line is not None:
lines.append(line)
return lines
def parse_row(element):
uncovered = element.select(".has-background-danger-light")
if len(uncovered) > 0:
line_number = element.select("div:first-child")[0]["id"]
line = uncovered[0].select("pre")[0].text
return line_number, line
return None
def main():
sys.stderr.write("Extracting uncovered lines\n")
for src_file in sys.argv[1:]:
lines = uncovered_lines(src_file)
if len(lines) > 0:
print(src_file)
for line_number, line in lines:
print("%s %s" % (line_number, line))
if __name__ == "__main__":
main()