name: Ubuntu 22.04 (llvm cov)

on:
  pull_request_target:
    branches: [ doc ]
  workflow_dispatch:

jobs:
  build:
    runs-on: ubuntu-22.04

    steps:
      - name: Checkout
        uses: actions/checkout@v3

      - name: Install Dependencies
        run: |
          sudo apt-get install openssl
          sudo apt-get install libssl-dev
          sudo apt-get install llvm

      - name: Run Coverage
        run: |
          ls
          cp -r src/coro_rpc/tests/openssl_files .
          ls
          mkdir build && cd build
          CC=clang CXX=clang++ cmake .. -DCOVERAGE_TEST=ON -DENABLE_SSL=ON
          make -j test_rpc
          export LLVM_PROFILE_FILE="test_rpc-%m.profraw"
          ./tests/test_rpc
          llvm-profdata merge -sparse test_rpc-*.profraw -o test_rpc.profdata
          llvm-cov show ./tests/test_rpc -instr-profile=test_rpc.profdata -format=html -output-dir=../.coverage_llvm_cov -ignore-filename-regex="async_simple|thirdparty|tests|asio|util|logging|struct_pack" -show-instantiations=false
          echo "Done!"

      - name: Upload Coverage Results
        uses: actions/upload-artifact@v3
        with:
          name: llvm-cov
          path: ${{ github.workspace }}/.coverage_llvm_cov

      - name: Create Code Coverage Report
        working-directory: ${{github.workspace}}/build
        run: |
          echo "Code Coverage Report" > tmp.log
          echo "for detail, [goto summary](https://github.com/${{ github.repository_owner }}/${{ github.event.repository.name }}/actions/runs/${{github.run_id}}) download Artifacts `llvm-cov`" >> tmp.log
          echo "\`\`\`" >> tmp.log
          llvm-cov report ./tests/test_rpc -instr-profile=test_rpc.profdata -ignore-filename-regex="thirdparty|tests" -show-region-summary=false >> tmp.log
          echo "\`\`\`" >> tmp.log

      - name: Create Comment
        uses: peter-evans/create-or-update-comment@v2
        with:
          issue-number: ${{ github.event.pull_request.number }}
          body-file: '${{github.workspace}}/build/tmp.log'
