This is an automated email from the ASF dual-hosted git repository.

potiuk pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/airflow.git


The following commit(s) were added to refs/heads/main by this push:
     new edbf1e57d9 Extract unit tests to separate workflows (#38157)
edbf1e57d9 is described below

commit edbf1e57d9033c5f7877819edecf6363a8dbeaaf
Author: Jarek Potiuk <[email protected]>
AuthorDate: Sat Mar 16 08:06:51 2024 +0100

    Extract unit tests to separate workflows (#38157)
    
    This is continuation of decomposing of the huge ci.yaml of ours with
    lot of copy-pasted yaml into smaller, separated workflows that are
    called when needed. This one is by far the biggest one in terms of
    how many repeated lines of workflow have been removed by that one.
    
    It introduce two workflows:
    
    1) Run unit tests workflow that run regular test in a matrix -
       we call them directly from CI yaml for postgres/mysql/sqlite
       and Non-DB tests - and they can run a matrix of tests - depending
       on type of the build we have - in simple PRs, it will be just
       matrix of default values, in more complex and canary build it
       will be a complete matrix of tests.
    
    2) "Special test" - those are special tests that are always run with
       postgres, default version and Python default version but they
       have some "special" thing enabled - downgrade/upgrade of a specific
       important dependecy (boto/sqlalchemy), running quarantined tests
       or performing just collection of tests simulating ARM test
       collection. This workflow calls the regular unit test 1) workflow
       for each such special case - adding one more level of indirection
---
 .github/workflows/ci.yml             | 659 ++++++-----------------------------
 .github/workflows/run-unit-tests.yml | 185 ++++++++++
 .github/workflows/special-tests.yml  | 230 ++++++++++++
 3 files changed, 522 insertions(+), 552 deletions(-)

diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 26e66bb070..394ddf1553 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -897,427 +897,122 @@ jobs:
       needs.build-info.outputs.latest-versions-only != 'true'
 
   tests-postgres:
-    timeout-minutes: 130
-    name: >
-      DB:Postgres${{matrix.backend-version}},Py${{matrix.python-version}}:
-      ${{needs.build-info.outputs.parallel-test-types-list-as-string}}
-    runs-on: ${{fromJSON(needs.build-info.outputs.runs-on)}}
+    name: "Postgres tests"
+    uses: ./.github/workflows/run-unit-tests.yml
     needs: [build-info, wait-for-ci-images]
-    strategy:
-      matrix:
-        python-version: 
"${{fromJson(needs.build-info.outputs.python-versions)}}"
-        backend-version: 
"${{fromJson(needs.build-info.outputs.postgres-versions)}}"
-        exclude: "${{fromJson(needs.build-info.outputs.postgres-exclude)}}"
-      fail-fast: false
-    env:
-      RUNS_ON: "${{needs.build-info.outputs.runs-on}}"
-      PARALLEL_TEST_TYPES: 
"${{needs.build-info.outputs.parallel-test-types-list-as-string}}"
-      PR_LABELS: "${{needs.build-info.outputs.pull-request-labels}}"
-      FULL_TESTS_NEEDED: "${{needs.build-info.outputs.full-tests-needed}}"
-      DEBUG_RESOURCES: "${{needs.build-info.outputs.debug-resources}}"
-      BACKEND: "postgres"
-      PYTHON_MAJOR_MINOR_VERSION: "${{matrix.python-version}}"
-      BACKEND_VERSION: "${{matrix.backend-version}}"
-      JOB_ID: "postgres-${{matrix.backend-version}}-${{matrix.python-version}}"
-      ENABLE_COVERAGE: "${{needs.build-info.outputs.run-coverage}}"
+    permissions:
+      contents: read
+      packages: read
+    secrets: inherit
+    with:
+      runs-on: ${{ needs.build-info.outputs.runs-on }}
+      backend: "postgres"
+      test-name: "Postgres"
+      test-scope: "DB"
+      image-tag: ${{ needs.build-info.outputs.image-tag }}
+      python-versions: ${{ needs.build-info.outputs.python-versions }}
+      backend-versions: ${{ needs.build-info.outputs.postgres-versions }}
+      excludes: ${{ needs.build-info.outputs.postgres-exclude }}
+      parallel-test-types-list-as-string: ${{ 
needs.build-info.outputs.parallel-test-types-list-as-string }}
+      run-migration-tests: "true"
+      run-coverage: ${{ needs.build-info.outputs.run-coverage }}
+      debug-resources: ${{ needs.build-info.outputs.debug-resources }}
+      breeze-python-version: ${{ 
needs.build-info.outputs.breeze-python-version }}
     if: needs.build-info.outputs.run-tests == 'true'
-    steps:
-      - name: "Cleanup repo"
-        shell: bash
-        run: docker run -v "${GITHUB_WORKSPACE}:/workspace" -u 0:0 bash -c "rm 
-rf /workspace/*"
-      - name: "Checkout ${{ github.ref }} ( ${{ github.sha }} )"
-        uses: actions/checkout@v4
-        with:
-          persist-credentials: false
-      - name: Cleanup docker
-        uses: ./.github/actions/cleanup-docker
-      - name: "Prepare breeze & CI image: 
${{matrix.python-version}}:${{env.IMAGE_TAG}}"
-        uses: ./.github/actions/prepare_breeze_and_image
-      - name: >
-          Migration Tests:
-          
${{matrix.python-version}}:${{needs.build-info.outputs.parallel-test-types-list-as-string}}
-        uses: ./.github/actions/migration_tests
-      - name: >
-          Tests: 
${{matrix.python-version}}:${{needs.build-info.outputs.parallel-test-types-list-as-string}}
-        run: >
-          breeze testing db-tests
-          --parallel-test-types 
"${{needs.build-info.outputs.parallel-test-types-list-as-string}}"
-      - name: "Tests ARM Pytest collection: ${{matrix.python-version}}"
-        run: breeze testing db-tests --collect-only --remove-arm-packages
-        if: matrix.backend-version == 
needs.build-info.outputs.default-postgres-version
-      - name: >
-          Post Tests success: Postgres"
-        uses: ./.github/actions/post_tests_success
-        if: success()
-      - name: >
-          Post Tests failure: Postgres"
-        uses: ./.github/actions/post_tests_failure
-        if: failure()
 
-  tests-min-sqlalchemy:
-    timeout-minutes: 130
-    name: >
-      DB:MinSQLAlchemy${{needs.build-info.outputs.default-postgres-version}},
-      Py${{needs.build-info.outputs.default-python-version}}:
-      ${{needs.build-info.outputs.parallel-test-types-list-as-string}}
-    runs-on: ${{fromJSON(needs.build-info.outputs.runs-on)}}
+  tests-mysql:
+    name: "MySQL tests"
+    uses: ./.github/workflows/run-unit-tests.yml
     needs: [build-info, wait-for-ci-images]
-    env:
-      RUNS_ON: "${{needs.build-info.outputs.runs-on}}"
-      PARALLEL_TEST_TYPES: 
"${{needs.build-info.outputs.parallel-test-types-list-as-string}}"
-      PR_LABELS: "${{needs.build-info.outputs.pull-request-labels}}"
-      FULL_TESTS_NEEDED: "${{needs.build-info.outputs.full-tests-needed}}"
-      DEBUG_RESOURCES: "${{needs.build-info.outputs.debug-resources}}"
-      BACKEND: "postgres"
-      ENABLE_COVERAGE: "${{needs.build-info.outputs.run-coverage}}"
-      PYTHON_MAJOR_MINOR_VERSION: 
"${{needs.build-info.outputs.default-python-version}}"
-      PYTHON_VERSION: "${needs.build-info.outputs.default-python-version}}"
-      BACKEND_VERSION: "${{needs.build-info.outputs.default-postgres-version}}"
-      DOWNGRADE_SQLALCHEMY: "true"
-      JOB_ID: >
-        min-sqlalchemy-${{needs.build-info.outputs.default-python-version}}-
-        ${{needs.build-info.outputs.default-postgres-version}}
+    permissions:
+      contents: read
+      packages: read
+    secrets: inherit
+    with:
+      runs-on: ${{ needs.build-info.outputs.runs-on }}
+      backend: "mysql"
+      test-name: "MySQL"
+      test-scope: "DB"
+      image-tag: ${{ needs.build-info.outputs.image-tag }}
+      python-versions: ${{ needs.build-info.outputs.python-versions }}
+      backend-versions: ${{ needs.build-info.outputs.mysql-versions }}
+      excludes: ${{ needs.build-info.outputs.mysql-exclude }}
+      parallel-test-types-list-as-string: ${{ 
needs.build-info.outputs.parallel-test-types-list-as-string }}
+      run-coverage: ${{ needs.build-info.outputs.run-coverage }}
+      run-migration-tests: "true"
+      debug-resources: ${{ needs.build-info.outputs.debug-resources }}
+      breeze-python-version: ${{ 
needs.build-info.outputs.breeze-python-version }}
     if: needs.build-info.outputs.run-tests == 'true'
-    steps:
-      - name: "Cleanup repo"
-        shell: bash
-        run: docker run -v "${GITHUB_WORKSPACE}:/workspace" -u 0:0 bash -c "rm 
-rf /workspace/*"
-      - name: "Checkout ${{ github.ref }} ( ${{ github.sha }} )"
-        uses: actions/checkout@v4
-        with:
-          persist-credentials: false
-      - name: Cleanup docker
-        uses: ./.github/actions/cleanup-docker
-      - name: >
-          Prepare breeze & CI image: 
${{needs.build-info.outputs.default-python-version}}:${{env.IMAGE_TAG}}
-        uses: ./.github/actions/prepare_breeze_and_image
-      - name: >
-          Tests: 
${{matrix.python-version}}:${{needs.build-info.outputs.parallel-test-types-list-as-string}}
-        run: >
-          breeze testing db-tests
-          --parallel-test-types 
"${{needs.build-info.outputs.parallel-test-types-list-as-string}}"
-      - name: >
-          Post Tests success: 
${{needs.build-info.outputs.default-python-version}}:MinSQLAlchemy"
-        uses: ./.github/actions/post_tests_success
-        if: success()
-      - name: >
-          Post Tests failure: 
${{needs.build-info.outputs.default-python-version}}:MinSQLAlchemy"
-        uses: ./.github/actions/post_tests_failure
-        if: failure()
-
-  tests-boto:
-    timeout-minutes: 130
-    name: >
-      LatestBoto-Py${{needs.build-info.outputs.default-python-version}}:
-      ${{needs.build-info.outputs.parallel-test-types-list-as-string}}
-    runs-on: ${{fromJSON(needs.build-info.outputs.runs-on)}}
-    needs: [build-info, wait-for-ci-images]
-    env:
-      RUNS_ON: "${{needs.build-info.outputs.runs-on}}"
-      PARALLEL_TEST_TYPES: 
"${{needs.build-info.outputs.parallel-test-types-list-as-string}}"
-      PR_LABELS: "${{needs.build-info.outputs.pull-request-labels}}"
-      FULL_TESTS_NEEDED: "${{needs.build-info.outputs.full-tests-needed}}"
-      DEBUG_RESOURCES: "${{needs.build-info.outputs.debug-resources}}"
-      BACKEND: "postgres"
-      ENABLE_COVERAGE: "${{needs.build-info.outputs.run-coverage}}"
-      PYTHON_MAJOR_MINOR_VERSION: 
"${{needs.build-info.outputs.default-python-version}}"
-      PYTHON_VERSION: "${needs.build-info.outputs.default-python-version}}"
-      BACKEND_VERSION: "${{needs.build-info.outputs.default-postgres-version}}"
-      UPGRADE_BOTO: "true"
-      JOB_ID: >
-        boto-${{needs.build-info.outputs.default-python-version}}-
-        ${{needs.build-info.outputs.default-postgres-version}}
-    if: needs.build-info.outputs.run-tests == 'true' && 
needs.build-info.outputs.run-amazon-tests == 'true'
-    steps:
-      - name: "Cleanup repo"
-        shell: bash
-        run: docker run -v "${GITHUB_WORKSPACE}:/workspace" -u 0:0 bash -c "rm 
-rf /workspace/*"
-      - name: "Checkout ${{ github.ref }} ( ${{ github.sha }} )"
-        uses: actions/checkout@v4
-        with:
-          persist-credentials: false
-      - name: Cleanup docker
-        uses: ./.github/actions/cleanup-docker
-      - name: >
-          Prepare breeze & CI image: 
${{needs.build-info.outputs.default-python-version}}:${{env.IMAGE_TAG}}
-        uses: ./.github/actions/prepare_breeze_and_image
-      - name: >
-          Tests: 
${{matrix.python-version}}:${{needs.build-info.outputs.parallel-test-types-list-as-string}}
-        run: >
-          breeze testing tests --run-in-parallel
-          --parallel-test-types 
"${{needs.build-info.outputs.parallel-test-types-list-as-string}}"
-      - name: >
-          Post Tests success: 
${{needs.build-info.outputs.default-python-version}}:LatestBoto"
-        uses: ./.github/actions/post_tests_success
-        if: success()
-      - name: >
-          Post Tests failure: 
${{needs.build-info.outputs.default-python-version}}:LatestBoto"
-        uses: ./.github/actions/post_tests_failure
-        if: failure()
 
-  tests-pydantic:
-    timeout-minutes: 130
-    name: >
-      Pydantic-${{ matrix.pydantic 
}}-Py${{needs.build-info.outputs.default-python-version}}:
-      ${{needs.build-info.outputs.parallel-test-types-list-as-string}}
-    runs-on: ${{fromJSON(needs.build-info.outputs.runs-on)}}
-    strategy:
-      matrix:
-        pydantic: ["v1", "none"]
+  tests-sqlite:
+    name: "Sqlite tests"
+    uses: ./.github/workflows/run-unit-tests.yml
     needs: [build-info, wait-for-ci-images]
-    env:
-      RUNS_ON: "${{needs.build-info.outputs.runs-on}}"
-      PARALLEL_TEST_TYPES: 
"${{needs.build-info.outputs.parallel-test-types-list-as-string}}"
-      PR_LABELS: "${{needs.build-info.outputs.pull-request-labels}}"
-      FULL_TESTS_NEEDED: "${{needs.build-info.outputs.full-tests-needed}}"
-      DEBUG_RESOURCES: "${{needs.build-info.outputs.debug-resources}}"
-      BACKEND: "postgres"
-      ENABLE_COVERAGE: "${{needs.build-info.outputs.run-coverage}}"
-      PYTHON_MAJOR_MINOR_VERSION: 
"${{needs.build-info.outputs.default-python-version}}"
-      PYTHON_VERSION: "${needs.build-info.outputs.default-python-version}}"
-      BACKEND_VERSION: "${{needs.build-info.outputs.default-postgres-version}}"
-      PYDANTIC: ${{ matrix.pydantic }}
-      JOB_ID: >
-        pydantic-${{ matrix.pydantic 
}}-${{needs.build-info.outputs.default-python-version}}-
-        ${{needs.build-info.outputs.default-postgres-version}}
+    permissions:
+      contents: read
+      packages: read
+    secrets: inherit
+    with:
+      runs-on: ${{ needs.build-info.outputs.runs-on }}
+      backend: "sqlite"
+      test-name: "Sqlite"
+      test-name-separator: ""
+      test-scope: "DB"
+      image-tag: ${{ needs.build-info.outputs.image-tag }}
+      python-versions: ${{ needs.build-info.outputs.python-versions }}
+      # No versions for sqlite
+      backend-versions: "['']"
+      excludes: ${{ needs.build-info.outputs.sqlite-exclude }}
+      parallel-test-types-list-as-string: ${{ 
needs.build-info.outputs.parallel-test-types-list-as-string }}
+      run-coverage: ${{ needs.build-info.outputs.run-coverage }}
+      run-migration-tests: "true"
+      debug-resources: ${{ needs.build-info.outputs.debug-resources }}
+      breeze-python-version: ${{ 
needs.build-info.outputs.breeze-python-version }}
     if: needs.build-info.outputs.run-tests == 'true'
-    steps:
-      - name: "Cleanup repo"
-        shell: bash
-        run: docker run -v "${GITHUB_WORKSPACE}:/workspace" -u 0:0 bash -c "rm 
-rf /workspace/*"
-      - name: "Checkout ${{ github.ref }} ( ${{ github.sha }} )"
-        uses: actions/checkout@v4
-        with:
-          persist-credentials: false
-      - name: Cleanup docker
-        uses: ./.github/actions/cleanup-docker
-      - name: >
-          Prepare breeze & CI image: 
${{needs.build-info.outputs.default-python-version}}:${{env.IMAGE_TAG}}
-        uses: ./.github/actions/prepare_breeze_and_image
-      - name: >
-          Tests: 
${{matrix.python-version}}:${{needs.build-info.outputs.parallel-test-types-list-as-string}}
-        run: >
-          breeze testing tests --run-in-parallel
-          --parallel-test-types 
"${{needs.build-info.outputs.parallel-test-types-list-as-string}}"
-      - name: >
-          Post Tests success: 
${{needs.build-info.outputs.default-python-version}}:NoPydantic"
-        uses: ./.github/actions/post_tests_success
-        if: success()
-      - name: >
-          Post Tests failure: 
${{needs.build-info.outputs.default-python-version}}:NoPydantic"
-        uses: ./.github/actions/post_tests_failure
-        if: failure()
-
-  tests-pendulum-2:
-    timeout-minutes: 130
-    name: >
-      Pendulum2-Py${{needs.build-info.outputs.default-python-version}}:
-      ${{needs.build-info.outputs.parallel-test-types-list-as-string}}
-    runs-on: ${{fromJSON(needs.build-info.outputs.runs-on)}}
-    needs: [build-info, wait-for-ci-images]
-    env:
-      RUNS_ON: "${{needs.build-info.outputs.runs-on}}"
-      PARALLEL_TEST_TYPES: 
"${{needs.build-info.outputs.parallel-test-types-list-as-string}}"
-      PR_LABELS: "${{needs.build-info.outputs.pull-request-labels}}"
-      FULL_TESTS_NEEDED: "${{needs.build-info.outputs.full-tests-needed}}"
-      DEBUG_RESOURCES: "${{needs.build-info.outputs.debug-resources}}"
-      BACKEND: "postgres"
-      ENABLE_COVERAGE: "${{needs.build-info.outputs.run-coverage}}"
-      PYTHON_MAJOR_MINOR_VERSION: 
"${{needs.build-info.outputs.default-python-version}}"
-      PYTHON_VERSION: "${needs.build-info.outputs.default-python-version}}"
-      BACKEND_VERSION: "${{needs.build-info.outputs.default-postgres-version}}"
-      DOWNGRADE_PENDULUM: "true"
-      JOB_ID: >
-        pendulum-2-${{needs.build-info.outputs.default-python-version}}-
-        ${{needs.build-info.outputs.default-postgres-version}}
-    if: >
-      needs.build-info.outputs.run-tests == 'true' &&
-      needs.build-info.outputs.latest-versions-only != 'true'
-    steps:
-      - name: "Cleanup repo"
-        shell: bash
-        run: docker run -v "${GITHUB_WORKSPACE}:/workspace" -u 0:0 bash -c "rm 
-rf /workspace/*"
-      - name: "Checkout ${{ github.ref }} ( ${{ github.sha }} )"
-        uses: actions/checkout@v4
-        with:
-          persist-credentials: false
-      - name: Cleanup docker
-        uses: ./.github/actions/cleanup-docker
-      - name: >
-          Prepare breeze & CI image: 
${{needs.build-info.outputs.default-python-version}}:${{env.IMAGE_TAG}}
-        uses: ./.github/actions/prepare_breeze_and_image
-      - name: >
-          Tests: 
${{matrix.python-version}}:${{needs.build-info.outputs.parallel-test-types-list-as-string}}
-        run: >
-          breeze testing tests --run-in-parallel
-          --parallel-test-types 
"${{needs.build-info.outputs.parallel-test-types-list-as-string}}"
-      - name: >
-          Post Tests success: 
${{needs.build-info.outputs.default-python-version}}:Pendulum2"
-        uses: ./.github/actions/post_tests_success
-        if: success()
-      - name: >
-          Post Tests failure: 
${{needs.build-info.outputs.default-python-version}}:Pendulum2"
-        uses: ./.github/actions/post_tests_failure
-        if: failure()
 
-  tests-in-progress-features-disabled:
-    timeout-minutes: 130
-    name: >
-      
InProgressDisabled-Py${{needs.build-info.outputs.default-python-version}}:
-      ${{needs.build-info.outputs.parallel-test-types-list-as-string}}
-    runs-on: ${{fromJSON(needs.build-info.outputs.runs-on)}}
+  tests-non-db:
+    name: "Non-DB tests"
+    uses: ./.github/workflows/run-unit-tests.yml
     needs: [build-info, wait-for-ci-images]
-    env:
-      RUNS_ON: "${{needs.build-info.outputs.runs-on}}"
-      PARALLEL_TEST_TYPES: 
"${{needs.build-info.outputs.parallel-test-types-list-as-string}}"
-      PR_LABELS: "${{needs.build-info.outputs.pull-request-labels}}"
-      FULL_TESTS_NEEDED: "${{needs.build-info.outputs.full-tests-needed}}"
-      DEBUG_RESOURCES: "${{needs.build-info.outputs.debug-resources}}"
-      BACKEND: "postgres"
-      ENABLE_COVERAGE: "${{needs.build-info.outputs.run-coverage}}"
-      PYTHON_MAJOR_MINOR_VERSION: 
"${{needs.build-info.outputs.default-python-version}}"
-      PYTHON_VERSION: "${needs.build-info.outputs.default-python-version}}"
-      BACKEND_VERSION: "${{needs.build-info.outputs.default-postgres-version}}"
-      AIRFLOW_ENABLE_AIP_44: "false"
-      JOB_ID: >
-        
in-progress-disabled-${{needs.build-info.outputs.default-python-version}}-
-        ${{needs.build-info.outputs.default-postgres-version}}
-    if: needs.build-info.outputs.run-tests == 'true' && 
needs.build-info.outputs.run-amazon-tests == 'true'
-    steps:
-      - name: "Cleanup repo"
-        shell: bash
-        run: docker run -v "${GITHUB_WORKSPACE}:/workspace" -u 0:0 bash -c "rm 
-rf /workspace/*"
-      - name: "Checkout ${{ github.ref }} ( ${{ github.sha }} )"
-        uses: actions/checkout@v4
-        with:
-          persist-credentials: false
-      - name: Cleanup docker
-        uses: ./.github/actions/cleanup-docker
-      - name: >
-          Prepare breeze & CI image: 
${{needs.build-info.outputs.default-python-version}}:${{env.IMAGE_TAG}}
-        uses: ./.github/actions/prepare_breeze_and_image
-      - name: >
-          Tests: 
${{matrix.python-version}}:${{needs.build-info.outputs.parallel-test-types-list-as-string}}
-        run: >
-          breeze testing tests --run-in-parallel
-          --parallel-test-types 
"${{needs.build-info.outputs.parallel-test-types-list-as-string}}"
-      - name: >
-          Post Tests success: 
${{needs.build-info.outputs.default-python-version}}:FeaturesDisabled"
-        uses: ./.github/actions/post_tests_success
-        if: success()
-      - name: >
-          Post Tests failure: 
${{needs.build-info.outputs.default-python-version}}:FeaturesDisabled"
-        uses: ./.github/actions/post_tests_failure
-        if: failure()
-
-  tests-mysql:
-    timeout-minutes: 130
-    name: >
-      DB:MySQL${{matrix.backend-version}}, Py${{matrix.python-version}}:
-      ${{needs.build-info.outputs.parallel-test-types-list-as-string}}
-    runs-on: ${{fromJSON(needs.build-info.outputs.runs-on)}}
-    needs: [build-info, wait-for-ci-images]
-    strategy:
-      matrix:
-        python-version: 
"${{fromJson(needs.build-info.outputs.python-versions)}}"
-        backend-version: 
"${{fromJson(needs.build-info.outputs.mysql-versions)}}"
-        exclude: "${{fromJson(needs.build-info.outputs.mysql-exclude)}}"
-      fail-fast: false
-    env:
-      RUNS_ON: "${{needs.build-info.outputs.runs-on}}"
-      PR_LABELS: "${{needs.build-info.outputs.pull-request-labels}}"
-      FULL_TESTS_NEEDED: "${{needs.build-info.outputs.full-tests-needed}}"
-      PARALLEL_TEST_TYPES: 
"${{needs.build-info.outputs.parallel-test-types-list-as-string}}"
-      DEBUG_RESOURCES: "${{needs.build-info.outputs.debug-resources}}"
-      BACKEND: "mysql"
-      ENABLE_COVERAGE: "${{needs.build-info.outputs.run-coverage}}"
-      PYTHON_MAJOR_MINOR_VERSION: "${{matrix.python-version}}"
-      BACKEND_VERSION: "${{matrix.backend-version}}"
-      JOB_ID: "mysql-${{matrix.backend-version}}-${{matrix.python-version}}"
+    permissions:
+      contents: read
+      packages: read
+    secrets: inherit
+    with:
+      runs-on: ${{ needs.build-info.outputs.runs-on }}
+      backend: "sqlite"
+      test-name: ""
+      test-name-separator: ""
+      test-scope: "Non-DB"
+      image-tag: ${{ needs.build-info.outputs.image-tag }}
+      python-versions: ${{ needs.build-info.outputs.python-versions }}
+      # No versions for non-db
+      backend-versions: "['']"
+      excludes: ${{ needs.build-info.outputs.sqlite-exclude }}
+      parallel-test-types-list-as-string: ${{ 
needs.build-info.outputs.parallel-test-types-list-as-string }}
+      run-coverage: ${{ needs.build-info.outputs.run-coverage }}
+      debug-resources: ${{ needs.build-info.outputs.debug-resources }}
+      breeze-python-version: ${{ 
needs.build-info.outputs.breeze-python-version }}
     if: needs.build-info.outputs.run-tests == 'true'
-    steps:
-      - name: "Cleanup repo"
-        shell: bash
-        run: docker run -v "${GITHUB_WORKSPACE}:/workspace" -u 0:0 bash -c "rm 
-rf /workspace/*"
-      - name: "Checkout ${{ github.ref }} ( ${{ github.sha }} )"
-        uses: actions/checkout@v4
-        with:
-          persist-credentials: false
-      - name: Cleanup docker
-        uses: ./.github/actions/cleanup-docker
-      - name: "Prepare breeze & CI image: 
${{matrix.python-version}}:${{env.IMAGE_TAG}}"
-        uses: ./.github/actions/prepare_breeze_and_image
-      - name: >
-          Migration Tests:
-          
${{matrix.python-version}}:${{needs.build-info.outputs.parallel-test-types-list-as-string}}
-        uses: ./.github/actions/migration_tests
-      - name: >
-          Tests: 
${{matrix.python-version}}:${{needs.build-info.outputs.parallel-test-types-list-as-string}}
-        run: >
-          breeze testing db-tests
-          --parallel-test-types 
"${{needs.build-info.outputs.parallel-test-types-list-as-string}}"
-      - name: >
-          Post Tests success: MySQL"
-        uses: ./.github/actions/post_tests_success
-        if: success()
-      - name: >
-          Post Tests failure: MySQL"
-        uses: ./.github/actions/post_tests_failure
-        if: failure()
-
 
-  tests-sqlite:
-    timeout-minutes: 130
-    name: >
-      DB:Sqlite Py${{matrix.python-version}}: 
${{needs.build-info.outputs.parallel-test-types-list-as-string}}
-    runs-on: ${{fromJSON(needs.build-info.outputs.runs-on)}}
+  tests-special:
+    name: "Special tests"
+    uses: ./.github/workflows/special-tests.yml
     needs: [build-info, wait-for-ci-images]
-    strategy:
-      matrix:
-        python-version: ${{ fromJson(needs.build-info.outputs.python-versions) 
}}
-        exclude: ${{ fromJson(needs.build-info.outputs.sqlite-exclude) }}
-      fail-fast: false
+    permissions:
+      contents: read
+      packages: read
+    secrets: inherit
+    with:
+      runs-on: ${{ needs.build-info.outputs.runs-on }}
+      image-tag: ${{ needs.build-info.outputs.image-tag }}
+      parallel-test-types-list-as-string: ${{ 
needs.build-info.outputs.parallel-test-types-list-as-string }}
+      run-coverage: ${{ needs.build-info.outputs.run-coverage }}
+      default-python-version: ${{ 
needs.build-info.outputs.default-python-version }}
+      default-postgres-version: ${{ 
needs.build-info.outputs.default-postgres-version }}
+      debug-resources: ${{ needs.build-info.outputs.debug-resources }}
+      breeze-python-version: ${{ 
needs.build-info.outputs.breeze-python-version }}
     if: needs.build-info.outputs.run-tests == 'true'
-    env:
-      RUNS_ON: "${{needs.build-info.outputs.runs-on}}"
-      PARALLEL_TEST_TYPES: 
"${{needs.build-info.outputs.parallel-test-types-list-as-string}}"
-      PR_LABELS: "${{needs.build-info.outputs.pull-request-labels}}"
-      PYTHON_MAJOR_MINOR_VERSION: "${{matrix.python-version}}"
-      FULL_TESTS_NEEDED: "${{needs.build-info.outputs.full-tests-needed}}"
-      DEBUG_RESOURCES: "${{needs.build-info.outputs.debug-resources}}"
-      BACKEND: "sqlite"
-      ENABLE_COVERAGE: "${{needs.build-info.outputs.run-coverage}}"
-      BACKEND_VERSION: ""
-      JOB_ID: "sqlite-${{matrix.python-version}}"
-    steps:
-      - name: "Cleanup repo"
-        shell: bash
-        run: docker run -v "${GITHUB_WORKSPACE}:/workspace" -u 0:0 bash -c "rm 
-rf /workspace/*"
-      - name: "Checkout ${{ github.ref }} ( ${{ github.sha }} )"
-        uses: actions/checkout@v4
-        with:
-          persist-credentials: false
-      - name: Cleanup docker
-        uses: ./.github/actions/cleanup-docker
-      - name: "Prepare breeze & CI image: 
${{matrix.python-version}}:${{env.IMAGE_TAG}}"
-        uses: ./.github/actions/prepare_breeze_and_image
-      - name: >
-          Migration Tests:
-          
${{matrix.python-version}}:${{needs.build-info.outputs.parallel-test-types-list-as-string}}
-        uses: ./.github/actions/migration_tests
-      - name: >
-          Tests: 
${{matrix.python-version}}:${{needs.build-info.outputs.parallel-test-types-list-as-string}}
-        run: >
-          breeze testing db-tests
-          --parallel-test-types 
"${{needs.build-info.outputs.parallel-test-types-list-as-string}}"
-      - name: >
-          Post Tests success: Sqlite"
-        uses: ./.github/actions/post_tests_success
-        if: success()
-      - name: >
-          Post Tests failure: Sqlite"
-        uses: ./.github/actions/post_tests_failure
-        if: failure()
 
   tests-integration-postgres:
     timeout-minutes: 130
@@ -1394,7 +1089,6 @@ jobs:
         uses: ./.github/actions/post_tests_failure
         if: failure()
 
-
   tests-integration-mysql:
     timeout-minutes: 130
     name: Integration Tests MySQL
@@ -1441,146 +1135,6 @@ jobs:
         uses: ./.github/actions/post_tests_failure
         if: failure()
 
-
-  tests-quarantined:
-    timeout-minutes: 60
-    name: "Quarantined tests"
-    runs-on: ${{fromJSON(needs.build-info.outputs.runs-on)}}
-    continue-on-error: true
-    needs: [build-info, wait-for-ci-images]
-    env:
-      RUNS_ON: "${{needs.build-info.outputs.runs-on}}"
-      TEST_TYPE: "All-Quarantined"
-      PR_LABELS: "${{needs.build-info.outputs.pull-request-labels}}"
-      PYTHON_MAJOR_MINOR_VERSION: 
"${{needs.build-info.outputs.default-python-version}}"
-      DEBUG_RESOURCES: "${{needs.build-info.outputs.debug-resources}}"
-      JOB_ID: 
"quarantined-${{needs.build-info.outputs.default-python-version}}"
-      ENABLE_COVERAGE: "${{needs.build-info.outputs.run-coverage}}"
-    if: needs.build-info.outputs.run-tests == 'true' && 
needs.build-info.outputs.is-airflow-runner == 'true'
-    steps:
-      - name: "Cleanup repo"
-        shell: bash
-        run: docker run -v "${GITHUB_WORKSPACE}:/workspace" -u 0:0 bash -c "rm 
-rf /workspace/*"
-      - name: "Checkout ${{ github.ref }} ( ${{ github.sha }} )"
-        uses: actions/checkout@v4
-        with:
-          persist-credentials: false
-      - name: Cleanup docker
-        uses: ./.github/actions/cleanup-docker
-      - name: >
-          Prepare breeze & CI image: 
${{needs.build-info.outputs.default-python-version}}:${{env.IMAGE_TAG}}
-        uses: ./.github/actions/prepare_breeze_and_image
-      - name: >
-          Tests: 
postgres:${{needs.build-info.outputs.default-python-version}}:Quarantined
-        run: breeze testing tests || true
-        env:
-          BACKEND: "postgres"
-          BACKEND_VERSION: 
${{needs.build-info.outputs.default-postgres-version}}
-      - name: >
-          Tests: 
mysql:${{needs.build-info.outputs.default-python-version}}:Quarantined
-        run: breeze testing tests || true
-        env:
-          BACKEND: "mysql"
-          BACKEND_VERSION: ${{needs.build-info.outputs.default-mysql-version}}
-      - name: >
-          Tests: 
sqlite:${{needs.build-info.outputs.default-python-version}}:Quarantined
-        run: breeze testing tests || true
-        env:
-          BACKEND: "sqlite"
-          BACKEND_VERSION: ""
-      - name: >
-          Post Tests success: Quarantined"
-        uses: ./.github/actions/post_tests_success
-        if: success()
-      - name: >
-          Post Tests failure: Quarantined"
-        uses: ./.github/actions/post_tests_failure
-        if: failure()
-
-  tests-no-db:
-    timeout-minutes: 60
-    name: >
-      Non-DB: 
Py${{matrix.python-version}}:${{needs.build-info.outputs.parallel-test-types-list-as-string}}
-    runs-on: ${{fromJSON(needs.build-info.outputs.runs-on)}}
-    needs: [build-info, wait-for-ci-images]
-    strategy:
-      fail-fast: false
-      matrix:
-        python-version: ${{ fromJson(needs.build-info.outputs.python-versions) 
}}
-    env:
-      RUNS_ON: "${{needs.build-info.outputs.runs-on}}"
-      PR_LABELS: "${{needs.build-info.outputs.pull-request-labels}}"
-      PYTHON_MAJOR_MINOR_VERSION: "${{matrix.python-version}}"
-      DEBUG_RESOURCES: "${{needs.build-info.outputs.debug-resources}}"
-      JOB_ID: "no-db-${{matrix.python-version}}"
-      ENABLE_COVERAGE: "${{needs.build-info.outputs.run-coverage}}"
-    if: needs.build-info.outputs.run-tests == 'true'
-    steps:
-      - name: "Cleanup repo"
-        shell: bash
-        run: docker run -v "${GITHUB_WORKSPACE}:/workspace" -u 0:0 bash -c "rm 
-rf /workspace/*"
-      - name: "Checkout ${{ github.ref }} ( ${{ github.sha }} )"
-        uses: actions/checkout@v4
-        with:
-          persist-credentials: false
-      - name: Cleanup docker
-        uses: ./.github/actions/cleanup-docker
-      - name: >
-          Prepare breeze & CI image: 
${{needs.build-info.outputs.default-python-version}}:${{env.IMAGE_TAG}}
-        uses: ./.github/actions/prepare_breeze_and_image
-      - name: "Tests: ${{matrix.python-version}}:Non-DB"
-        run: >
-          breeze testing non-db-tests
-          --parallel-test-types 
"${{needs.build-info.outputs.parallel-test-types-list-as-string}}"
-      - name: "Post Tests success: Non-DB"
-        uses: ./.github/actions/post_tests_success
-        if: success()
-      - name: "Post Tests failure: Non-DB"
-        uses: ./.github/actions/post_tests_failure
-        if: failure()
-
-  tests-no-db-pendulum-2:
-    timeout-minutes: 60
-    name: >
-      Non-DB: Pendulum2, 
Py${{needs.build-info.outputs.default-python-version}}:
-      ${{needs.build-info.outputs.parallel-test-types-list-as-string}}
-    runs-on: ${{fromJSON(needs.build-info.outputs.runs-on)}}
-    needs: [build-info, wait-for-ci-images]
-    env:
-      RUNS_ON: "${{needs.build-info.outputs.runs-on}}"
-      PR_LABELS: "${{needs.build-info.outputs.pull-request-labels}}"
-      PYTHON_MAJOR_MINOR_VERSION: 
"${{needs.build-info.outputs.default-python-version}}"
-      DEBUG_RESOURCES: "${{needs.build-info.outputs.debug-resources}}"
-      JOB_ID: 
"no-db-pendulum-2-${{needs.build-info.outputs.default-python-version}}"
-      ENABLE_COVERAGE: "${{needs.build-info.outputs.run-coverage}}"
-      DOWNGRADE_PENDULUM: "true"
-    if: >
-      needs.build-info.outputs.run-tests == 'true' &&
-      needs.build-info.outputs.latest-versions-only != 'true'
-    steps:
-      - name: "Cleanup repo"
-        shell: bash
-        run: docker run -v "${GITHUB_WORKSPACE}:/workspace" -u 0:0 bash -c "rm 
-rf /workspace/*"
-      - name: "Checkout ${{ github.ref }} ( ${{ github.sha }} )"
-        uses: actions/checkout@v4
-        with:
-          persist-credentials: false
-      - name: Cleanup docker
-        uses: ./.github/actions/cleanup-docker
-      - name: >
-          Prepare breeze & CI image: 
${{needs.build-info.outputs.default-python-version}}:${{env.IMAGE_TAG}}
-        uses: ./.github/actions/prepare_breeze_and_image
-      - name: "Tests: ${{matrix.python-version}}:Non-DB-Pendulum2"
-        run: >
-          breeze testing non-db-tests
-          --parallel-test-types 
"${{needs.build-info.outputs.parallel-test-types-list-as-string}}"
-      - name: "Post Tests success: Non-DB-Pendulum2"
-        uses: ./.github/actions/post_tests_success
-        if: success()
-      - name: "Post Tests failure: Non-DB-Pendulum2"
-        uses: ./.github/actions/post_tests_failure
-        if: failure()
-
   summarize-warnings:
     timeout-minutes: 15
     name: "Summarize warnings"
@@ -1590,10 +1144,10 @@ jobs:
       - tests-postgres
       - tests-sqlite
       - tests-mysql
-      - tests-quarantined
+      - tests-non-db
+      - tests-special
       - tests-integration-postgres
       - tests-integration-mysql
-      - tests-no-db
     env:
       RUNS_ON: "${{needs.build-info.outputs.runs-on}}"
     steps:
@@ -1885,7 +1439,8 @@ jobs:
       - tests-sqlite
       - tests-mysql
       - tests-postgres
-      - tests-no-db
+      - tests-non-db
+      - tests-special
       - tests-integration-postgres
       - tests-integration-mysql
       - generate-constraints
@@ -1975,7 +1530,7 @@ jobs:
       - tests-sqlite
       - tests-mysql
       - tests-postgres
-      - tests-no-db
+      - tests-non-db
       - tests-integration-postgres
       - tests-integration-mysql
     uses: ./.github/workflows/ci-image-build.yml
diff --git a/.github/workflows/run-unit-tests.yml 
b/.github/workflows/run-unit-tests.yml
new file mode 100644
index 0000000000..ba95cfef17
--- /dev/null
+++ b/.github/workflows/run-unit-tests.yml
@@ -0,0 +1,185 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+---
+name: Unit tests
+on:  # yamllint disable-line rule:truthy
+  workflow_call:
+    inputs:
+      runs-on:
+        description: "The array of labels (in json form) determining type of 
the runner to use for the build."
+        required: false
+        default: '["ubuntu-22.04"]'
+        type: string
+      backend:
+        description: "The backend to run the tests on"
+        required: true
+        type: string
+      test-scope:
+        description: "The scope of the test to run: ('DB', 'Non-DB', 'All', 
'ARM collection')"
+        required: true
+        type: string
+      test-name:
+        description: "The name of the test to run"
+        required: true
+        type: string
+      test-name-separator:
+        description: "The separator to use after the test name"
+        required: false
+        default: ":"
+        type: string
+      image-tag:
+        description: "Tag to set for the image"
+        required: true
+        type: string
+      python-versions:
+        description: "The list of python versions (stringified JSON array) to 
run the tests on."
+        required: true
+        type: string
+      backend-versions:
+        description: "The list of backend versions (stringified JSON array) to 
run the tests on."
+        required: true
+        type: string
+      excludes:
+        description: "Excluded combos (stringified JSON array of 
python-version/backend-version dicts)"
+        required: true
+        type: string
+      parallel-test-types-list-as-string:
+        description: "The list of parallel test types to run separated by 
spaces"
+        required: true
+        type: string
+      run-migration-tests:
+        description: "Whether to run migration tests or not (true/false)"
+        required: false
+        default: "false"
+        type: string
+      run-coverage:
+        description: "Whether to run coverage or not (true/false)"
+        required: true
+        type: string
+      debug-resources:
+        description: "Whether to debug resources or not (true/false)"
+        required: true
+        type: string
+      breeze-python-version:
+        description: >
+          Which version of python should be used to install Breeze (3.9 is 
minimum for reproducible builds)
+        required: true
+        type: string
+      downgrade-sqlalchemy:
+        description: "Whether to downgrade SQLAlchemy or not (true/false)"
+        required: false
+        default: "false"
+        type: string
+      upgrade-boto:
+        description: "Whether to upgrade boto or not (true/false)"
+        required: false
+        default: "false"
+        type: string
+      pydantic:
+        description: "The version of pydantic to use"
+        required: false
+        default: "v2"
+        type: string
+      downgrade-pendulum:
+        description: "Whether to downgrade pendulum or not (true/false)"
+        required: false
+        default: "false"
+        type: string
+      enable-aip-44:
+        description: "Whether to enable AIP-44 or not (true/false)"
+        required: false
+        default: "true"
+        type: string
+jobs:
+  tests:
+    timeout-minutes: 120
+    name: "\
+      ${{ inputs.test-scope }}:\
+      ${{ inputs.test-name }}${{ inputs.test-name-separator }}${{ 
matrix.backend-version }}:\
+      ${{matrix.python-version}}: ${{ 
inputs.parallel-test-types-list-as-string }}"
+    runs-on: ${{fromJSON(inputs.runs-on)}}
+    strategy:
+      fail-fast: false
+      matrix:
+        python-version: "${{fromJson(inputs.python-versions)}}"
+        backend-version: "${{fromJson(inputs.backend-versions)}}"
+        exclude: "${{fromJson(inputs.excludes)}}"
+    env:
+      # yamllint disable rule:line-length
+      AIRFLOW_ENABLE_AIP_44: "${{ inputs.enable-aip-44 }}"
+      BACKEND: "${{ inputs.backend }}"
+      BACKEND_VERSION: "${{ matrix.backend-version }}"
+      DEBUG_RESOURCES: "${{ inputs.debug-resources }}"
+      DOWNGRADE_SQLALCHEMY: "${{ inputs.downgrade-sqlalchemy }}"
+      DOWN_PENDULUM: "${{ inputs.downgrade-pendulum }}"
+      ENABLE_COVERAGE: "${{ inputs.run-coverage }}"
+      GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}"
+      # yamllint disable rule:line-length
+      JOB_ID: "${{ inputs.test-scope }}-${{ inputs.test-name 
}}-${{inputs.backend}}-${{ matrix.backend-version }}-${{ matrix.python-version 
}}"
+      MOUNT_SOURCES: "skip"
+      PARALLEL_TEST_TYPES: "${{ inputs.parallel-test-types-list-as-string }}"
+      PYDANTIC: "${{ inputs.pydantic }}"
+      PYTHON_MAJOR_MINOR_VERSION: "${{ matrix.python-version }}"
+      RUNS_ON: "${{inputs.runs-on}}"
+      UPGRADE_BOTO: "${{ inputs.upgrade-boto }}"
+    steps:
+      - name: "Cleanup repo"
+        shell: bash
+        run: docker run -v "${GITHUB_WORKSPACE}:/workspace" -u 0:0 bash -c "rm 
-rf /workspace/*"
+      - name: "Checkout ${{ github.ref }} ( ${{ github.sha }} )"
+        uses: actions/checkout@v4
+        with:
+          persist-credentials: false
+      - name: Cleanup docker
+        uses: ./.github/actions/cleanup-docker
+      - name: "Prepare breeze & CI image: ${{matrix.python-version}}:${{ 
inputs.image-tag }}"
+        uses: ./.github/actions/prepare_breeze_and_image
+        with:
+          python-version: ${{ inputs.breeze-python-version }}
+      - name: >
+          Migration Tests:
+          ${{ matrix.python-version }}:${{ 
inputs.parallel-test-types-list-as-string }}
+        uses: ./.github/actions/migration_tests
+        if: inputs.run-migration-tests == 'true'
+      - name: >
+          ${{ inputs.test-scope }} Tests ${{ inputs.test-name }} ${{ 
matrix.backend-version }}
+          Py${{ matrix.python-version }}:${{ 
inputs.parallel-test-types-list-as-string}}
+        run: |
+          if [[ "${{ inputs.test-scope }}" == "DB" ]]; then
+            breeze testing db-tests \
+              --parallel-test-types "${{ 
inputs.parallel-test-types-list-as-string }}"
+          elif [[ "${{ inputs.test-scope }}" == "Non-DB" ]]; then
+            breeze testing non-db-tests \
+              --parallel-test-types "${{ 
inputs.parallel-test-types-list-as-string }}"
+          elif [[ "${{ inputs.test-scope }}" == "All" ]]; then
+            breeze testing tests --run-in-parallel \
+              --parallel-test-types "${{ 
inputs.parallel-test-types-list-as-string }}"
+          elif [[ "${{ inputs.test-scope }}" == "Quarantined" ]]; then
+            breeze testing tests --test-type "All-Quarantined" || true
+          elif [[ "${{ inputs.test-scope }}" == "ARM collection" ]]; then
+            breeze testing tests --collect-only --remove-arm-packages
+          else
+            echo "Unknown test scope: ${{ inputs.test-scope }}"
+            exit 1
+          fi
+      - name: "Post Tests success"
+        uses: ./.github/actions/post_tests_success
+        if: success()
+      - name: "Post Tests failure"
+        uses: ./.github/actions/post_tests_failure
+        if: failure()
diff --git a/.github/workflows/special-tests.yml 
b/.github/workflows/special-tests.yml
new file mode 100644
index 0000000000..4550191ae7
--- /dev/null
+++ b/.github/workflows/special-tests.yml
@@ -0,0 +1,230 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+---
+name: Special tests
+on:  # yamllint disable-line rule:truthy
+  workflow_call:
+    inputs:
+      runs-on:
+        description: "The array of labels (in json form) determining type of 
the runner to use for the build."
+        required: false
+        default: '["ubuntu-22.04"]'
+        type: string
+      image-tag:
+        description: "Tag to set for the image"
+        required: true
+        type: string
+      parallel-test-types-list-as-string:
+        description: "The list of parallel test types to run separated by 
spaces"
+        required: true
+        type: string
+      run-coverage:
+        description: "Whether to run coverage or not (true/false)"
+        required: true
+        type: string
+      default-python-version:
+        description: Which version of python should be used get CI image
+        required: true
+        type: string
+      default-postgres-version:
+        description: "The default version of the postgres to use"
+        required: true
+        type: string
+      debug-resources:
+        description: "Whether to debug resources or not (true/false)"
+        required: true
+        type: string
+      breeze-python-version:
+        description: >
+          Which version of python should be used to install Breeze (3.9 is 
minimum for reproducible builds)
+        required: true
+        type: string
+jobs:
+  tests-min-sqlalchemy:
+    name: "Min SQLAlchemy test"
+    uses: ./.github/workflows/run-unit-tests.yml
+    permissions:
+      contents: read
+      packages: read
+    secrets: inherit
+    with:
+      runs-on: ${{ inputs.runs-on }}
+      downgrade-sqlalchemy: "true"
+      test-name: "MinSQLAlchemy-Postgres"
+      test-scope: "DB"
+      backend: "postgres"
+      image-tag: ${{ inputs.image-tag }}
+      python-versions: "['${{ inputs.default-python-version }}']"
+      backend-versions: "['${{ inputs.default-postgres-version }}']"
+      excludes: "[]"
+      parallel-test-types-list-as-string: ${{ 
inputs.parallel-test-types-list-as-string }}
+      run-coverage: ${{ inputs.run-coverage }}
+      debug-resources: ${{ inputs.debug-resources }}
+      breeze-python-version: ${{ inputs.breeze-python-version }}
+
+  tests-boto:
+    name: "Latest Boto test"
+    uses: ./.github/workflows/run-unit-tests.yml
+    permissions:
+      contents: read
+      packages: read
+    secrets: inherit
+    with:
+      runs-on: ${{ inputs.runs-on }}
+      upgrade-boto: "true"
+      test-name: "LatestBoto-Postgres"
+      test-scope: "All"
+      backend: "postgres"
+      image-tag: ${{ inputs.image-tag }}
+      python-versions: "['${{ inputs.default-python-version }}']"
+      backend-versions: "['${{ inputs.default-postgres-version }}']"
+      excludes: "[]"
+      parallel-test-types-list-as-string: ${{ 
inputs.parallel-test-types-list-as-string }}
+      run-coverage: ${{ inputs.run-coverage }}
+      debug-resources: ${{ inputs.debug-resources }}
+      breeze-python-version: ${{ inputs.breeze-python-version }}
+
+  tests-pydantic-v1:
+    name: "Pydantic v1 test"
+    uses: ./.github/workflows/run-unit-tests.yml
+    permissions:
+      contents: read
+      packages: read
+    secrets: inherit
+    with:
+      runs-on: ${{ inputs.runs-on }}
+      pydantic: "v1"
+      test-name: "Pydantic-V1-Postgres"
+      test-scope: "All"
+      backend: "postgres"
+      image-tag: ${{ inputs.image-tag }}
+      python-versions: "['${{ inputs.default-python-version }}']"
+      backend-versions: "['${{ inputs.default-postgres-version }}']"
+      excludes: "[]"
+      parallel-test-types-list-as-string: ${{ 
inputs.parallel-test-types-list-as-string }}
+      run-coverage: ${{ inputs.run-coverage }}
+      debug-resources: ${{ inputs.debug-resources }}
+      breeze-python-version: ${{ inputs.breeze-python-version }}
+
+  tests-pydantic-none:
+    name: "Pydantic removed test"
+    uses: ./.github/workflows/run-unit-tests.yml
+    permissions:
+      contents: read
+      packages: read
+    secrets: inherit
+    with:
+      runs-on: ${{ inputs.runs-on }}
+      pydantic: "none"
+      test-name: "Pydantic-Removed-Postgres"
+      test-scope: "All"
+      backend: "postgres"
+      image-tag: ${{ inputs.image-tag }}
+      python-versions: "['${{ inputs.default-python-version }}']"
+      backend-versions: "['${{ inputs.default-postgres-version }}']"
+      excludes: "[]"
+      parallel-test-types-list-as-string: ${{ 
inputs.parallel-test-types-list-as-string }}
+      run-coverage: ${{ inputs.run-coverage }}
+      debug-resources: ${{ inputs.debug-resources }}
+      breeze-python-version: ${{ inputs.breeze-python-version }}
+
+  tests-pendulum-2:
+    name: "Pendulum2 test"
+    uses: ./.github/workflows/run-unit-tests.yml
+    permissions:
+      contents: read
+      packages: read
+    secrets: inherit
+    with:
+      runs-on: ${{ inputs.runs-on }}
+      downgrade-pendulum: "true"
+      test-name: "Pendulum2-Postgres"
+      test-scope: "All"
+      backend: "postgres"
+      image-tag: ${{ inputs.image-tag }}
+      python-versions: "['${{ inputs.default-python-version }}']"
+      backend-versions: "['${{ inputs.default-postgres-version }}']"
+      excludes: "[]"
+      parallel-test-types-list-as-string: ${{ 
inputs.parallel-test-types-list-as-string }}
+      run-coverage: ${{ inputs.run-coverage }}
+      debug-resources: ${{ inputs.debug-resources }}
+      breeze-python-version: ${{ inputs.breeze-python-version }}
+
+  tests-in-progress-disabled:
+    name: "In progress disabled test"
+    uses: ./.github/workflows/run-unit-tests.yml
+    permissions:
+      contents: read
+      packages: read
+    secrets: inherit
+    with:
+      runs-on: ${{ inputs.runs-on }}
+      enable-aip-44: "false"
+      test-name: "InProgressDisabled-Postgres"
+      test-scope: "All"
+      backend: "postgres"
+      image-tag: ${{ inputs.image-tag }}
+      python-versions: "['${{ inputs.default-python-version }}']"
+      backend-versions: "['${{ inputs.default-postgres-version }}']"
+      excludes: "[]"
+      parallel-test-types-list-as-string: ${{ 
inputs.parallel-test-types-list-as-string }}
+      run-coverage: ${{ inputs.run-coverage }}
+      debug-resources: ${{ inputs.debug-resources }}
+      breeze-python-version: ${{ inputs.breeze-python-version }}
+
+  tests-quarantined:
+    name: "Quarantined test"
+    uses: ./.github/workflows/run-unit-tests.yml
+    permissions:
+      contents: read
+      packages: read
+    secrets: inherit
+    with:
+      runs-on: ${{ inputs.runs-on }}
+      test-name: "Postgres"
+      test-scope: "Quarantined"
+      backend: "postgres"
+      image-tag: ${{ inputs.image-tag }}
+      python-versions: "['${{ inputs.default-python-version }}']"
+      backend-versions: "['${{ inputs.default-postgres-version }}']"
+      excludes: "[]"
+      parallel-test-types-list-as-string: ${{ 
inputs.parallel-test-types-list-as-string }}
+      run-coverage: ${{ inputs.run-coverage }}
+      debug-resources: ${{ inputs.debug-resources }}
+      breeze-python-version: ${{ inputs.breeze-python-version }}
+
+  tests-arm-collection:
+    name: "ARM Collection test"
+    uses: ./.github/workflows/run-unit-tests.yml
+    permissions:
+      contents: read
+      packages: read
+    secrets: inherit
+    with:
+      runs-on: ${{ inputs.runs-on }}
+      test-name: "Postgres"
+      test-scope: "ARM collection"
+      backend: "postgres"
+      image-tag: ${{ inputs.image-tag }}
+      python-versions: "['${{ inputs.default-python-version }}']"
+      backend-versions: "['${{ inputs.default-postgres-version }}']"
+      excludes: "[]"
+      parallel-test-types-list-as-string: ${{ 
inputs.parallel-test-types-list-as-string }}
+      run-coverage: ${{ inputs.run-coverage }}
+      debug-resources: ${{ inputs.debug-resources }}
+      breeze-python-version: ${{ inputs.breeze-python-version }}

Reply via email to