lcov-to-cobertura-xml
lcov-to-cobertura-xml copied to clipboard
Patch 1
xml.dom use too much memory, so converting big lcov file may result in memory error on memory limitated environment like jenkins. xml.etree will reduce memory usage to under 10~20% than xml.dom. But xml.etree not support prettyxml, so if you want to generate pretty xml, use xmllint.
If this is useless, let me know.
I was also having issues with a large sample file (~128 MBs or so) which makes me want to test this...
I rebased on master but now the diff tests are failing:
$ tox -e py39-linux
py39-linux create: /home/nerdboy/src/lcov-to-cobertura-xml.work/.tox/py39-linux
py39-linux installdeps: pip>=20.3, -e.[test,cov]
py39-linux installed: attrs==21.4.0,coverage==6.3.2,iniconfig==1.1.1,-e git+ssh://[email protected]/sarnold/lcov-to-cobertura-xml.git@39d9a61e2ffc6d1101dd9a3df363e2f14f7daed0#egg=lcov_cobertura,lxml==4.8.0,packaging==21.3,pluggy==1.0.0,py==1.11.0,pyparsing==3.0.7,pytest==7.1.1,pytest-cov==3.0.0,six==1.16.0,tomli==2.0.1,xmldiff==2.4
py39-linux run-test-pre: PYTHONHASHSEED='2106106915'
py39-linux run-test: commands[0] | pytest -v . --capture=no --doctest-modules --cov lcov_cobertura --cov-branch --cov-report term-missing
============================= test session starts ==============================
platform linux -- Python 3.9.7, pytest-7.1.1, pluggy-1.0.0 -- /home/nerdboy/src/lcov-to-cobertura-xml.work/.tox/py39-linux/bin/python
cachedir: .tox/py39-linux/.pytest_cache
rootdir: /home/nerdboy/src/lcov-to-cobertura-xml.work, configfile: pyproject.toml
plugins: cov-3.0.0
collected 8 items
lcov_cobertura/lcov_cobertura.py::lcov_cobertura.LcovCobertura FAILED
test/test_lcov_cobertura.py::Test::test_demangle PASSED
test/test_lcov_cobertura.py::Test::test_exclude_package_from_parser PASSED
test/test_lcov_cobertura.py::Test::test_generate_cobertura_xml FAILED
test/test_lcov_cobertura.py::Test::test_parse PASSED
test/test_lcov_cobertura.py::Test::test_parse_with_functions PASSED
test/test_lcov_cobertura.py::Test::test_support_function_names_with_commas PASSED
test/test_lcov_cobertura.py::Test::test_treat_non_integer_line_execution_count_as_zero PASSED
@doyou89 Please rebase your branch against master and try again? The tools are a bit nicer now; just install tox and run tox -e py. I didn't try my test file yet, but LLVM source coverage seems to contain 4 different metrics, namely Branch, Line, Function, and Region coverage. It does work with a small-ish LLVM lcov file, just not the big one.
Well, it does work on the large file, and the coverage.xml file is 248MB:
$ time tox -e big
big installed: lcov-cobertura==2.0.1
big run-test-pre: PYTHONHASHSEED='4002387385'
big runtests: commands[0] | lcov_cobertura test/lcov.info --output coverage.xml
___________________________________ summary ____________________________________
big: commands succeeded
congratulations :)
real 5m45.614s
user 5m39.118s
sys 0m6.074s
@sarnold thank you for check. Conflicts resolved, merge plz.
@sarnold I had rebased my branch. merge plz.