mirror of
				https://github.com/Z3Prover/z3
				synced 2025-11-03 21:09:11 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			106 lines
		
	
	
	
		
			3.3 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			106 lines
		
	
	
	
		
			3.3 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
name: Code Coverage
 | 
						|
 | 
						|
on:
 | 
						|
  push:
 | 
						|
    branches: [ master ]
 | 
						|
  pull_request:
 | 
						|
    branches: [ master ]
 | 
						|
  schedule:
 | 
						|
    - cron: "0 11 * * *"
 | 
						|
 | 
						|
permissions:
 | 
						|
  contents: read
 | 
						|
 | 
						|
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@v4
 | 
						|
 | 
						|
    - 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 -
 | 
						|
 | 
						|
# Disabled:       ${{github.workspace}}/build/examples/c_example_build_dir/c_example
 | 
						|
 | 
						|
    - name: Run examples
 | 
						|
      run: |
 | 
						|
        ${{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-ignore-parse-errors --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-ignore-parse-errors --gcov-executable "llvm-cov gcov" -r `pwd`/src --object-directory `pwd`/build
 | 
						|
        cd -
 | 
						|
 | 
						|
    - name: Get date
 | 
						|
      id: date
 | 
						|
      run: echo "date=$(date +'%Y-%m-%d')" >> $GITHUB_OUTPUT
 | 
						|
 | 
						|
    - uses: actions/upload-artifact@v4
 | 
						|
      with:
 | 
						|
        name: coverage-${{steps.date.outputs.date}}
 | 
						|
        path: ${{github.workspace}}/coverage.html
 | 
						|
        retention-days: 4
 | 
						|
 | 
						|
    - uses: actions/upload-artifact@v4
 | 
						|
      with:
 | 
						|
        name: coverage-details-${{steps.date.outputs.date}}
 | 
						|
        path: ${{env.COV_DETAILS_PATH}}
 | 
						|
        retention-days: 4
 |