From fb3644c40b7a28255eaf3048b3560cb3c31ebf3c Mon Sep 17 00:00:00 2001 From: Christoph Reiter Date: Fri, 20 Dec 2019 16:48:00 +0100 Subject: CI: make things work with coverage.py 5.x It has changed its internal format to sqlite and still doesn't provide a way to merge runs from different OSes, see https://github.com/nedbat/coveragepy/issues/903 --- .gitlab-ci/coverage-docker.sh | 3 ++- .gitlab-ci/fixup-cov-paths.py | 35 ----------------------------------- .gitlab-ci/fixup-covpy-paths.py | 17 +++++++++++++++++ .gitlab-ci/fixup-lcov-paths.py | 35 +++++++++++++++++++++++++++++++++++ .gitlab-ci/test-msys2.sh | 3 --- setup.cfg | 1 + 6 files changed, 55 insertions(+), 39 deletions(-) delete mode 100644 .gitlab-ci/fixup-cov-paths.py create mode 100644 .gitlab-ci/fixup-covpy-paths.py create mode 100644 .gitlab-ci/fixup-lcov-paths.py diff --git a/.gitlab-ci/coverage-docker.sh b/.gitlab-ci/coverage-docker.sh index 2a51d036..9b3e12ea 100755 --- a/.gitlab-ci/coverage-docker.sh +++ b/.gitlab-ci/coverage-docker.sh @@ -5,7 +5,8 @@ set -e python -m pip install coverage # Make the Windows paths match our current layout -python ./.gitlab-ci/fixup-cov-paths.py coverage/.coverage* coverage/*.lcov +python ./.gitlab-ci/fixup-lcov-paths.py coverage/*.lcov +python ./.gitlab-ci/fixup-covpy-paths.py coverage/.coverage* # Remove external headers (except gi tests) for path in coverage/*.lcov; do diff --git a/.gitlab-ci/fixup-cov-paths.py b/.gitlab-ci/fixup-cov-paths.py deleted file mode 100644 index a6f43e44..00000000 --- a/.gitlab-ci/fixup-cov-paths.py +++ /dev/null @@ -1,35 +0,0 @@ -from __future__ import print_function - -import sys -import os -import io - - -def main(argv): - # Fix paths in coverage files to match our current source layout - # so that coverage report generators can find the source. - # Mostly needed for Windows. - paths = argv[1:] - - for path in paths: - print("cov-fixup:", path) - text = io.open(path, "r", encoding="utf-8").read() - text = text.replace("\\\\", "/") - end = text.index("/gi/") - try: - # coverage.py - start = text[:end].rindex("\"") + 1 - except ValueError: - # lcov - start = text[:end].rindex(":") + 1 - old_root = text[start:end] - new_root = os.getcwd() - if old_root != new_root: - print("replacing %r with %r" % (old_root, new_root)) - text = text.replace(old_root, new_root) - with io.open(path, "w", encoding="utf-8") as h: - h.write(text) - - -if __name__ == "__main__": - sys.exit(main(sys.argv)) diff --git a/.gitlab-ci/fixup-covpy-paths.py b/.gitlab-ci/fixup-covpy-paths.py new file mode 100644 index 00000000..3efdc5a6 --- /dev/null +++ b/.gitlab-ci/fixup-covpy-paths.py @@ -0,0 +1,17 @@ +import sys +import sqlite3 + + +def main(argv): + paths = argv[1:] + + for path in paths: + # https://github.com/nedbat/coveragepy/issues/903 + conn = sqlite3.connect(path) + conn.execute("UPDATE file set path = REPLACE(path, '\\', '/')") + conn.commit() + conn.close() + + +if __name__ == "__main__": + sys.exit(main(sys.argv)) diff --git a/.gitlab-ci/fixup-lcov-paths.py b/.gitlab-ci/fixup-lcov-paths.py new file mode 100644 index 00000000..a6f43e44 --- /dev/null +++ b/.gitlab-ci/fixup-lcov-paths.py @@ -0,0 +1,35 @@ +from __future__ import print_function + +import sys +import os +import io + + +def main(argv): + # Fix paths in coverage files to match our current source layout + # so that coverage report generators can find the source. + # Mostly needed for Windows. + paths = argv[1:] + + for path in paths: + print("cov-fixup:", path) + text = io.open(path, "r", encoding="utf-8").read() + text = text.replace("\\\\", "/") + end = text.index("/gi/") + try: + # coverage.py + start = text[:end].rindex("\"") + 1 + except ValueError: + # lcov + start = text[:end].rindex(":") + 1 + old_root = text[start:end] + new_root = os.getcwd() + if old_root != new_root: + print("replacing %r with %r" % (old_root, new_root)) + text = text.replace(old_root, new_root) + with io.open(path, "w", encoding="utf-8") as h: + h.write(text) + + +if __name__ == "__main__": + sys.exit(main(sys.argv)) diff --git a/.gitlab-ci/test-msys2.sh b/.gitlab-ci/test-msys2.sh index 9f3d8759..38d4fbc1 100755 --- a/.gitlab-ci/test-msys2.sh +++ b/.gitlab-ci/test-msys2.sh @@ -31,9 +31,6 @@ pacman --noconfirm -S --needed \ git \ perl -# https://github.com/Alexpux/MINGW-packages/issues/4333 -pacman --noconfirm -S --needed mingw-w64-$MSYS2_ARCH-$PYTHON-pathlib2 - # ccache setup export PATH="$MSYSTEM/lib/ccache/bin:$PATH" mkdir -p _ccache diff --git a/setup.cfg b/setup.cfg index 33186d68..c165fa29 100644 --- a/setup.cfg +++ b/setup.cfg @@ -4,6 +4,7 @@ exclude=subprojects [coverage:run] branch=True +relative_files=True include= gi/* tests/* -- cgit v1.2.1