workflow: Enable address sanitizer for various CMake builds
This commit is contained in:
parent
b963450b45
commit
b9af71db7f
|
|
@ -29,6 +29,7 @@ jobs:
|
||||||
python: YES
|
python: YES
|
||||||
eigen: NO
|
eigen: NO
|
||||||
double: YES
|
double: YES
|
||||||
|
asan: YES
|
||||||
|
|
||||||
- profile: ubuntu-bionic-coverage-ninja
|
- profile: ubuntu-bionic-coverage-ninja
|
||||||
os: ubuntu-22.04
|
os: ubuntu-22.04
|
||||||
|
|
@ -40,6 +41,7 @@ jobs:
|
||||||
python: YES
|
python: YES
|
||||||
eigen: NO
|
eigen: NO
|
||||||
double: NO
|
double: NO
|
||||||
|
asan: YES
|
||||||
|
|
||||||
#- profile: macos-coverage-unity-xcode
|
#- profile: macos-coverage-unity-xcode
|
||||||
# os: macOS-15
|
# os: macOS-15
|
||||||
|
|
@ -62,6 +64,7 @@ jobs:
|
||||||
python: YES
|
python: YES
|
||||||
eigen: NO
|
eigen: NO
|
||||||
double: NO
|
double: NO
|
||||||
|
asan: YES
|
||||||
|
|
||||||
- profile: windows-standard-unity-msvc
|
- profile: windows-standard-unity-msvc
|
||||||
os: windows-2022
|
os: windows-2022
|
||||||
|
|
@ -182,8 +185,13 @@ jobs:
|
||||||
-D HAVE_PYTHON=${{ runner.os != 'Windows' && matrix.python || 'NO' }}
|
-D HAVE_PYTHON=${{ runner.os != 'Windows' && matrix.python || 'NO' }}
|
||||||
-D HAVE_EIGEN=${{ matrix.eigen }}
|
-D HAVE_EIGEN=${{ matrix.eigen }}
|
||||||
-D STDFLOAT_DOUBLE=${{ matrix.double }}
|
-D STDFLOAT_DOUBLE=${{ matrix.double }}
|
||||||
|
-D ENABLE_ASAN=${{ matrix.asan || 'NO' }}
|
||||||
..
|
..
|
||||||
|
|
||||||
|
echo "$PWD/${{ matrix.config }}/bin" >> $GITHUB_PATH
|
||||||
|
|
||||||
|
echo "$PWD/bin" >> $GITHUB_PATH
|
||||||
|
|
||||||
- name: Build (no Python)
|
- name: Build (no Python)
|
||||||
if: contains(matrix.python, 'NO')
|
if: contains(matrix.python, 'NO')
|
||||||
# BEGIN A
|
# BEGIN A
|
||||||
|
|
@ -216,11 +224,12 @@ jobs:
|
||||||
shell: bash
|
shell: bash
|
||||||
env:
|
env:
|
||||||
PYTHONPATH: ${{ matrix.config }}
|
PYTHONPATH: ${{ matrix.config }}
|
||||||
|
ASAN_OPTIONS: detect_leaks=0:detect_odr_violation=0:log_path=asan.log.py38
|
||||||
run: |
|
run: |
|
||||||
PYTHON_EXECUTABLE=$(grep 'Python_EXECUTABLE:' CMakeCache.txt | sed 's/.*=//')
|
PYTHON_EXECUTABLE=$(grep 'Python_EXECUTABLE:' CMakeCache.txt | sed 's/.*=//')
|
||||||
$PYTHON_EXECUTABLE -m pip install -r ../requirements-test.txt
|
$PYTHON_EXECUTABLE -m pip install -r ../requirements-test.txt
|
||||||
export COVERAGE_FILE=.coverage.$RANDOM LLVM_PROFILE_FILE=$PWD/pid-%p.profraw
|
export COVERAGE_FILE=.coverage.$RANDOM LLVM_PROFILE_FILE=$PWD/pid-%p.profraw
|
||||||
$PYTHON_EXECUTABLE -m pytest ../tests --cov=.
|
run_pytest ../tests --cov=.
|
||||||
# END B
|
# END B
|
||||||
|
|
||||||
- name: Setup Python (Python 3.9)
|
- name: Setup Python (Python 3.9)
|
||||||
|
|
@ -248,11 +257,12 @@ jobs:
|
||||||
shell: bash
|
shell: bash
|
||||||
env:
|
env:
|
||||||
PYTHONPATH: ${{ matrix.config }}
|
PYTHONPATH: ${{ matrix.config }}
|
||||||
|
ASAN_OPTIONS: detect_leaks=0:detect_odr_violation=0:log_path=asan.log.py39
|
||||||
run: |
|
run: |
|
||||||
PYTHON_EXECUTABLE=$(grep 'Python_EXECUTABLE:' CMakeCache.txt | sed 's/.*=//')
|
PYTHON_EXECUTABLE=$(grep 'Python_EXECUTABLE:' CMakeCache.txt | sed 's/.*=//')
|
||||||
$PYTHON_EXECUTABLE -m pip install -r ../requirements-test.txt
|
$PYTHON_EXECUTABLE -m pip install -r ../requirements-test.txt
|
||||||
export COVERAGE_FILE=.coverage.$RANDOM LLVM_PROFILE_FILE=$PWD/pid-%p.profraw
|
export COVERAGE_FILE=.coverage.$RANDOM LLVM_PROFILE_FILE=$PWD/pid-%p.profraw
|
||||||
$PYTHON_EXECUTABLE -m pytest ../tests --cov=.
|
run_pytest ../tests --cov=.
|
||||||
# END B
|
# END B
|
||||||
|
|
||||||
- name: Setup Python (Python 3.10)
|
- name: Setup Python (Python 3.10)
|
||||||
|
|
@ -280,11 +290,12 @@ jobs:
|
||||||
shell: bash
|
shell: bash
|
||||||
env:
|
env:
|
||||||
PYTHONPATH: ${{ matrix.config }}
|
PYTHONPATH: ${{ matrix.config }}
|
||||||
|
ASAN_OPTIONS: detect_leaks=0:detect_odr_violation=0:log_path=asan.log.py310
|
||||||
run: |
|
run: |
|
||||||
PYTHON_EXECUTABLE=$(grep 'Python_EXECUTABLE:' CMakeCache.txt | sed 's/.*=//')
|
PYTHON_EXECUTABLE=$(grep 'Python_EXECUTABLE:' CMakeCache.txt | sed 's/.*=//')
|
||||||
$PYTHON_EXECUTABLE -m pip install -r ../requirements-test.txt
|
$PYTHON_EXECUTABLE -m pip install -r ../requirements-test.txt
|
||||||
export COVERAGE_FILE=.coverage.$RANDOM LLVM_PROFILE_FILE=$PWD/pid-%p.profraw
|
export COVERAGE_FILE=.coverage.$RANDOM LLVM_PROFILE_FILE=$PWD/pid-%p.profraw
|
||||||
$PYTHON_EXECUTABLE -m pytest ../tests --cov=.
|
run_pytest ../tests --cov=.
|
||||||
# END B
|
# END B
|
||||||
|
|
||||||
- name: Setup Python (Python 3.11)
|
- name: Setup Python (Python 3.11)
|
||||||
|
|
@ -312,11 +323,12 @@ jobs:
|
||||||
shell: bash
|
shell: bash
|
||||||
env:
|
env:
|
||||||
PYTHONPATH: ${{ matrix.config }}
|
PYTHONPATH: ${{ matrix.config }}
|
||||||
|
ASAN_OPTIONS: detect_leaks=0:detect_odr_violation=0:log_path=asan.log.py311
|
||||||
run: |
|
run: |
|
||||||
PYTHON_EXECUTABLE=$(grep 'Python_EXECUTABLE:' CMakeCache.txt | sed 's/.*=//')
|
PYTHON_EXECUTABLE=$(grep 'Python_EXECUTABLE:' CMakeCache.txt | sed 's/.*=//')
|
||||||
$PYTHON_EXECUTABLE -m pip install -r ../requirements-test.txt
|
$PYTHON_EXECUTABLE -m pip install -r ../requirements-test.txt
|
||||||
export COVERAGE_FILE=.coverage.$RANDOM LLVM_PROFILE_FILE=$PWD/pid-%p.profraw
|
export COVERAGE_FILE=.coverage.$RANDOM LLVM_PROFILE_FILE=$PWD/pid-%p.profraw
|
||||||
$PYTHON_EXECUTABLE -m pytest ../tests --cov=.
|
run_pytest ../tests --cov=.
|
||||||
# END B
|
# END B
|
||||||
|
|
||||||
- name: Setup Python (Python 3.12)
|
- name: Setup Python (Python 3.12)
|
||||||
|
|
@ -344,13 +356,26 @@ jobs:
|
||||||
shell: bash
|
shell: bash
|
||||||
env:
|
env:
|
||||||
PYTHONPATH: ${{ matrix.config }}
|
PYTHONPATH: ${{ matrix.config }}
|
||||||
|
ASAN_OPTIONS: detect_leaks=0:detect_odr_violation=0:log_path=asan.log.py312
|
||||||
run: |
|
run: |
|
||||||
PYTHON_EXECUTABLE=$(grep 'Python_EXECUTABLE:' CMakeCache.txt | sed 's/.*=//')
|
PYTHON_EXECUTABLE=$(grep 'Python_EXECUTABLE:' CMakeCache.txt | sed 's/.*=//')
|
||||||
$PYTHON_EXECUTABLE -m pip install -r ../requirements-test.txt
|
$PYTHON_EXECUTABLE -m pip install -r ../requirements-test.txt
|
||||||
export COVERAGE_FILE=.coverage.$RANDOM LLVM_PROFILE_FILE=$PWD/pid-%p.profraw
|
export COVERAGE_FILE=.coverage.$RANDOM LLVM_PROFILE_FILE=$PWD/pid-%p.profraw
|
||||||
$PYTHON_EXECUTABLE -m pytest ../tests --cov=.
|
run_pytest ../tests --cov=.
|
||||||
# END B
|
# END B
|
||||||
|
|
||||||
|
- name: Show ASan errors
|
||||||
|
if: failure() && contains(matrix.asan, 'YES')
|
||||||
|
working-directory: build
|
||||||
|
run: |
|
||||||
|
ls -lAh asan.log.* || true
|
||||||
|
if cat asan.log.* 2>/dev/null | grep -q .; then
|
||||||
|
echo '### Address Sanitizer Report' >> $GITHUB_STEP_SUMMARY
|
||||||
|
echo '```' >> $GITHUB_STEP_SUMMARY
|
||||||
|
cat asan.log.* >> $GITHUB_STEP_SUMMARY 2>/dev/null || echo "No ASan errors found"
|
||||||
|
echo '```' >> $GITHUB_STEP_SUMMARY
|
||||||
|
fi
|
||||||
|
|
||||||
- name: Upload coverage reports
|
- name: Upload coverage reports
|
||||||
if: always() && matrix.config == 'Coverage'
|
if: always() && matrix.config == 'Coverage'
|
||||||
working-directory: build
|
working-directory: build
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue