name: Coverage Linux

on:
  pull_request:
    types: [opened, synchronize, reopened]
    paths-ignore:
      - '**.md'
      - benchmark/**
      - doc/**
      - tools/**
      - unit-test/**
      - .github/**
      - '!.github/workflows/coverage-linux.yml'
  push:
    branches:
      - main
    paths-ignore:
      - '**.md'
      - benchmark/**
      - doc/**
      - tools/**
      - unit-test/**
      - .github/**
      - '!.github/workflows/coverage-linux.yml'

env:
  PYTHON_VERSION: '3.11'
  NODE_VERSION: '22.x'

permissions:
  contents: read

jobs:
  coverage-linux:
    runs-on: ubuntu-latest
    steps:
      - name: Harden Runner
        uses: step-security/harden-runner@20cf305ff2072d973412fa9b1e3a4f227bda3c76 # v2.14.0
        with:
          egress-policy: audit

      - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd  # v6.0.2
        with:
          persist-credentials: false
      - name: Set up Python ${{ env.PYTHON_VERSION }}
        uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405  # v6.2.0
        with:
          python-version: ${{ env.PYTHON_VERSION }}
      - name: Use Node.js ${{ env.NODE_VERSION }}
        uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0
        with:
          node-version: ${{ env.NODE_VERSION }}
      - name: Environment Information
        run: npx envinfo
      - name: Install gcovr
        run: pip install gcovr==6.0
      - name: Install dependencies
        run: npm install
      - name: Test with coverage
        run: |
          npm run create-coverage
      - name: Generate coverage report (XML)
        run: |
          npm run report-coverage-xml
      - name: Upload
        uses: codecov/codecov-action@671740ac38dd9b0130fbe1cec585b89eea48d3de  # v5.5.2
        with:
          directory: ./coverage-xml
