Skip to content

Commit

Permalink
Merge pull request #457 from bwoodsend/gcov
Browse files Browse the repository at this point in the history
  • Loading branch information
hugovk committed Apr 7, 2021
2 parents a1182b8 + 25dad7e commit c40a9b4
Show file tree
Hide file tree
Showing 3 changed files with 46 additions and 0 deletions.
12 changes: 12 additions & 0 deletions .github/workflows/test.yml
Expand Up @@ -49,3 +49,15 @@ jobs:
- name: Tests
run: |
pytest
- name: Test with coverage
if: ${{ startsWith(matrix.os, 'ubuntu') && matrix.python-version == '3.9' }}
env:
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
run: |
pip install -e .
pip install coverage
CFLAGS="--coverage -O0" python setup.py -q build_ext --inplace -f
coverage run -m pytest
./scripts/coverage.sh
bash <(curl -s https://codecov.io/bash) -X gcov
6 changes: 6 additions & 0 deletions .gitignore
Expand Up @@ -141,3 +141,9 @@ python/version.h
# Docker wheel build
pip-cache/
temp-wheels/

# gcov coverage files
cov
*.gcov
*.gcda
*.gcno
28 changes: 28 additions & 0 deletions scripts/coverage.sh
@@ -0,0 +1,28 @@
#!/usr/bin/env bash

# Coverage for ultrajson's C code.
# Usage:
# CFLAGS="--coverage -O0" python setup.py -q build_ext --inplace -f
# pytest
# ./scripts/coverage.sh
# Then inspect the files in the `cov` folder.

# The exact arguments depend on whether we're using LLVM's gcov or GNU's.
unameOut="$(uname -s)"
case "${unameOut}" in
Linux*) gcov_options=(--relative-only);;
Darwin*) gcov_options=(--color);;
*) echo "Unsupported OS ${unameOut}"; exit 1;;
esac

# The actual gcov instructions:
gcov "${gcov_options[@]}" python/**.c -o build/temp.*/python
gcov "${gcov_options[@]}" lib/**.c -o build/temp.*/lib

# gcov dumps everything in the cwd without any option to change this.
# Manually move the .gcov files to a `cov` folder.
mkdir -p cov
rm -rf cov/*
mv ./**.gcov cov || exit 1

echo Written gcov files to ./cov

0 comments on commit c40a9b4

Please sign in to comment.