name: "CI Coverage" on: pull_request: branches: - main - litellm_internal_staging - litellm_oss_staging - "litellm_**" push: branches: - main - litellm_internal_staging permissions: contents: read concurrency: group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.sha }} cancel-in-progress: ${{ github.event_name == 'pull_request' }} jobs: assert-ci-coverage: name: assert-ci-coverage runs-on: ubuntu-latest timeout-minutes: 5 permissions: contents: read steps: - uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0 with: persist-credentials: false - name: Set up Python uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5.6.0 with: python-version: "3.12" - name: Assert every test file and Dockerfile is invoked by a job run: | python -m pip install "pyyaml==6.0.3" python .github/scripts/assert_ci_coverage.py # The census asks whether a job names a file; this asks whether that job's -k # then throws it back out. A file both globbed and deselected everywhere runs # nowhere while counting as covered, which is how the caching suite went unrun. - name: Assert no -k expression deselects a file from every job that globs it run: python .github/scripts/assert_ci_coverage.py --slices - name: Assert .github/workflows/ holds only workflows, correctly named run: python .github/scripts/assert_workflow_dir_hygiene.py