mirror of
				https://github.com/Z3Prover/z3
				synced 2025-10-31 03:32:28 +00:00 
			
		
		
		
	* Correctly emits simple and detailed coverage reports using a combination of `gcovr` and `llvm-cov gcov` * Uploads the reports as associated artifacts, with 4 days of retention * Executes on every `master` push, and daily at 11 UTC Co-authored-by: Andrei Lascu <andrei.lascu10@imperial.ac.uk>
		
			
				
	
	
		
			100 lines
		
	
	
	
		
			3.2 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
			
		
		
	
	
			100 lines
		
	
	
	
		
			3.2 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
| name: Code Coverage
 | |
| 
 | |
| on:
 | |
|   push:
 | |
|     branches: [ master ]
 | |
|   schedule:
 | |
|     - cron: "0 11 * * *"
 | |
| 
 | |
| jobs:
 | |
|   build:
 | |
|     runs-on: ubuntu-latest
 | |
| 
 | |
|     env:
 | |
|       CC: clang
 | |
|       CXX: clang++
 | |
|       BUILD_TYPE: Debug
 | |
|       CMAKE_GENERATOR: Ninja
 | |
|       COV_DETAILS_PATH: ${{github.workspace}}/cov-details
 | |
| 
 | |
|     steps:
 | |
|     - uses: actions/checkout@v2
 | |
| 
 | |
|     - name: Setup
 | |
|       run: |
 | |
|         sudo apt-get remove -y --purge man-db
 | |
|         sudo apt-get update -y
 | |
|         sudo apt-get install -y gcovr ninja-build llvm clang
 | |
| 
 | |
|     ## Building
 | |
|     - name: Configure CMake Z3
 | |
|       run: CFLAGS=="--coverage" CXXFLAGS="--coverage" LDFLAGS="-lgcov" cmake -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DCMAKE_INSTALL_PREFIX=./install
 | |
| 
 | |
|     - name: Build Z3
 | |
|       run: cmake --build ${{github.workspace}}/build --target install --config ${{env.BUILD_TYPE}}
 | |
| 
 | |
|     - name: Build test-z3
 | |
|       run: cmake --build ${{github.workspace}}/build --target test-z3 --config ${{env.BUILD_TYPE}}
 | |
| 
 | |
|     - name: Build examples
 | |
|       run: |
 | |
|         cmake --build ${{github.workspace}}/build --target c_example
 | |
|         cmake --build ${{github.workspace}}/build --target cpp_example
 | |
|         cmake --build ${{github.workspace}}/build --target z3_tptp5
 | |
|         cmake --build ${{github.workspace}}/build --target c_maxsat_example
 | |
| 
 | |
|     - name: Clone z3test
 | |
|       run: git clone https://github.com/z3prover/z3test z3test
 | |
| 
 | |
|     ## Testing
 | |
|     - name: Run test-z3
 | |
|       run: |
 | |
|         cd ${{github.workspace}}/build
 | |
|         ./test-z3 -a
 | |
|         cd -
 | |
| 
 | |
|     - name: Run examples
 | |
|       run: |
 | |
|         ${{github.workspace}}/build/examples/c_example_build_dir/c_example
 | |
|         ${{github.workspace}}/build/examples/cpp_example_build_dir/cpp_example
 | |
|         ${{github.workspace}}/build/examples/tptp_build_dir/z3_tptp5 --help
 | |
|         ${{github.workspace}}/build/examples/c_maxsat_example_build_dir/c_maxsat_example ${{github.workspace}}/examples/maxsat/ex.smt
 | |
| 
 | |
|     - name: Run regressions
 | |
|       run: |
 | |
|         python z3test/scripts/test_benchmarks.py build/z3 z3test/regressions/smt2
 | |
|         python z3test/scripts/test_benchmarks.py build/z3 z3test/regressions/smt2-debug
 | |
|         python z3test/scripts/test_benchmarks.py build/z3 z3test/regressions/smt2-extra
 | |
| 
 | |
|     - name: Run coverage tests
 | |
|       run: python z3test/scripts/test_coverage_tests.py ./install z3test/coverage/cpp
 | |
| 
 | |
|     ## Artifact
 | |
|     - name: Gather coverage
 | |
|       run: |
 | |
|         cd ${{github.workspace}}
 | |
|         gcovr --html coverage.html --gcov-executable "llvm-cov gcov" .
 | |
|         cd -
 | |
| 
 | |
|     - name: Gather detailed coverage
 | |
|       run: |
 | |
|         cd ${{github.workspace}}
 | |
|         mkdir cov-details
 | |
|         gcovr --html-details ${{env.COV_DETAILS_PATH}}/coverage.html --gcov-executable "llvm-cov gcov" -r `pwd`/src --object-directory `pwd`/build
 | |
|         cd -
 | |
| 
 | |
|     - name: Get date
 | |
|       id: date
 | |
|       run: echo "::set-output name=date::$(date +'%Y-%m-%d')"
 | |
| 
 | |
|     - uses: actions/upload-artifact@v2
 | |
|       with:
 | |
|         name: coverage-${{steps.date.outputs.date}}
 | |
|         path: ${{github.workspace}}/coverage.html
 | |
|         retention-days: 4
 | |
| 
 | |
|     - uses: actions/upload-artifact@v2
 | |
|       with:
 | |
|         name: coverage-details-${{steps.date.outputs.date}}
 | |
|         path: ${{env.COV_DETAILS_PATH}}
 | |
|         retention-days: 4
 |