]> git.ipfire.org Git - thirdparty/fastapi/fastapi.git/commitdiff
👷 Run tests only on relevant code changes (not on docs) (#14813)
authorSebastián Ramírez <tiangolo@gmail.com>
Wed, 4 Feb 2026 11:46:32 +0000 (03:46 -0800)
committerGitHub <noreply@github.com>
Wed, 4 Feb 2026 11:46:32 +0000 (11:46 +0000)
.github/workflows/test.yml

index 891f767175059048dba1d9c11a522de2612caadf..5cbbde61fadfc414c7e5804199167634d36a55d7 100644 (file)
@@ -16,7 +16,35 @@ env:
   UV_NO_SYNC: true
 
 jobs:
+  changes:
+    runs-on: ubuntu-latest
+    # Required permissions
+    permissions:
+      pull-requests: read
+    # Set job outputs to values from filter step
+    outputs:
+      src: ${{ steps.filter.outputs.src }}
+    steps:
+    - uses: actions/checkout@v6
+    # For pull requests it's not necessary to checkout the code but for the main branch it is
+    - uses: dorny/paths-filter@v3
+      id: filter
+      with:
+        filters: |
+          src:
+            - .github/workflows/test.yml
+            - docs_src/**
+            - fastapi/**
+            - scripts/**
+            - tests/**
+            - .python-version
+            - pyproject.toml
+            - uv.lock
+
   test:
+    needs:
+      - changes
+    if: needs.changes.outputs.src == 'true'
     strategy:
       matrix:
         os: [ windows-latest, macos-latest ]
@@ -91,7 +119,8 @@ jobs:
           include-hidden-files: true
 
   coverage-combine:
-    needs: [test]
+    needs:
+      - test
     runs-on: ubuntu-latest
     steps:
       - name: Dump GitHub context
@@ -143,3 +172,4 @@ jobs:
         uses: re-actors/alls-green@release/v1
         with:
           jobs: ${{ toJSON(needs) }}
+          allowed-skips: coverage-combine,test