diff --git a/.github/workflows/basic-tests.yml b/.github/workflows/basic-tests.yml index 99559f2cfb47b..57cd131d213e8 100644 --- a/.github/workflows/basic-tests.yml +++ b/.github/workflows/basic-tests.yml @@ -32,7 +32,7 @@ on: # yamllint disable-line rule:truthy description: "Whether to run WWW tests (true/false)" required: true type: string - needs-api-codegen: + run-api-codegen: description: "Whether to run API codegen (true/false)" required: true type: string diff --git a/.github/workflows/ci-amd.yml b/.github/workflows/ci-amd.yml index 4d01c7a388c6e..cbf45d09908ac 100644 --- a/.github/workflows/ci-amd.yml +++ b/.github/workflows/ci-amd.yml @@ -57,6 +57,8 @@ jobs: outputs: all-python-versions-list-as-string: >- ${{ steps.selective-checks.outputs.all-python-versions-list-as-string }} + amd-runners: ${{ steps.selective-checks.outputs.amd-runners }} + arm-runners: ${{ steps.selective-checks.outputs.arm-runners }} basic-checks-only: ${{ steps.selective-checks.outputs.basic-checks-only }} canary-run: ${{ steps.source-run-info.outputs.canary-run }} ci-image-build: ${{ steps.selective-checks.outputs.ci-image-build }} @@ -92,11 +94,6 @@ jobs: mypy-checks: ${{ steps.selective-checks.outputs.mypy-checks }} mysql-exclude: ${{ steps.selective-checks.outputs.mysql-exclude }} mysql-versions: ${{ steps.selective-checks.outputs.mysql-versions }} - needs-api-codegen: ${{ steps.selective-checks.outputs.needs-api-codegen }} - needs-api-tests: ${{ steps.selective-checks.outputs.needs-api-tests }} - needs-helm-tests: ${{ steps.selective-checks.outputs.needs-helm-tests }} - needs-mypy: ${{ steps.selective-checks.outputs.needs-mypy }} - only-new-ui-files: ${{ steps.selective-checks.outputs.only-new-ui-files }} postgres-exclude: ${{ steps.selective-checks.outputs.postgres-exclude }} postgres-versions: ${{ steps.selective-checks.outputs.postgres-versions }} prod-image-build: ${{ steps.selective-checks.outputs.prod-image-build }} @@ -108,18 +105,20 @@ jobs: pull-request-labels: ${{ steps.source-run-info.outputs.pr-labels }} python-versions-list-as-string: ${{ steps.selective-checks.outputs.python-versions-list-as-string }} python-versions: ${{ steps.selective-checks.outputs.python-versions }} - run-amazon-tests: ${{ steps.selective-checks.outputs.run-amazon-tests }} run-airflow-ctl-tests: ${{ steps.selective-checks.outputs.run-airflow-ctl-tests }} + run-amazon-tests: ${{ steps.selective-checks.outputs.run-amazon-tests }} + run-api-codegen: ${{ steps.selective-checks.outputs.run-api-codegen }} + run-api-tests: ${{ steps.selective-checks.outputs.run-api-tests }} run-coverage: ${{ steps.source-run-info.outputs.run-coverage }} - run-kubernetes-tests: ${{ steps.selective-checks.outputs.run-kubernetes-tests }} - run-task-sdk-tests: ${{ steps.selective-checks.outputs.run-task-sdk-tests }} run-go-sdk-tests: ${{ steps.selective-checks.outputs.run-go-sdk-tests }} + run-helm-tests: ${{ steps.selective-checks.outputs.run-helm-tests }} + run-kubernetes-tests: ${{ steps.selective-checks.outputs.run-kubernetes-tests }} + run-mypy: ${{ steps.selective-checks.outputs.run-mypy }} run-system-tests: ${{ steps.selective-checks.outputs.run-system-tests }} - run-tests: ${{ steps.selective-checks.outputs.run-tests }} + run-task-sdk-tests: ${{ steps.selective-checks.outputs.run-task-sdk-tests }} run-ui-tests: ${{ steps.selective-checks.outputs.run-ui-tests }} + run-unit-tests: ${{ steps.selective-checks.outputs.run-unit-tests }} run-www-tests: ${{ steps.selective-checks.outputs.run-www-tests }} - amd-runners: ${{ steps.selective-checks.outputs.amd-runners }} - arm-runners: ${{ steps.selective-checks.outputs.arm-runners }} selected-providers-list-as-string: >- ${{ steps.selective-checks.outputs.selected-providers-list-as-string }} skip-prek-hooks: ${{ steps.selective-checks.outputs.skip-prek-hooks }} @@ -205,7 +204,7 @@ jobs: runners: ${{ needs.build-info.outputs.amd-runners }} run-ui-tests: ${{needs.build-info.outputs.run-ui-tests}} run-www-tests: ${{needs.build-info.outputs.run-www-tests}} - needs-api-codegen: ${{needs.build-info.outputs.needs-api-codegen}} + run-api-codegen: ${{needs.build-info.outputs.run-api-codegen}} default-python-version: "${{ needs.build-info.outputs.default-python-version }}" basic-checks-only: ${{needs.build-info.outputs.basic-checks-only}} skip-prek-hooks: ${{needs.build-info.outputs.skip-prek-hooks}} @@ -290,7 +289,7 @@ jobs: with: runners: ${{ needs.build-info.outputs.amd-runners }} platform: "linux/amd64" - needs-mypy: ${{ needs.build-info.outputs.needs-mypy }} + run-mypy: ${{ needs.build-info.outputs.run-mypy }} mypy-checks: ${{ needs.build-info.outputs.mypy-checks }} python-versions-list-as-string: ${{ needs.build-info.outputs.python-versions-list-as-string }} branch: ${{ needs.build-info.outputs.default-branch }} @@ -305,7 +304,7 @@ jobs: include-success-outputs: ${{ needs.build-info.outputs.include-success-outputs }} debug-resources: ${{ needs.build-info.outputs.debug-resources }} docs-build: ${{ needs.build-info.outputs.docs-build }} - needs-api-codegen: ${{ needs.build-info.outputs.needs-api-codegen }} + run-api-codegen: ${{ needs.build-info.outputs.run-api-codegen }} default-postgres-version: ${{ needs.build-info.outputs.default-postgres-version }} run-coverage: ${{ needs.build-info.outputs.run-coverage }} use-uv: ${{ needs.build-info.outputs.use-uv }} @@ -325,7 +324,7 @@ jobs: if: > needs.build-info.outputs.skip-providers-tests != 'true' && needs.build-info.outputs.latest-versions-only != 'true' && - needs.build-info.outputs.run-tests == 'true' + needs.build-info.outputs.run-unit-tests == 'true' with: runners: ${{ needs.build-info.outputs.amd-runners }} platform: "linux/amd64" @@ -356,7 +355,7 @@ jobs: default-python-version: "${{ needs.build-info.outputs.default-python-version }}" use-uv: ${{ needs.build-info.outputs.use-uv }} if: > - needs.build-info.outputs.needs-helm-tests == 'true' && + needs.build-info.outputs.run-helm-tests == 'true' && needs.build-info.outputs.default-branch == 'main' && needs.build-info.outputs.latest-versions-only != 'true' @@ -387,8 +386,7 @@ jobs: skip-providers-tests: ${{ needs.build-info.outputs.skip-providers-tests }} use-uv: ${{ needs.build-info.outputs.use-uv }} default-branch: ${{ needs.build-info.outputs.default-branch }} - - if: needs.build-info.outputs.run-tests == 'true' + if: needs.build-info.outputs.run-unit-tests == 'true' tests-postgres-providers: name: "Postgres tests: providers" @@ -417,7 +415,7 @@ jobs: skip-providers-tests: ${{ needs.build-info.outputs.skip-providers-tests }} use-uv: ${{ needs.build-info.outputs.use-uv }} default-branch: ${{ needs.build-info.outputs.default-branch }} - if: needs.build-info.outputs.run-tests == 'true' + if: needs.build-info.outputs.run-unit-tests == 'true' tests-mysql-core: name: "MySQL tests: core" @@ -446,7 +444,7 @@ jobs: skip-providers-tests: ${{ needs.build-info.outputs.skip-providers-tests }} use-uv: ${{ needs.build-info.outputs.use-uv }} default-branch: ${{ needs.build-info.outputs.default-branch }} - if: needs.build-info.outputs.run-tests == 'true' + if: needs.build-info.outputs.run-unit-tests == 'true' tests-mysql-providers: name: "MySQL tests: providers" @@ -475,7 +473,7 @@ jobs: skip-providers-tests: ${{ needs.build-info.outputs.skip-providers-tests }} use-uv: ${{ needs.build-info.outputs.use-uv }} default-branch: ${{ needs.build-info.outputs.default-branch }} - if: needs.build-info.outputs.run-tests == 'true' + if: needs.build-info.outputs.run-unit-tests == 'true' tests-sqlite-core: @@ -507,7 +505,7 @@ jobs: skip-providers-tests: ${{ needs.build-info.outputs.skip-providers-tests }} use-uv: ${{ needs.build-info.outputs.use-uv }} default-branch: ${{ needs.build-info.outputs.default-branch }} - if: needs.build-info.outputs.run-tests == 'true' + if: needs.build-info.outputs.run-unit-tests == 'true' tests-sqlite-providers: name: "Sqlite tests: providers" @@ -538,7 +536,7 @@ jobs: skip-providers-tests: ${{ needs.build-info.outputs.skip-providers-tests }} use-uv: ${{ needs.build-info.outputs.use-uv }} default-branch: ${{ needs.build-info.outputs.default-branch }} - if: needs.build-info.outputs.run-tests == 'true' + if: needs.build-info.outputs.run-unit-tests == 'true' tests-non-db-core: @@ -569,7 +567,7 @@ jobs: skip-providers-tests: ${{ needs.build-info.outputs.skip-providers-tests }} use-uv: ${{ needs.build-info.outputs.use-uv }} default-branch: ${{ needs.build-info.outputs.default-branch }} - if: needs.build-info.outputs.run-tests == 'true' + if: needs.build-info.outputs.run-unit-tests == 'true' tests-non-db-providers: name: "Non-DB tests: providers" @@ -599,7 +597,7 @@ jobs: skip-providers-tests: ${{ needs.build-info.outputs.skip-providers-tests }} use-uv: ${{ needs.build-info.outputs.use-uv }} default-branch: ${{ needs.build-info.outputs.default-branch }} - if: needs.build-info.outputs.run-tests == 'true' + if: needs.build-info.outputs.run-unit-tests == 'true' tests-special: name: "Special tests" @@ -609,7 +607,7 @@ jobs: contents: read packages: read if: > - needs.build-info.outputs.run-tests == 'true' && + needs.build-info.outputs.run-unit-tests == 'true' && (needs.build-info.outputs.canary-run == 'true' || needs.build-info.outputs.upgrade-to-newer-dependencies != 'false' || needs.build-info.outputs.full-tests-needed == 'true') @@ -645,7 +643,7 @@ jobs: platform: "linux/amd64" testable-core-integrations: ${{ needs.build-info.outputs.testable-core-integrations }} testable-providers-integrations: ${{ needs.build-info.outputs.testable-providers-integrations }} - run-system-tests: ${{ needs.build-info.outputs.run-tests }} + run-system-tests: ${{ needs.build-info.outputs.run-system-tests }} default-python-version: "${{ needs.build-info.outputs.default-python-version }}" default-postgres-version: ${{ needs.build-info.outputs.default-postgres-version }} default-mysql-version: ${{ needs.build-info.outputs.default-mysql-version }} @@ -653,7 +651,7 @@ jobs: debug-resources: ${{ needs.build-info.outputs.debug-resources }} skip-providers-tests: ${{ needs.build-info.outputs.skip-providers-tests }} use-uv: ${{ needs.build-info.outputs.use-uv }} - if: needs.build-info.outputs.run-tests == 'true' + if: needs.build-info.outputs.run-unit-tests == 'true' tests-with-lowest-direct-resolution-core: name: "Low dep tests:core" @@ -663,7 +661,7 @@ jobs: contents: read packages: read if: > - needs.build-info.outputs.run-tests == 'true' + needs.build-info.outputs.run-unit-tests == 'true' with: runners: ${{ needs.build-info.outputs.amd-runners }} platform: "linux/amd64" @@ -693,7 +691,7 @@ jobs: permissions: contents: read packages: read - if: needs.build-info.outputs.run-tests == 'true' + if: needs.build-info.outputs.run-unit-tests == 'true' with: runners: ${{ needs.build-info.outputs.amd-runners }} platform: "linux/amd64" @@ -776,7 +774,7 @@ jobs: kubernetes-combos: ${{ needs.build-info.outputs.kubernetes-combos }} if: > ( needs.build-info.outputs.run-kubernetes-tests == 'true' || - needs.build-info.outputs.needs-helm-tests == 'true') + needs.build-info.outputs.run-helm-tests == 'true') tests-task-sdk: name: "Task SDK tests" @@ -797,23 +795,17 @@ jobs: test-type: "task-sdk-tests" use-local-venv: 'false' test-timeout: 20 - if: > - ( needs.build-info.outputs.run-task-sdk-tests == 'true' || - needs.build-info.outputs.run-tests == 'true' && - needs.build-info.outputs.only-new-ui-files != 'true') + if: needs.build-info.outputs.run-task-sdk-tests == 'true' tests-go-sdk: name: "Go SDK tests" - needs: [build-info, build-ci-images] + needs: [build-info] runs-on: ${{ fromJSON(needs.build-info.outputs.amd-runners) }} timeout-minutes: 15 permissions: contents: read packages: read - if: > - ( needs.build-info.outputs.run-go-sdk-tests == 'true' || - needs.build-info.outputs.run-tests == 'true' && - needs.build-info.outputs.only-new-ui-files != 'true') + if: needs.build-info.outputs.run-go-sdk-tests == 'true' env: GITHUB_REPOSITORY: ${{ github.repository }} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} @@ -824,24 +816,20 @@ jobs: uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 with: persist-credentials: false - # keep this in sync with go.mod in go-sdk/ - name: Setup Go uses: actions/setup-go@d35c59abb061a4a6fb18e82ac0862c26744d6ab5 # v5.5.0 with: go-version: 1.24 cache-dependency-path: go-sdk/go.sum - # keep this in sync with go.mod in go-sdk/ - name: Setup Gotestsum shell: bash run: | go install gotest.tools/gotestsum@ddd0b05a6878e2e8257a2abe6e7df66cebc53d0e # v1.12.3 gotestsum --version - - name: "Cleanup dist files" run: rm -fv ./dist/* - - name: Run Go tests working-directory: ./go-sdk run: gotestsum --format testname ./... @@ -865,10 +853,7 @@ jobs: test-type: "airflow-ctl-tests" use-local-venv: 'true' test-timeout: 20 - if: > - ( needs.build-info.outputs.run-airflow-ctl-tests == 'true' || - needs.build-info.outputs.run-tests == 'true' && - needs.build-info.outputs.only-new-ui-files != 'true') + if: needs.build-info.outputs.run-airflow-ctl-tests == 'true' finalize-tests: name: Finalize tests @@ -900,6 +885,7 @@ jobs: - tests-sqlite-providers - tests-task-sdk - tests-airflow-ctl + - tests-go-sdk - tests-with-lowest-direct-resolution-core - tests-with-lowest-direct-resolution-providers uses: ./.github/workflows/finalize-tests.yml @@ -947,7 +933,7 @@ jobs: timeout-minutes: 15 name: "Summarize warnings" runs-on: ${{ fromJSON(needs.build-info.outputs.amd-runners) }} - if: needs.build-info.outputs.run-tests == 'true' + if: needs.build-info.outputs.run-unit-tests == 'true' steps: - name: "Cleanup repo" shell: bash diff --git a/.github/workflows/ci-arm.yml b/.github/workflows/ci-arm.yml index ec2abf75077a1..37bac6d7e6782 100644 --- a/.github/workflows/ci-arm.yml +++ b/.github/workflows/ci-arm.yml @@ -50,6 +50,8 @@ jobs: outputs: all-python-versions-list-as-string: >- ${{ steps.selective-checks.outputs.all-python-versions-list-as-string }} + amd-runners: ${{ steps.selective-checks.outputs.amd-runners }} + arm-runners: ${{ steps.selective-checks.outputs.arm-runners }} basic-checks-only: ${{ steps.selective-checks.outputs.basic-checks-only }} canary-run: ${{ steps.source-run-info.outputs.canary-run }} ci-image-build: ${{ steps.selective-checks.outputs.ci-image-build }} @@ -85,11 +87,6 @@ jobs: mypy-checks: ${{ steps.selective-checks.outputs.mypy-checks }} mysql-exclude: ${{ steps.selective-checks.outputs.mysql-exclude }} mysql-versions: ${{ steps.selective-checks.outputs.mysql-versions }} - needs-api-codegen: ${{ steps.selective-checks.outputs.needs-api-codegen }} - needs-api-tests: ${{ steps.selective-checks.outputs.needs-api-tests }} - needs-helm-tests: ${{ steps.selective-checks.outputs.needs-helm-tests }} - needs-mypy: ${{ steps.selective-checks.outputs.needs-mypy }} - only-new-ui-files: ${{ steps.selective-checks.outputs.only-new-ui-files }} postgres-exclude: ${{ steps.selective-checks.outputs.postgres-exclude }} postgres-versions: ${{ steps.selective-checks.outputs.postgres-versions }} prod-image-build: ${{ steps.selective-checks.outputs.prod-image-build }} @@ -101,18 +98,20 @@ jobs: pull-request-labels: ${{ steps.source-run-info.outputs.pr-labels }} python-versions-list-as-string: ${{ steps.selective-checks.outputs.python-versions-list-as-string }} python-versions: ${{ steps.selective-checks.outputs.python-versions }} - run-amazon-tests: ${{ steps.selective-checks.outputs.run-amazon-tests }} run-airflow-ctl-tests: ${{ steps.selective-checks.outputs.run-airflow-ctl-tests }} + run-amazon-tests: ${{ steps.selective-checks.outputs.run-amazon-tests }} + run-api-codegen: ${{ steps.selective-checks.outputs.run-api-codegen }} + run-api-tests: ${{ steps.selective-checks.outputs.run-api-tests }} run-coverage: ${{ steps.source-run-info.outputs.run-coverage }} - run-kubernetes-tests: ${{ steps.selective-checks.outputs.run-kubernetes-tests }} - run-task-sdk-tests: ${{ steps.selective-checks.outputs.run-task-sdk-tests }} run-go-sdk-tests: ${{ steps.selective-checks.outputs.run-go-sdk-tests }} + run-helm-tests: ${{ steps.selective-checks.outputs.run-helm-tests }} + run-kubernetes-tests: ${{ steps.selective-checks.outputs.run-kubernetes-tests }} + run-mypy: ${{ steps.selective-checks.outputs.run-mypy }} run-system-tests: ${{ steps.selective-checks.outputs.run-system-tests }} - run-tests: ${{ steps.selective-checks.outputs.run-tests }} + run-task-sdk-tests: ${{ steps.selective-checks.outputs.run-task-sdk-tests }} run-ui-tests: ${{ steps.selective-checks.outputs.run-ui-tests }} + run-unit-tests: ${{ steps.selective-checks.outputs.run-unit-tests }} run-www-tests: ${{ steps.selective-checks.outputs.run-www-tests }} - amd-runners: ${{ steps.selective-checks.outputs.amd-runners }} - arm-runners: ${{ steps.selective-checks.outputs.arm-runners }} selected-providers-list-as-string: >- ${{ steps.selective-checks.outputs.selected-providers-list-as-string }} skip-prek-hooks: ${{ steps.selective-checks.outputs.skip-prek-hooks }} @@ -168,7 +167,7 @@ jobs: runners: ${{ needs.build-info.outputs.arm-runners }} run-ui-tests: ${{needs.build-info.outputs.run-ui-tests}} run-www-tests: ${{needs.build-info.outputs.run-www-tests}} - needs-api-codegen: ${{needs.build-info.outputs.needs-api-codegen}} + run-api-codegen: ${{needs.build-info.outputs.run-api-codegen}} default-python-version: "${{ needs.build-info.outputs.default-python-version }}" basic-checks-only: ${{needs.build-info.outputs.basic-checks-only}} skip-prek-hooks: ${{needs.build-info.outputs.skip-prek-hooks}} @@ -283,7 +282,7 @@ jobs: default-python-version: "${{ needs.build-info.outputs.default-python-version }}" use-uv: ${{ needs.build-info.outputs.use-uv }} if: > - needs.build-info.outputs.needs-helm-tests == 'true' && + needs.build-info.outputs.run-helm-tests == 'true' && needs.build-info.outputs.default-branch == 'main' && needs.build-info.outputs.latest-versions-only != 'true' @@ -314,7 +313,7 @@ jobs: skip-providers-tests: ${{ needs.build-info.outputs.skip-providers-tests }} use-uv: ${{ needs.build-info.outputs.use-uv }} default-branch: ${{ needs.build-info.outputs.default-branch }} - if: needs.build-info.outputs.run-tests == 'true' + if: needs.build-info.outputs.run-unit-tests == 'true' tests-postgres-providers: name: "Postgres tests: providers" @@ -343,7 +342,7 @@ jobs: skip-providers-tests: ${{ needs.build-info.outputs.skip-providers-tests }} use-uv: ${{ needs.build-info.outputs.use-uv }} default-branch: ${{ needs.build-info.outputs.default-branch }} - if: needs.build-info.outputs.run-tests == 'true' + if: needs.build-info.outputs.run-unit-tests == 'true' tests-sqlite-core: name: "Sqlite tests: core" @@ -374,7 +373,7 @@ jobs: skip-providers-tests: ${{ needs.build-info.outputs.skip-providers-tests }} use-uv: ${{ needs.build-info.outputs.use-uv }} default-branch: ${{ needs.build-info.outputs.default-branch }} - if: needs.build-info.outputs.run-tests == 'true' + if: needs.build-info.outputs.run-unit-tests == 'true' tests-sqlite-providers: name: "Sqlite tests: providers" @@ -405,7 +404,7 @@ jobs: skip-providers-tests: ${{ needs.build-info.outputs.skip-providers-tests }} use-uv: ${{ needs.build-info.outputs.use-uv }} default-branch: ${{ needs.build-info.outputs.default-branch }} - if: needs.build-info.outputs.run-tests == 'true' + if: needs.build-info.outputs.run-unit-tests == 'true' tests-non-db-core: @@ -436,7 +435,7 @@ jobs: skip-providers-tests: ${{ needs.build-info.outputs.skip-providers-tests }} use-uv: ${{ needs.build-info.outputs.use-uv }} default-branch: ${{ needs.build-info.outputs.default-branch }} - if: needs.build-info.outputs.run-tests == 'true' + if: needs.build-info.outputs.run-unit-tests == 'true' tests-non-db-providers: name: "Non-DB tests: providers" @@ -466,7 +465,7 @@ jobs: skip-providers-tests: ${{ needs.build-info.outputs.skip-providers-tests }} use-uv: ${{ needs.build-info.outputs.use-uv }} default-branch: ${{ needs.build-info.outputs.default-branch }} - if: needs.build-info.outputs.run-tests == 'true' + if: needs.build-info.outputs.run-unit-tests == 'true' build-prod-images: name: Build PROD images @@ -511,7 +510,7 @@ jobs: kubernetes-combos: ${{ needs.build-info.outputs.kubernetes-combos }} if: > ( needs.build-info.outputs.run-kubernetes-tests == 'true' || - needs.build-info.outputs.needs-helm-tests == 'true') + needs.build-info.outputs.run-helm-tests == 'true') tests-go-sdk: name: "Go SDK tests" @@ -521,10 +520,7 @@ jobs: permissions: contents: read packages: read - if: > - ( needs.build-info.outputs.run-go-sdk-tests == 'true' || - needs.build-info.outputs.run-tests == 'true' && - needs.build-info.outputs.only-new-ui-files != 'true') + if: needs.build-info.outputs.run-go-sdk-tests == 'true' env: GITHUB_REPOSITORY: ${{ github.repository }} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} @@ -535,17 +531,14 @@ jobs: uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 with: persist-credentials: false - # keep this in sync with go.mod in go-sdk/ - name: Setup Go uses: actions/setup-go@d35c59abb061a4a6fb18e82ac0862c26744d6ab5 # v5.5.0 with: go-version: 1.24 cache-dependency-path: go-sdk/go.sum - - name: "Cleanup dist files" run: rm -fv ./dist/* - - name: Run Go tests working-directory: ./go-sdk run: go test -v ./... diff --git a/.github/workflows/ci-image-checks.yml b/.github/workflows/ci-image-checks.yml index e209aca95a615..32953b674169d 100644 --- a/.github/workflows/ci-image-checks.yml +++ b/.github/workflows/ci-image-checks.yml @@ -28,7 +28,7 @@ on: # yamllint disable-line rule:truthy description: "Platform for the build - 'linux/amd64' or 'linux/arm64'" required: true type: string - needs-mypy: + run-mypy: description: "Whether to run mypy checks (true/false)" required: true type: string @@ -88,7 +88,7 @@ on: # yamllint disable-line rule:truthy description: "Whether to build docs (true/false)" required: true type: string - needs-api-codegen: + run-api-codegen: description: "Whether to run API codegen (true/false)" required: true type: string @@ -211,7 +211,7 @@ jobs: name: "MyPy checks" runs-on: ${{ fromJSON(inputs.runners) }} needs: install-prek - if: inputs.needs-mypy == 'true' + if: inputs.run-mypy == 'true' strategy: fail-fast: false matrix: @@ -407,7 +407,7 @@ jobs: timeout-minutes: 60 name: "Test Python API client" runs-on: ${{ fromJSON(inputs.runners) }} - if: inputs.needs-api-codegen == 'true' + if: inputs.run-api-codegen == 'true' env: BACKEND: "postgres" BACKEND_VERSION: "${{ inputs.default-postgres-version }}" diff --git a/.github/workflows/test-providers.yml b/.github/workflows/test-providers.yml index 3c187c42a0746..700f6e543933b 100644 --- a/.github/workflows/test-providers.yml +++ b/.github/workflows/test-providers.yml @@ -47,7 +47,7 @@ on: # yamllint disable-line rule:truthy providers-compatibility-tests-matrix: description: > JSON-formatted array of providers compatibility tests in the form of array of dicts - (airflow-version, python-versions, remove-providers, run-tests) + (airflow-version, python-versions, remove-providers, run-unit-tests) required: true type: string providers-test-types-list-as-strings-in-json: @@ -217,7 +217,7 @@ jobs: Airflow ${{ matrix.compat.airflow-version }}:Python ${{ matrix.compat.python-version }} # We do not need to run import check if we run tests, the tests should cover all the import checks # automatically - if: matrix.compat.run-tests != 'true' + if: matrix.compat.run-unit-tests != 'true' env: AIRFLOW_VERSION: "${{ matrix.compat.airflow-version }}" run: > @@ -234,7 +234,7 @@ jobs: - name: > Run provider unit tests on Airflow ${{ matrix.compat.airflow-version }}:Python ${{ matrix.compat.python-version }}:${{ matrix.test-types.description }} - if: matrix.compat.run-tests == 'true' + if: matrix.compat.run-unit-tests == 'true' env: PROVIDERS_TEST_TYPES: "${{ matrix.test-types.test_types }}" AIRFLOW_VERSION: "${{ matrix.compat.airflow-version }}" diff --git a/dev/breeze/doc/ci/04_selective_checks.md b/dev/breeze/doc/ci/04_selective_checks.md index 8f6f255985cf9..f7bbbb7cc0293 100644 --- a/dev/breeze/doc/ci/04_selective_checks.md +++ b/dev/breeze/doc/ci/04_selective_checks.md @@ -205,13 +205,6 @@ GitHub Actions to pass the list of parameters to a command to execute | mypy-checks | List of folders to be considered for mypy checks | \["airflow_aux", "airflow_core"\] | | | mysql-exclude | Which versions of MySQL to exclude for tests as JSON array | [] | | | mysql-versions | Which versions of MySQL to use for tests as JSON array | \['8.0'\] | | -| needs-api-codegen | Whether "api-codegen" are needed to run ("true"/"false") | true | | -| needs-api-tests | Whether "api-tests" are needed to run ("true"/"false") | true | | -| needs-helm-tests | Whether Helm tests are needed to run ("true"/"false") | true | | -| needs-javascript-scans | Whether javascript CodeQL scans should be run ("true"/"false") | true | | -| needs-mypy | Whether mypy check is supposed to run in this build | true | | -| needs-python-scans | Whether Python CodeQL scans should be run ("true"/"false") | true | | -| only-new-ui-files | Whether only new UI files are present in the PR ("true"/"false") | false | | | postgres-exclude | Which versions of Postgres to exclude for tests as JSON array | [] | | | postgres-versions | Which versions of Postgres to use for tests as JSON array | \['12'\] | | | prod-image-build | Whether PROD image build is needed | true | | @@ -221,11 +214,15 @@ GitHub Actions to pass the list of parameters to a command to execute | python-versions | List of python versions to use for that build | \['3.10'\] | | | python-versions-list-as-string | Which versions of MySQL to use for tests as space-separated string | 3.10 | * | | run-amazon-tests | Whether Amazon tests should be run ("true"/"false") | true | | +| run-api-codegen | Whether "api-codegen" are needed to run ("true"/"false") | true | | +| run-api-tests | Whether "api-tests" are needed to run ("true"/"false") | true | | +| run-helm-tests | Whether Helm tests are needed to run ("true"/"false") | true | | | run-kubernetes-tests | Whether Kubernetes tests should be run ("true"/"false") | true | | +| run-mypy | Whether mypy check is supposed to run in this build | true | | | run-system-tests | Whether system tests should be run ("true"/"false") | true | | | run-task-sdk-tests | Whether Task SDK tests should be run ("true"/"false") | true | | -| run-tests | Whether unit tests should be run ("true"/"false") | true | | | run-ui-tests | Whether UI tests should be run ("true"/"false") | true | | +| run-unit-tests | Whether unit tests should be run ("true"/"false") | true | | | run-www-tests | Whether Legacy WWW tests should be run ("true"/"false") | true | | | amd-runners | List of labels assigned for runners for that build for public AMD runners | \["ubuntu-22.04"\] | | | arm-runners | List of labels assigned for runners for that build for public ARM runners | \["ubuntu-22.04-arm"\] | | diff --git a/dev/breeze/src/airflow_breeze/global_constants.py b/dev/breeze/src/airflow_breeze/global_constants.py index 64decc9ca4690..57e24b12f8225 100644 --- a/dev/breeze/src/airflow_breeze/global_constants.py +++ b/dev/breeze/src/airflow_breeze/global_constants.py @@ -752,19 +752,19 @@ def generate_provider_dependencies_if_needed(): "python-version": "3.10", "airflow-version": "2.10.5", "remove-providers": "common.messaging fab git keycloak", - "run-tests": "true", + "run-unit-tests": "true", }, { "python-version": "3.10", "airflow-version": "2.11.0", "remove-providers": "common.messaging fab git keycloak", - "run-tests": "true", + "run-unit-tests": "true", }, { "python-version": "3.10", "airflow-version": "3.0.4", "remove-providers": "", - "run-tests": "true", + "run-unit-tests": "true", }, ] diff --git a/dev/breeze/src/airflow_breeze/utils/selective_checks.py b/dev/breeze/src/airflow_breeze/utils/selective_checks.py index 65ca028a6ad54..f44e121004984 100644 --- a/dev/breeze/src/airflow_breeze/utils/selective_checks.py +++ b/dev/breeze/src/airflow_breeze/utils/selective_checks.py @@ -141,7 +141,7 @@ def __hash__(self): return hash(frozenset(self)) -CI_FILE_GROUP_MATCHES = HashableDict( +CI_FILE_GROUP_MATCHES: HashableDict[FileGroupForCi] = HashableDict( { FileGroupForCi.ENVIRONMENT_FILES: [ r"^.github/workflows", @@ -306,7 +306,7 @@ def __hash__(self): r"^providers/tests/standard/operators/test_python.py", ] -TEST_TYPE_MATCHES = HashableDict( +TEST_TYPE_MATCHES: HashableDict[SelectiveCoreTestType] = HashableDict( { SelectiveCoreTestType.API: [ r"^airflow-core/src/airflow/api/", @@ -757,27 +757,27 @@ def mypy_checks(self) -> list[str]: return checks_to_run @cached_property - def needs_mypy(self) -> bool: + def run_mypy(self) -> bool: return self.mypy_checks != [] @cached_property - def needs_python_scans(self) -> bool: + def run_python_scans(self) -> bool: return self._should_be_run(FileGroupForCi.PYTHON_PRODUCTION_FILES) @cached_property - def needs_javascript_scans(self) -> bool: + def run_javascript_scans(self) -> bool: return self._should_be_run(FileGroupForCi.JAVASCRIPT_PRODUCTION_FILES) @cached_property - def needs_api_tests(self) -> bool: + def run_api_tests(self) -> bool: return self._should_be_run(FileGroupForCi.API_FILES) @cached_property - def needs_ol_tests(self) -> bool: + def run_ol_tests(self) -> bool: return self._should_be_run(FileGroupForCi.ASSET_FILES) @cached_property - def needs_api_codegen(self) -> bool: + def run_api_codegen(self) -> bool: return self._should_be_run(FileGroupForCi.API_CODEGEN_FILES) @cached_property @@ -814,23 +814,34 @@ def docs_build(self) -> bool: return self._should_be_run(FileGroupForCi.DOC_FILES) @cached_property - def needs_helm_tests(self) -> bool: + def run_helm_tests(self) -> bool: return self._should_be_run(FileGroupForCi.HELM_FILES) and self._default_branch == "main" @cached_property - def run_tests(self) -> bool: + def run_unit_tests(self) -> bool: + def _only_new_ui_files() -> bool: + all_source_files = set( + self._matching_files(FileGroupForCi.ALL_SOURCE_FILES, CI_FILE_GROUP_MATCHES) + ) + new_ui_source_files = set(self._matching_files(FileGroupForCi.UI_FILES, CI_FILE_GROUP_MATCHES)) + remaining_files = all_source_files - new_ui_source_files + + if all_source_files and new_ui_source_files and not remaining_files: + return True + return False + if self.full_tests_needed: return True if self._is_canary_run(): return True - if self.only_new_ui_files: + if _only_new_ui_files(): return False # we should run all test return self._should_be_run(FileGroupForCi.ALL_SOURCE_FILES) @cached_property def run_system_tests(self) -> bool: - return self.run_tests + return self.run_unit_tests @cached_property def only_pyproject_toml_files_changed(self) -> bool: @@ -842,10 +853,10 @@ def ci_image_build(self) -> bool: # changes because some of our tests - those that need CI image might need to be run depending on # changed rules for static checks that are part of the pyproject.toml file return ( - self.run_tests + self.run_unit_tests or self.docs_build or self.run_kubernetes_tests - or self.needs_helm_tests + or self.run_helm_tests or self.run_ui_tests or self.pyproject_toml_changed or self.any_provider_yaml_or_pyproject_toml_changed @@ -853,7 +864,7 @@ def ci_image_build(self) -> bool: @cached_property def prod_image_build(self) -> bool: - return self.run_kubernetes_tests or self.needs_helm_tests + return self.run_kubernetes_tests or self.run_helm_tests def _select_test_type_if_matching( self, test_types: set[str], test_type: SelectiveCoreTestType @@ -960,7 +971,7 @@ def _get_providers_test_types_to_run(self, split_to_individual_providers: bool = len(all_providers_source_files) == 0 and len(all_providers_distribution_config_files) == 0 and len(assets_source_files) == 0 - and not self.needs_api_tests + and not self.run_api_tests ): # IF API tests are needed, that will trigger extra provider checks return [] @@ -1021,14 +1032,14 @@ def _extract_long_provider_tests(current_test_types: set[str]): @cached_property def core_test_types_list_as_strings_in_json(self) -> str | None: - if not self.run_tests: + if not self.run_unit_tests: return None current_test_types = sorted(set(self._get_core_test_types_to_run())) return json.dumps(_get_test_list_as_json([current_test_types])) @cached_property def providers_test_types_list_as_strings_in_json(self) -> str: - if not self.run_tests: + if not self.run_unit_tests: return "[]" current_test_types = set(self._get_providers_test_types_to_run()) if self._default_branch != "main": @@ -1056,7 +1067,7 @@ def _get_individual_providers_list(self): @cached_property def individual_providers_test_types_list_as_strings_in_json(self) -> str | None: """Splits the list of test types into several lists of strings (to run them in parallel).""" - if not self.run_tests: + if not self.run_unit_tests: return None current_test_types = sorted(self._get_individual_providers_list()) if not current_test_types: @@ -1264,7 +1275,7 @@ def skip_providers_tests(self) -> bool: return False if self._get_providers_test_types_to_run(): return False - if not self.run_tests: + if not self.run_unit_tests: return True return True @@ -1334,19 +1345,9 @@ def excluded_providers_as_string(self) -> str: ) # ^ sort by Python minor version return json.dumps(sorted_providers_to_exclude) - @cached_property - def only_new_ui_files(self) -> bool: - all_source_files = set(self._matching_files(FileGroupForCi.ALL_SOURCE_FILES, CI_FILE_GROUP_MATCHES)) - new_ui_source_files = set(self._matching_files(FileGroupForCi.UI_FILES, CI_FILE_GROUP_MATCHES)) - remaining_files = all_source_files - new_ui_source_files - - if all_source_files and new_ui_source_files and not remaining_files: - return True - return False - @cached_property def testable_core_integrations(self) -> list[str]: - if not self.run_tests: + if not self.run_unit_tests: return [] return [ integration @@ -1356,7 +1357,7 @@ def testable_core_integrations(self) -> list[str]: @cached_property def testable_providers_integrations(self) -> list[str]: - if not self.run_tests: + if not self.run_unit_tests: return [] return [ integration @@ -1384,9 +1385,9 @@ def _find_all_providers_affected(self, include_docs: bool) -> list[str] | AllPro suspended_providers.add(provider) else: affected_providers.add(provider) - if self.needs_api_tests: + if self.run_api_tests: affected_providers.add("fab") - if self.needs_ol_tests: + if self.run_ol_tests: affected_providers.add("openlineage") if all_providers_affected: return ALL_PROVIDERS_SENTINEL diff --git a/dev/breeze/tests/test_selective_checks.py b/dev/breeze/tests/test_selective_checks.py index a988755bea435..b9542f72d9d7b 100644 --- a/dev/breeze/tests/test_selective_checks.py +++ b/dev/breeze/tests/test_selective_checks.py @@ -243,8 +243,8 @@ def assert_outputs_are_printed(expected_outputs: dict[str, str], stderr: str): "python-versions": f"['{DEFAULT_PYTHON_MAJOR_MINOR_VERSION}']", "python-versions-list-as-string": DEFAULT_PYTHON_MAJOR_MINOR_VERSION, "ci-image-build": "false", - "needs-helm-tests": "false", - "run-tests": "false", + "run-helm-tests": "false", + "run-unit-tests": "false", "run-amazon-tests": "false", "docs-build": "false", "skip-prek-hooks": ALL_SKIPPED_COMMITS_ON_NO_CI_IMAGE, @@ -252,7 +252,7 @@ def assert_outputs_are_printed(expected_outputs: dict[str, str], stderr: str): "core-test-types-list-as-strings-in-json": None, "providers-test-types-list-as-strings-in-json": None, "individual-providers-test-types-list-as-strings-in-json": None, - "needs-mypy": "false", + "run-mypy": "false", "mypy-checks": "[]", }, id="No tests on simple change", @@ -278,15 +278,15 @@ def assert_outputs_are_printed(expected_outputs: dict[str, str], stderr: str): "python-versions-list-as-string": DEFAULT_PYTHON_MAJOR_MINOR_VERSION, "ci-image-build": "true", "prod-image-build": "true", - "needs-helm-tests": "true", - "run-tests": "true", + "run-helm-tests": "true", + "run-unit-tests": "true", "docs-build": "true", "skip-prek-hooks": ALL_SKIPPED_COMMITS_BY_DEFAULT_ON_ALL_TESTS_NEEDED, "upgrade-to-newer-dependencies": "false", "core-test-types-list-as-strings-in-json": ALL_CI_SELECTIVE_TEST_TYPES_AS_JSON, "providers-test-types-list-as-strings-in-json": ALL_PROVIDERS_SELECTIVE_TEST_TYPES_AS_JSON, "individual-providers-test-types-list-as-strings-in-json": LIST_OF_ALL_PROVIDER_TESTS_AS_JSON, - "needs-mypy": "true", + "run-mypy": "true", "mypy-checks": ALL_MYPY_CHECKS, }, id="All tests should be run when API file changed", @@ -302,8 +302,8 @@ def assert_outputs_are_printed(expected_outputs: dict[str, str], stderr: str): "python-versions-list-as-string": DEFAULT_PYTHON_MAJOR_MINOR_VERSION, "ci-image-build": "true", "prod-image-build": "true", - "needs-helm-tests": "true", - "run-tests": "true", + "run-helm-tests": "true", + "run-unit-tests": "true", "run-amazon-tests": "true", "docs-build": "true", "skip-prek-hooks": ALL_SKIPPED_COMMITS_BY_DEFAULT_ON_ALL_TESTS_NEEDED, @@ -311,7 +311,7 @@ def assert_outputs_are_printed(expected_outputs: dict[str, str], stderr: str): "core-test-types-list-as-strings-in-json": ALL_CI_SELECTIVE_TEST_TYPES_AS_JSON, "providers-test-types-list-as-strings-in-json": ALL_PROVIDERS_SELECTIVE_TEST_TYPES_AS_JSON, "individual-providers-test-types-list-as-strings-in-json": LIST_OF_ALL_PROVIDER_TESTS_AS_JSON, - "needs-mypy": "true", + "run-mypy": "true", "mypy-checks": ALL_MYPY_CHECKS, }, id="All tests should be run when fastapi files change", @@ -327,8 +327,8 @@ def assert_outputs_are_printed(expected_outputs: dict[str, str], stderr: str): "python-versions-list-as-string": DEFAULT_PYTHON_MAJOR_MINOR_VERSION, "ci-image-build": "true", "prod-image-build": "true", - "needs-helm-tests": "true", - "run-tests": "true", + "run-helm-tests": "true", + "run-unit-tests": "true", "run-amazon-tests": "true", "docs-build": "true", "skip-prek-hooks": ALL_SKIPPED_COMMITS_BY_DEFAULT_ON_ALL_TESTS_NEEDED, @@ -336,7 +336,7 @@ def assert_outputs_are_printed(expected_outputs: dict[str, str], stderr: str): "core-test-types-list-as-strings-in-json": ALL_CI_SELECTIVE_TEST_TYPES_AS_JSON, "providers-test-types-list-as-strings-in-json": ALL_PROVIDERS_SELECTIVE_TEST_TYPES_AS_JSON, "individual-providers-test-types-list-as-strings-in-json": LIST_OF_ALL_PROVIDER_TESTS_AS_JSON, - "needs-mypy": "true", + "run-mypy": "true", "mypy-checks": ALL_MYPY_CHECKS, }, id="All tests should run when API test files change", @@ -353,8 +353,8 @@ def assert_outputs_are_printed(expected_outputs: dict[str, str], stderr: str): "python-versions-list-as-string": DEFAULT_PYTHON_MAJOR_MINOR_VERSION, "ci-image-build": "true", "prod-image-build": "false", - "needs-helm-tests": "false", - "run-tests": "true", + "run-helm-tests": "false", + "run-unit-tests": "true", "run-amazon-tests": "false", "docs-build": "true", "skip-prek-hooks": ALL_SKIPPED_COMMITS_IF_NO_PROVIDERS_UI_AND_HELM_TESTS, @@ -364,7 +364,7 @@ def assert_outputs_are_printed(expected_outputs: dict[str, str], stderr: str): ), "providers-test-types-list-as-strings-in-json": None, "individual-providers-test-types-list-as-strings-in-json": None, - "needs-mypy": "true", + "run-mypy": "true", "mypy-checks": "['mypy-airflow-core']", "skip-providers-tests": "true", }, @@ -385,8 +385,8 @@ def assert_outputs_are_printed(expected_outputs: dict[str, str], stderr: str): "python-versions-list-as-string": DEFAULT_PYTHON_MAJOR_MINOR_VERSION, "ci-image-build": "true", "prod-image-build": "true", - "needs-helm-tests": "true", - "run-tests": "true", + "run-helm-tests": "true", + "run-unit-tests": "true", "run-amazon-tests": "true", "docs-build": "true", "skip-prek-hooks": ALL_SKIPPED_COMMITS_BY_DEFAULT_ON_ALL_TESTS_NEEDED, @@ -394,7 +394,7 @@ def assert_outputs_are_printed(expected_outputs: dict[str, str], stderr: str): "core-test-types-list-as-strings-in-json": ALL_CI_SELECTIVE_TEST_TYPES_AS_JSON, "providers-test-types-list-as-strings-in-json": ALL_PROVIDERS_SELECTIVE_TEST_TYPES_AS_JSON, "individual-providers-test-types-list-as-strings-in-json": LIST_OF_ALL_PROVIDER_TESTS_AS_JSON, - "needs-mypy": "true", + "run-mypy": "true", "mypy-checks": ALL_MYPY_CHECKS, }, id="All tests and docs should run on API change", @@ -411,8 +411,8 @@ def assert_outputs_are_printed(expected_outputs: dict[str, str], stderr: str): "python-versions-list-as-string": DEFAULT_PYTHON_MAJOR_MINOR_VERSION, "ci-image-build": "true", "prod-image-build": "false", - "needs-helm-tests": "false", - "run-tests": "true", + "run-helm-tests": "false", + "run-unit-tests": "true", "run-amazon-tests": "false", "docs-build": "true", "skip-prek-hooks": ALL_SKIPPED_COMMITS_IF_NO_UI_AND_HELM_TESTS, @@ -438,7 +438,7 @@ def assert_outputs_are_printed(expected_outputs: dict[str, str], stderr: str): } ] ), - "needs-mypy": "true", + "run-mypy": "true", "mypy-checks": "['mypy-providers']", }, id="Selected Providers and docs should run", @@ -455,8 +455,8 @@ def assert_outputs_are_printed(expected_outputs: dict[str, str], stderr: str): "python-versions-list-as-string": DEFAULT_PYTHON_MAJOR_MINOR_VERSION, "ci-image-build": "true", "prod-image-build": "false", - "needs-helm-tests": "false", - "run-tests": "true", + "run-helm-tests": "false", + "run-unit-tests": "true", "run-amazon-tests": "false", "docs-build": "true", "skip-prek-hooks": ALL_SKIPPED_COMMITS_IF_NO_UI_AND_HELM_TESTS, @@ -482,7 +482,7 @@ def assert_outputs_are_printed(expected_outputs: dict[str, str], stderr: str): } ] ), - "needs-mypy": "true", + "run-mypy": "true", "mypy-checks": "['mypy-providers']", "skip-providers-tests": "false", }, @@ -503,8 +503,8 @@ def assert_outputs_are_printed(expected_outputs: dict[str, str], stderr: str): "python-versions-list-as-string": DEFAULT_PYTHON_MAJOR_MINOR_VERSION, "ci-image-build": "true", "prod-image-build": "false", - "needs-helm-tests": "false", - "run-tests": "true", + "run-helm-tests": "false", + "run-unit-tests": "true", "run-amazon-tests": "false", "docs-build": "true", "skip-prek-hooks": ALL_SKIPPED_COMMITS_IF_NO_UI_AND_HELM_TESTS, @@ -530,7 +530,7 @@ def assert_outputs_are_printed(expected_outputs: dict[str, str], stderr: str): } ] ), - "needs-mypy": "true", + "run-mypy": "true", "mypy-checks": "['mypy-providers']", "skip-providers-tests": "false", }, @@ -551,8 +551,8 @@ def assert_outputs_are_printed(expected_outputs: dict[str, str], stderr: str): "python-versions-list-as-string": DEFAULT_PYTHON_MAJOR_MINOR_VERSION, "ci-image-build": "true", "prod-image-build": "false", - "needs-helm-tests": "false", - "run-tests": "true", + "run-helm-tests": "false", + "run-unit-tests": "true", "run-amazon-tests": "false", "docs-build": "true", "skip-prek-hooks": ALL_SKIPPED_COMMITS_IF_NO_UI_AND_HELM_TESTS, @@ -578,7 +578,7 @@ def assert_outputs_are_printed(expected_outputs: dict[str, str], stderr: str): } ] ), - "needs-mypy": "true", + "run-mypy": "true", "mypy-checks": "['mypy-providers']", "skip-providers-tests": "false", }, @@ -597,8 +597,8 @@ def assert_outputs_are_printed(expected_outputs: dict[str, str], stderr: str): "python-versions-list-as-string": DEFAULT_PYTHON_MAJOR_MINOR_VERSION, "ci-image-build": "true", "prod-image-build": "false", - "needs-helm-tests": "false", - "run-tests": "false", + "run-helm-tests": "false", + "run-unit-tests": "false", "run-amazon-tests": "false", "docs-build": "true", "skip-prek-hooks": ALL_SKIPPED_COMMITS_ON_NO_CI_IMAGE, @@ -606,7 +606,7 @@ def assert_outputs_are_printed(expected_outputs: dict[str, str], stderr: str): "upgrade-to-newer-dependencies": "false", "core-test-types-list-as-strings-in-json": None, "providers-test-types-list-as-strings-in-json": None, - "needs-mypy": "false", + "run-mypy": "false", "mypy-checks": "[]", }, id="Only docs builds should run - no tests needed", @@ -622,10 +622,10 @@ def assert_outputs_are_printed(expected_outputs: dict[str, str], stderr: str): "python-versions-list-as-string": DEFAULT_PYTHON_MAJOR_MINOR_VERSION, "ci-image-build": "true", "prod-image-build": "false", - "needs-api-tests": "false", - "needs-helm-tests": "false", + "run-api-tests": "false", + "run-helm-tests": "false", "run-kubernetes-tests": "false", - "run-tests": "true", + "run-unit-tests": "true", "run-task-sdk-tests": "true", "docs-build": "true", "full-tests-needed": "false", @@ -634,7 +634,7 @@ def assert_outputs_are_printed(expected_outputs: dict[str, str], stderr: str): "upgrade-to-newer-dependencies": "false", "core-test-types-list-as-strings-in-json": ALL_CI_SELECTIVE_TEST_TYPES_AS_JSON, "providers-test-types-list-as-strings-in-json": ALL_PROVIDERS_SELECTIVE_TEST_TYPES_AS_JSON, - "needs-mypy": "true", + "run-mypy": "true", "mypy-checks": "['mypy-providers', 'mypy-task-sdk']", }, id="Task SDK source file changed - Task SDK, Core and provider tests should run", @@ -655,8 +655,8 @@ def assert_outputs_are_printed(expected_outputs: dict[str, str], stderr: str): "python-versions-list-as-string": DEFAULT_PYTHON_MAJOR_MINOR_VERSION, "ci-image-build": "true", "prod-image-build": "true", - "needs-helm-tests": "true", - "run-tests": "true", + "run-helm-tests": "true", + "run-unit-tests": "true", "run-amazon-tests": "true", "docs-build": "true", "skip-prek-hooks": ALL_SKIPPED_COMMITS_IF_NO_UI, @@ -675,7 +675,7 @@ def assert_outputs_are_printed(expected_outputs: dict[str, str], stderr: str): } ] ), - "needs-mypy": "true", + "run-mypy": "true", "mypy-checks": "['mypy-providers']", }, id="Helm tests, providers (both upstream and downstream)," @@ -697,8 +697,8 @@ def assert_outputs_are_printed(expected_outputs: dict[str, str], stderr: str): "python-versions-list-as-string": DEFAULT_PYTHON_MAJOR_MINOR_VERSION, "ci-image-build": "true", "prod-image-build": "true", - "needs-helm-tests": "true", - "run-tests": "true", + "run-helm-tests": "true", + "run-unit-tests": "true", "run-amazon-tests": "true", "docs-build": "true", "skip-prek-hooks": ALL_SKIPPED_COMMITS_IF_NO_UI, @@ -730,7 +730,7 @@ def assert_outputs_are_printed(expected_outputs: dict[str, str], stderr: str): {"description": "http", "test_types": "Providers[http]"}, ] ), - "needs-mypy": "true", + "run-mypy": "true", "mypy-checks": "['mypy-providers']", }, id="Helm tests, http and all relevant providers, kubernetes tests and " @@ -752,8 +752,8 @@ def assert_outputs_are_printed(expected_outputs: dict[str, str], stderr: str): "python-versions-list-as-string": DEFAULT_PYTHON_MAJOR_MINOR_VERSION, "ci-image-build": "true", "prod-image-build": "true", - "needs-helm-tests": "true", - "run-tests": "true", + "run-helm-tests": "true", + "run-unit-tests": "true", "run-amazon-tests": "false", "docs-build": "true", "skip-prek-hooks": ALL_SKIPPED_COMMITS_IF_NO_UI, @@ -785,8 +785,8 @@ def assert_outputs_are_printed(expected_outputs: dict[str, str], stderr: str): "python-versions-list-as-string": DEFAULT_PYTHON_MAJOR_MINOR_VERSION, "ci-image-build": "true", "prod-image-build": "true", - "needs-helm-tests": "true", - "run-tests": "true", + "run-helm-tests": "true", + "run-unit-tests": "true", "docs-build": "true", "skip-prek-hooks": ALL_SKIPPED_COMMITS_IF_NO_PROVIDERS_AND_UI, "run-amazon-tests": "false", @@ -796,7 +796,7 @@ def assert_outputs_are_printed(expected_outputs: dict[str, str], stderr: str): [{"description": "Always", "test_types": "Always"}] ), "providers-test-types-list-as-strings-in-json": None, - "needs-mypy": "false", + "run-mypy": "false", "mypy-checks": "[]", }, id="Docs should run even if unimportant files were added and prod image " @@ -814,8 +814,8 @@ def assert_outputs_are_printed(expected_outputs: dict[str, str], stderr: str): "python-versions-list-as-string": ALL_PYTHON_VERSIONS_AS_STRING, "ci-image-build": "true", "prod-image-build": "true", - "needs-helm-tests": "true", - "run-tests": "true", + "run-helm-tests": "true", + "run-unit-tests": "true", "run-amazon-tests": "true", "docs-build": "true", "full-tests-needed": "true", @@ -823,7 +823,7 @@ def assert_outputs_are_printed(expected_outputs: dict[str, str], stderr: str): "upgrade-to-newer-dependencies": "true", "core-test-types-list-as-strings-in-json": ALL_CI_SELECTIVE_TEST_TYPES_AS_JSON, "providers-test-types-list-as-strings-in-json": ALL_PROVIDERS_SELECTIVE_TEST_TYPES_AS_JSON, - "needs-mypy": "true", + "run-mypy": "true", "mypy-checks": ALL_MYPY_CHECKS, }, id="Everything should run and upgrading to newer requirements as dependencies change", @@ -841,8 +841,8 @@ def assert_outputs_are_printed(expected_outputs: dict[str, str], stderr: str): "python-versions-list-as-string": DEFAULT_PYTHON_MAJOR_MINOR_VERSION, "ci-image-build": "true", "prod-image-build": "false", - "needs-helm-tests": "false", - "run-tests": "true", + "run-helm-tests": "false", + "run-unit-tests": "true", "docs-build": "true", # no python files changed so flynt should not run "skip-prek-hooks": "flynt," + ALL_SKIPPED_COMMITS_IF_NO_UI_AND_HELM_TESTS, @@ -863,7 +863,7 @@ def assert_outputs_are_printed(expected_outputs: dict[str, str], stderr: str): } ] ), - "needs-mypy": "true", + "run-mypy": "true", "mypy-checks": "['mypy-providers']", }, id="Providers tests run including amazon tests if only amazon provider.yaml files changed", @@ -878,8 +878,8 @@ def assert_outputs_are_printed(expected_outputs: dict[str, str], stderr: str): "python-versions-list-as-string": DEFAULT_PYTHON_MAJOR_MINOR_VERSION, "ci-image-build": "true", "prod-image-build": "false", - "needs-helm-tests": "false", - "run-tests": "true", + "run-helm-tests": "false", + "run-unit-tests": "true", "run-amazon-tests": "false", "docs-build": "true", "skip-prek-hooks": ALL_SKIPPED_COMMITS_IF_NO_UI_AND_HELM_TESTS, @@ -891,7 +891,7 @@ def assert_outputs_are_printed(expected_outputs: dict[str, str], stderr: str): "providers-test-types-list-as-strings-in-json": json.dumps( [{"description": "airbyte", "test_types": "Providers[airbyte]"}] ), - "needs-mypy": "true", + "run-mypy": "true", "mypy-checks": "['mypy-providers']", }, id="Providers tests run without amazon tests if no amazon file changed", @@ -908,8 +908,8 @@ def assert_outputs_are_printed(expected_outputs: dict[str, str], stderr: str): "python-versions-list-as-string": DEFAULT_PYTHON_MAJOR_MINOR_VERSION, "ci-image-build": "true", "prod-image-build": "false", - "needs-helm-tests": "false", - "run-tests": "true", + "run-helm-tests": "false", + "run-unit-tests": "true", "run-amazon-tests": "true", "docs-build": "true", "skip-prek-hooks": ALL_SKIPPED_COMMITS_IF_NO_UI_AND_HELM_TESTS, @@ -929,7 +929,7 @@ def assert_outputs_are_printed(expected_outputs: dict[str, str], stderr: str): } ] ), - "needs-mypy": "true", + "run-mypy": "true", "mypy-checks": "['mypy-providers']", }, id="Providers tests run including amazon tests if amazon provider files changed", @@ -948,8 +948,8 @@ def assert_outputs_are_printed(expected_outputs: dict[str, str], stderr: str): "python-versions-list-as-string": DEFAULT_PYTHON_MAJOR_MINOR_VERSION, "ci-image-build": "true", "prod-image-build": "false", - "needs-helm-tests": "false", - "run-tests": "true", + "run-helm-tests": "false", + "run-unit-tests": "true", "run-amazon-tests": "false", "docs-build": "true", "run-kubernetes-tests": "false", @@ -966,7 +966,7 @@ def assert_outputs_are_printed(expected_outputs: dict[str, str], stderr: str): } ] ), - "needs-mypy": "true", + "run-mypy": "true", "mypy-checks": "['mypy-airflow-core', 'mypy-providers']", }, id="Only Always and common providers tests should run when only common.io and tests/always changed", @@ -980,8 +980,8 @@ def assert_outputs_are_printed(expected_outputs: dict[str, str], stderr: str): "python-versions-list-as-string": DEFAULT_PYTHON_MAJOR_MINOR_VERSION, "ci-image-build": "true", "prod-image-build": "true", - "needs-helm-tests": "true", - "run-tests": "true", + "run-helm-tests": "true", + "run-unit-tests": "true", "run-amazon-tests": "true", "docs-build": "true", "run-kubernetes-tests": "true", @@ -989,7 +989,7 @@ def assert_outputs_are_printed(expected_outputs: dict[str, str], stderr: str): "upgrade-to-newer-dependencies": "false", "core-test-types-list-as-strings-in-json": ALL_CI_SELECTIVE_TEST_TYPES_AS_JSON, "providers-test-types-list-as-strings-in-json": ALL_PROVIDERS_SELECTIVE_TEST_TYPES_AS_JSON, - "needs-mypy": "true", + "run-mypy": "true", "mypy-checks": ALL_MYPY_CHECKS, }, id="All tests to run when standard operator changed", @@ -1005,8 +1005,8 @@ def assert_outputs_are_printed(expected_outputs: dict[str, str], stderr: str): "python-versions-list-as-string": DEFAULT_PYTHON_MAJOR_MINOR_VERSION, "ci-image-build": "true", "prod-image-build": "true", - "needs-helm-tests": "true", - "run-tests": "true", + "run-helm-tests": "true", + "run-unit-tests": "true", "run-amazon-tests": "true", "docs-build": "true", "full-tests-needed": "true", @@ -1014,7 +1014,7 @@ def assert_outputs_are_printed(expected_outputs: dict[str, str], stderr: str): "upgrade-to-newer-dependencies": "false", "core-test-types-list-as-strings-in-json": ALL_CI_SELECTIVE_TEST_TYPES_AS_JSON, "providers-test-types-list-as-strings-in-json": ALL_PROVIDERS_SELECTIVE_TEST_TYPES_AS_JSON, - "needs-mypy": "true", + "run-mypy": "true", "mypy-checks": ALL_MYPY_CHECKS, }, id="All tests should be run when tests/utils/ change", @@ -1031,8 +1031,8 @@ def assert_outputs_are_printed(expected_outputs: dict[str, str], stderr: str): "python-versions-list-as-string": DEFAULT_PYTHON_MAJOR_MINOR_VERSION, "ci-image-build": "true", "prod-image-build": "true", - "needs-helm-tests": "true", - "run-tests": "true", + "run-helm-tests": "true", + "run-unit-tests": "true", "run-amazon-tests": "true", "docs-build": "true", "full-tests-needed": "true", @@ -1043,7 +1043,7 @@ def assert_outputs_are_printed(expected_outputs: dict[str, str], stderr: str): "testable-core-integrations": "['kerberos', 'redis']", "testable-providers-integrations": "['celery', 'cassandra', 'drill', 'tinkerpop', 'kafka', " "'mongo', 'pinot', 'qdrant', 'redis', 'trino', 'ydb']", - "needs-mypy": "true", + "run-mypy": "true", "mypy-checks": ALL_MYPY_CHECKS, }, id="All tests should be run when devel-common/ change", @@ -1060,17 +1060,18 @@ def assert_outputs_are_printed(expected_outputs: dict[str, str], stderr: str): "python-versions-list-as-string": DEFAULT_PYTHON_MAJOR_MINOR_VERSION, "ci-image-build": "true", "prod-image-build": "false", - "needs-helm-tests": "false", - "run-tests": "false", - "run-amazon-tests": "false", "docs-build": "false", "full-tests-needed": "false", "skip-prek-hooks": ALL_SKIPPED_COMMITS_IF_NO_CODE_PROVIDERS_AND_HELM_TESTS, "upgrade-to-newer-dependencies": "false", - "needs-mypy": "false", + "run-mypy": "false", "mypy-checks": "[]", + "run-helm-tests": "false", "run-ui-tests": "true", - "only-new-ui-files": "true", + "run-unit-tests": "false", + "run-go-sdk-tests": "false", + "run-airflow-ctl-tests": "false", + "run-amazon-tests": "false", }, id="Run only ui tests for PR with new UI only changes.", ) @@ -1084,8 +1085,8 @@ def assert_outputs_are_printed(expected_outputs: dict[str, str], stderr: str): "python-versions": f"['{DEFAULT_PYTHON_MAJOR_MINOR_VERSION}']", "python-versions-list-as-string": DEFAULT_PYTHON_MAJOR_MINOR_VERSION, "ci-image-build": "true", - "needs-helm-tests": "false", - "run-tests": "false", + "run-helm-tests": "false", + "run-unit-tests": "false", "run-amazon-tests": "false", "docs-build": "true", "skip-prek-hooks": ALL_SKIPPED_COMMITS_ON_NO_CI_IMAGE, @@ -1093,7 +1094,7 @@ def assert_outputs_are_printed(expected_outputs: dict[str, str], stderr: str): "core-test-types-list-as-strings-in-json": None, "providers-test-types-list-as-strings-in-json": None, "individual-providers-test-types-list-as-strings-in-json": None, - "needs-mypy": "false", + "run-mypy": "false", "mypy-checks": "[]", }, id="Run docs-build for RELEASE_NOTES.rst", @@ -1107,8 +1108,8 @@ def assert_outputs_are_printed(expected_outputs: dict[str, str], stderr: str): "python-versions": f"['{DEFAULT_PYTHON_MAJOR_MINOR_VERSION}']", "python-versions-list-as-string": DEFAULT_PYTHON_MAJOR_MINOR_VERSION, "ci-image-build": "true", - "needs-helm-tests": "true", - "run-tests": "true", + "run-helm-tests": "true", + "run-unit-tests": "true", "run-amazon-tests": "false", "docs-build": "true", "skip-prek-hooks": "check-provider-yaml-valid,flynt,identity,mypy-airflow-core,mypy-airflow-ctl,mypy-dev,mypy-devel-common,mypy-providers,mypy-task-sdk,ts-compile-lint-simple-auth-manager-ui,ts-compile-lint-ui", @@ -1116,7 +1117,7 @@ def assert_outputs_are_printed(expected_outputs: dict[str, str], stderr: str): "core-test-types-list-as-strings-in-json": None, "providers-test-types-list-as-strings-in-json": None, "individual-providers-test-types-list-as-strings-in-json": None, - "needs-mypy": "false", + "run-mypy": "false", "mypy-checks": "[]", }, id="Run docs-build for chart/RELEASE_NOTES.rst", @@ -1130,8 +1131,8 @@ def assert_outputs_are_printed(expected_outputs: dict[str, str], stderr: str): "python-versions": f"['{DEFAULT_PYTHON_MAJOR_MINOR_VERSION}']", "python-versions-list-as-string": DEFAULT_PYTHON_MAJOR_MINOR_VERSION, "ci-image-build": "true", - "needs-helm-tests": "false", - "run-tests": "false", + "run-helm-tests": "false", + "run-unit-tests": "false", "run-amazon-tests": "false", "docs-build": "true", "skip-prek-hooks": ALL_SKIPPED_COMMITS_ON_NO_CI_IMAGE, @@ -1139,7 +1140,7 @@ def assert_outputs_are_printed(expected_outputs: dict[str, str], stderr: str): "core-test-types-list-as-strings-in-json": None, "providers-test-types-list-as-strings-in-json": None, "individual-providers-test-types-list-as-strings-in-json": None, - "needs-mypy": "false", + "run-mypy": "false", "mypy-checks": "[]", }, id="Run docs-build for SECURITY.md", @@ -1153,7 +1154,7 @@ def assert_outputs_are_printed(expected_outputs: dict[str, str], stderr: str): pytest.param( ("devel-common/pyproject.toml",), { - "needs-mypy": "true", + "run-mypy": "true", "mypy-checks": ALL_MYPY_CHECKS, }, id="All mypy checks should run when devel-common/pyproject.toml changes", @@ -1317,7 +1318,7 @@ def test_full_test_needed_when_scripts_changes(files: tuple[str, ...], expected_ "kubernetes-combos-list-as-string": f"{DEFAULT_PYTHON_MAJOR_MINOR_VERSION}-{DEFAULT_KUBERNETES_VERSION}", "ci-image-build": "true", "prod-image-build": "true", - "run-tests": "true", + "run-unit-tests": "true", "skip-providers-tests": "false", "docs-build": "true", "docs-list-as-string": ALL_DOCS_SELECTED_FOR_BUILD, @@ -1326,7 +1327,7 @@ def test_full_test_needed_when_scripts_changes(files: tuple[str, ...], expected_ "upgrade-to-newer-dependencies": "false", "core-test-types-list-as-strings-in-json": ALL_CI_SELECTIVE_TEST_TYPES_AS_JSON, "providers-test-types-list-as-strings-in-json": ALL_PROVIDERS_SELECTIVE_TEST_TYPES_AS_JSON, - "needs-mypy": "true", + "run-mypy": "true", "mypy-checks": ALL_MYPY_CHECKS, }, id="Everything should run including all providers when git provider is changed" @@ -1352,7 +1353,7 @@ def test_full_test_needed_when_scripts_changes(files: tuple[str, ...], expected_ "kubernetes-combos-list-as-string": ZIP_PYTHON_AND_KUBERNETES_VERSIONS_AS_STRING, "ci-image-build": "true", "prod-image-build": "true", - "run-tests": "true", + "run-unit-tests": "true", "skip-providers-tests": "false", "docs-build": "true", "docs-list-as-string": ALL_DOCS_SELECTED_FOR_BUILD, @@ -1361,7 +1362,7 @@ def test_full_test_needed_when_scripts_changes(files: tuple[str, ...], expected_ "upgrade-to-newer-dependencies": "false", "core-test-types-list-as-strings-in-json": ALL_CI_SELECTIVE_TEST_TYPES_AS_JSON, "providers-test-types-list-as-strings-in-json": ALL_PROVIDERS_SELECTIVE_TEST_TYPES_AS_JSON, - "needs-mypy": "true", + "run-mypy": "true", "mypy-checks": ALL_MYPY_CHECKS, }, id="Everything should run including all providers when full tests are needed, " @@ -1387,7 +1388,7 @@ def test_full_test_needed_when_scripts_changes(files: tuple[str, ...], expected_ "kubernetes-combos-list-as-string": f"{DEFAULT_PYTHON_MAJOR_MINOR_VERSION}-{DEFAULT_KUBERNETES_VERSION}", "ci-image-build": "true", "prod-image-build": "true", - "run-tests": "true", + "run-unit-tests": "true", "skip-providers-tests": "false", "docs-build": "true", "docs-list-as-string": ALL_DOCS_SELECTED_FOR_BUILD, @@ -1396,7 +1397,7 @@ def test_full_test_needed_when_scripts_changes(files: tuple[str, ...], expected_ "upgrade-to-newer-dependencies": "false", "core-test-types-list-as-strings-in-json": ALL_CI_SELECTIVE_TEST_TYPES_AS_JSON, "providers-test-types-list-as-strings-in-json": ALL_PROVIDERS_SELECTIVE_TEST_TYPES_AS_JSON, - "needs-mypy": "true", + "run-mypy": "true", "mypy-checks": ALL_MYPY_CHECKS, }, id="Everything should run including all providers when full tests are needed " @@ -1422,7 +1423,7 @@ def test_full_test_needed_when_scripts_changes(files: tuple[str, ...], expected_ "kubernetes-combos-list-as-string": f"{DEFAULT_PYTHON_MAJOR_MINOR_VERSION}-{DEFAULT_KUBERNETES_VERSION}", "ci-image-build": "true", "prod-image-build": "true", - "run-tests": "true", + "run-unit-tests": "true", "skip-providers-tests": "false", "docs-build": "true", "docs-list-as-string": ALL_DOCS_SELECTED_FOR_BUILD, @@ -1431,7 +1432,7 @@ def test_full_test_needed_when_scripts_changes(files: tuple[str, ...], expected_ "upgrade-to-newer-dependencies": "false", "core-test-types-list-as-strings-in-json": ALL_CI_SELECTIVE_TEST_TYPES_AS_JSON, "providers-test-types-list-as-strings-in-json": ALL_PROVIDERS_SELECTIVE_TEST_TYPES_AS_JSON, - "needs-mypy": "true", + "run-mypy": "true", "mypy-checks": ALL_MYPY_CHECKS, }, id="Everything should run including all providers when full tests are needed " @@ -1458,7 +1459,7 @@ def test_full_test_needed_when_scripts_changes(files: tuple[str, ...], expected_ "kubernetes-combos-list-as-string": f"{ALLOWED_PYTHON_MAJOR_MINOR_VERSIONS[-1]}-{ALLOWED_KUBERNETES_VERSIONS[-1]}", "ci-image-build": "true", "prod-image-build": "true", - "run-tests": "true", + "run-unit-tests": "true", "skip-providers-tests": "false", "docs-build": "true", "docs-list-as-string": ALL_DOCS_SELECTED_FOR_BUILD, @@ -1467,7 +1468,7 @@ def test_full_test_needed_when_scripts_changes(files: tuple[str, ...], expected_ "upgrade-to-newer-dependencies": "false", "core-test-types-list-as-strings-in-json": ALL_CI_SELECTIVE_TEST_TYPES_AS_JSON, "providers-test-types-list-as-strings-in-json": ALL_PROVIDERS_SELECTIVE_TEST_TYPES_AS_JSON, - "needs-mypy": "true", + "run-mypy": "true", "mypy-checks": ALL_MYPY_CHECKS, }, id="Everything should run including all providers when full tests are needed " @@ -1494,7 +1495,7 @@ def test_full_test_needed_when_scripts_changes(files: tuple[str, ...], expected_ "kubernetes-combos-list-as-string": f"{DEFAULT_PYTHON_MAJOR_MINOR_VERSION}-{DEFAULT_KUBERNETES_VERSION}", "ci-image-build": "true", "prod-image-build": "true", - "run-tests": "true", + "run-unit-tests": "true", "skip-providers-tests": "false", "docs-build": "true", "docs-list-as-string": ALL_DOCS_SELECTED_FOR_BUILD, @@ -1503,7 +1504,7 @@ def test_full_test_needed_when_scripts_changes(files: tuple[str, ...], expected_ "upgrade-to-newer-dependencies": "false", "core-test-types-list-as-strings-in-json": ALL_CI_SELECTIVE_TEST_TYPES_AS_JSON, "providers-test-types-list-as-strings-in-json": ALL_PROVIDERS_SELECTIVE_TEST_TYPES_AS_JSON, - "needs-mypy": "true", + "run-mypy": "true", "mypy-checks": ALL_MYPY_CHECKS, }, id="Everything should run including full providers when full " @@ -1527,7 +1528,7 @@ def test_full_test_needed_when_scripts_changes(files: tuple[str, ...], expected_ "kubernetes-combos-list-as-string": f"{DEFAULT_PYTHON_MAJOR_MINOR_VERSION}-{DEFAULT_KUBERNETES_VERSION}", "ci-image-build": "true", "prod-image-build": "true", - "run-tests": "true", + "run-unit-tests": "true", "skip-providers-tests": "false", "docs-build": "true", "docs-list-as-string": ALL_DOCS_SELECTED_FOR_BUILD, @@ -1537,7 +1538,7 @@ def test_full_test_needed_when_scripts_changes(files: tuple[str, ...], expected_ "core-test-types-list-as-strings-in-json": ALL_CI_SELECTIVE_TEST_TYPES_AS_JSON, "providers-test-types-list-as-strings-in-json": ALL_PROVIDERS_SELECTIVE_TEST_TYPES_AS_JSON, "individual-providers-test-types-list-as-strings-in-json": LIST_OF_ALL_PROVIDER_TESTS_AS_JSON, - "needs-mypy": "true", + "run-mypy": "true", "mypy-checks": ALL_MYPY_CHECKS, }, id="Everything should run including full providers when " @@ -1560,7 +1561,7 @@ def test_full_test_needed_when_scripts_changes(files: tuple[str, ...], expected_ "all-versions": "false", "ci-image-build": "true", "prod-image-build": "true", - "run-tests": "true", + "run-unit-tests": "true", "skip-providers-tests": "true", "docs-build": "true", "docs-list-as-string": "apache-airflow docker-stack", @@ -1568,7 +1569,7 @@ def test_full_test_needed_when_scripts_changes(files: tuple[str, ...], expected_ "skip-prek-hooks": All_SKIPPED_COMMITS_IF_NON_MAIN_BRANCH, "upgrade-to-newer-dependencies": "false", "core-test-types-list-as-strings-in-json": ALL_CI_SELECTIVE_TEST_TYPES_AS_JSON, - "needs-mypy": "true", + "run-mypy": "true", "mypy-checks": ALL_MYPY_CHECKS_EXCEPT_PROVIDERS, }, id="Everything should run except Providers and lint prek " @@ -1603,15 +1604,15 @@ def test_expected_output_full_tests_needed( "all-python-versions": f"['{DEFAULT_PYTHON_MAJOR_MINOR_VERSION}']", "all-python-versions-list-as-string": DEFAULT_PYTHON_MAJOR_MINOR_VERSION, "ci-image-build": "false", - "needs-helm-tests": "false", - "run-tests": "false", + "run-helm-tests": "false", + "run-unit-tests": "false", "skip-providers-tests": "true", "docs-build": "false", "docs-list-as-string": None, "full-tests-needed": "false", "upgrade-to-newer-dependencies": "false", "core-test-types-list-as-strings-in-json": None, - "needs-mypy": "false", + "run-mypy": "false", "mypy-checks": "[]", }, id="Nothing should run if only non-important files changed", @@ -1624,10 +1625,10 @@ def test_expected_output_full_tests_needed( { "all-python-versions": f"['{DEFAULT_PYTHON_MAJOR_MINOR_VERSION}']", "all-python-versions-list-as-string": DEFAULT_PYTHON_MAJOR_MINOR_VERSION, - "needs-helm-tests": "false", + "run-helm-tests": "false", "ci-image-build": "true", "prod-image-build": "true", - "run-tests": "true", + "run-unit-tests": "true", "skip-providers-tests": "true", "docs-build": "true", "docs-list-as-string": "apache-airflow docker-stack", @@ -1637,7 +1638,7 @@ def test_expected_output_full_tests_needed( "core-test-types-list-as-strings-in-json": json.dumps( [{"description": "Always", "test_types": "Always"}] ), - "needs-mypy": "false", + "run-mypy": "false", "mypy-checks": "[]", }, id="No Helm tests, No providers no lint charts, should run if " @@ -1654,8 +1655,8 @@ def test_expected_output_full_tests_needed( "all-python-versions-list-as-string": DEFAULT_PYTHON_MAJOR_MINOR_VERSION, "ci-image-build": "true", "prod-image-build": "true", - "needs-helm-tests": "false", - "run-tests": "true", + "run-helm-tests": "false", + "run-unit-tests": "true", "skip-providers-tests": "true", "docs-build": "true", "docs-list-as-string": "apache-airflow docker-stack", @@ -1665,7 +1666,7 @@ def test_expected_output_full_tests_needed( "core-test-types-list-as-strings-in-json": json.dumps( [{"description": "Always...CLI", "test_types": "Always CLI"}] ), - "needs-mypy": "true", + "run-mypy": "true", "mypy-checks": "['mypy-airflow-core']", }, id="Only CLI tests and Kubernetes tests should run if cli/chart files changed in non-main branch", @@ -1680,8 +1681,8 @@ def test_expected_output_full_tests_needed( "all-python-versions-list-as-string": DEFAULT_PYTHON_MAJOR_MINOR_VERSION, "ci-image-build": "true", "prod-image-build": "false", - "needs-helm-tests": "false", - "run-tests": "true", + "run-helm-tests": "false", + "run-unit-tests": "true", "skip-providers-tests": "true", "docs-build": "true", "docs-list-as-string": "apache-airflow docker-stack", @@ -1689,7 +1690,7 @@ def test_expected_output_full_tests_needed( "run-kubernetes-tests": "false", "upgrade-to-newer-dependencies": "false", "core-test-types-list-as-strings-in-json": ALL_CI_SELECTIVE_TEST_TYPES_AS_JSON, - "needs-mypy": "true", + "run-mypy": "true", "mypy-checks": "['mypy-airflow-core']", }, id="All tests except Providers and helm lint prek " @@ -1724,14 +1725,14 @@ def test_expected_output_pull_request_v2_7( "all-python-versions-list-as-string": ALL_PYTHON_VERSIONS_AS_STRING, "ci-image-build": "true", "prod-image-build": "true", - "needs-helm-tests": "true", - "run-tests": "true", + "run-helm-tests": "true", + "run-unit-tests": "true", "docs-build": "true", "docs-list-as-string": ALL_DOCS_SELECTED_FOR_BUILD, "skip-prek-hooks": ALL_SKIPPED_COMMITS_BY_DEFAULT_ON_ALL_TESTS_NEEDED, "upgrade-to-newer-dependencies": "true", "core-test-types-list-as-strings-in-json": ALL_CI_SELECTIVE_TEST_TYPES_AS_JSON, - "needs-mypy": "true", + "run-mypy": "true", "mypy-checks": ALL_MYPY_CHECKS, }, id="All tests run on push even if unimportant file changed", @@ -1745,14 +1746,14 @@ def test_expected_output_pull_request_v2_7( "all-python-versions-list-as-string": ALL_PYTHON_VERSIONS_AS_STRING, "ci-image-build": "true", "prod-image-build": "true", - "needs-helm-tests": "false", - "run-tests": "true", + "run-helm-tests": "false", + "run-unit-tests": "true", "docs-build": "true", "skip-prek-hooks": All_SKIPPED_COMMITS_IF_NON_MAIN_BRANCH, "docs-list-as-string": "apache-airflow docker-stack", "upgrade-to-newer-dependencies": "true", "core-test-types-list-as-strings-in-json": ALL_CI_SELECTIVE_TEST_TYPES_AS_JSON, - "needs-mypy": "true", + "run-mypy": "true", "mypy-checks": ALL_MYPY_CHECKS_EXCEPT_PROVIDERS, }, id="All tests except Providers and Helm run on push" @@ -1768,14 +1769,14 @@ def test_expected_output_pull_request_v2_7( "all-python-versions-list-as-string": ALL_PYTHON_VERSIONS_AS_STRING, "ci-image-build": "true", "prod-image-build": "true", - "needs-helm-tests": "true", - "run-tests": "true", + "run-helm-tests": "true", + "run-unit-tests": "true", "docs-build": "true", "skip-prek-hooks": ALL_SKIPPED_COMMITS_BY_DEFAULT_ON_ALL_TESTS_NEEDED, "docs-list-as-string": ALL_DOCS_SELECTED_FOR_BUILD, "upgrade-to-newer-dependencies": "true", "core-test-types-list-as-strings-in-json": ALL_CI_SELECTIVE_TEST_TYPES_AS_JSON, - "needs-mypy": "true", + "run-mypy": "true", "mypy-checks": ALL_MYPY_CHECKS, }, id="All tests run on push if core file changed", @@ -1808,15 +1809,15 @@ def test_expected_output_push( "all-python-versions": f"['{DEFAULT_PYTHON_MAJOR_MINOR_VERSION}']", "all-python-versions-list-as-string": DEFAULT_PYTHON_MAJOR_MINOR_VERSION, "ci-image-build": "false", - "needs-helm-tests": "false", - "run-tests": "false", + "run-helm-tests": "false", + "run-unit-tests": "false", "skip-providers-tests": "true", "docs-build": "false", "docs-list-as-string": None, "upgrade-to-newer-dependencies": "false", "skip-prek-hooks": ALL_SKIPPED_COMMITS_IF_NOT_IMPORTANT_FILES_CHANGED, "core-test-types-list-as-strings-in-json": None, - "needs-mypy": "false", + "run-mypy": "false", "mypy-checks": "[]", }, id="Nothing should run if only non-important files changed", @@ -1829,8 +1830,8 @@ def test_expected_output_push( "all-python-versions-list-as-string": DEFAULT_PYTHON_MAJOR_MINOR_VERSION, "ci-image-build": "true", "prod-image-build": "false", - "needs-helm-tests": "false", - "run-tests": "true", + "run-helm-tests": "false", + "run-unit-tests": "true", "skip-providers-tests": "true", "docs-build": "true", "docs-list-as-string": ALL_DOCS_SELECTED_FOR_BUILD, @@ -1839,7 +1840,7 @@ def test_expected_output_push( "core-test-types-list-as-strings-in-json": json.dumps( [{"description": "Always", "test_types": "Always"}] ), - "needs-mypy": "true", + "run-mypy": "true", "mypy-checks": "['mypy-airflow-core']", }, id="Only Always and docs build should run if only system tests changed", @@ -1859,8 +1860,8 @@ def test_expected_output_push( "all-python-versions-list-as-string": DEFAULT_PYTHON_MAJOR_MINOR_VERSION, "ci-image-build": "true", "prod-image-build": "true", - "needs-helm-tests": "true", - "run-tests": "true", + "run-helm-tests": "true", + "run-unit-tests": "true", "skip-providers-tests": "false", "docs-build": "true", "docs-list-as-string": "apache-airflow helm-chart amazon apache.beam apache.cassandra " @@ -1885,7 +1886,7 @@ def test_expected_output_push( } ] ), - "needs-mypy": "true", + "run-mypy": "true", "mypy-checks": "['mypy-airflow-core', 'mypy-providers']", }, id="CLI tests and Google-related provider tests should run if cli/chart files changed but " @@ -1898,8 +1899,8 @@ def test_expected_output_push( "all-python-versions-list-as-string": DEFAULT_PYTHON_MAJOR_MINOR_VERSION, "ci-image-build": "true", "prod-image-build": "false", - "needs-helm-tests": "false", - "run-tests": "true", + "run-helm-tests": "false", + "run-unit-tests": "true", "skip-providers-tests": "true", "docs-build": "true", "docs-list-as-string": "apache-airflow", @@ -1907,7 +1908,7 @@ def test_expected_output_push( "run-kubernetes-tests": "false", "upgrade-to-newer-dependencies": "false", "core-test-types-list-as-strings-in-json": ALL_CI_SELECTIVE_TEST_TYPES_AS_JSON, - "needs-mypy": "true", + "run-mypy": "true", "mypy-checks": "['mypy-airflow-core']", }, id="Tests for all airflow core types except providers should run if model file changed", @@ -1919,15 +1920,15 @@ def test_expected_output_push( "all-python-versions": f"['{DEFAULT_PYTHON_MAJOR_MINOR_VERSION}']", "all-python-versions-list-as-string": DEFAULT_PYTHON_MAJOR_MINOR_VERSION, "ci-image-build": "true", - "needs-helm-tests": "true", - "run-tests": "true", + "run-helm-tests": "true", + "run-unit-tests": "true", "skip-providers-tests": "false", "docs-build": "true", "docs-list-as-string": "", "upgrade-to-newer-dependencies": "false", "skip-prek-hooks": ALL_SKIPPED_COMMITS_BY_DEFAULT_ON_ALL_TESTS_NEEDED, "core-test-types-list-as-strings-in-json": ALL_CI_SELECTIVE_TEST_TYPES_AS_JSON, - "needs-mypy": "true", + "run-mypy": "true", "mypy-checks": ALL_MYPY_CHECKS, }, id="pre commit ts-compile-format-lint should not be ignored if openapi spec changed.", @@ -1947,8 +1948,8 @@ def test_expected_output_push( "all-python-versions-list-as-string": DEFAULT_PYTHON_MAJOR_MINOR_VERSION, "ci-image-build": "true", "prod-image-build": "false", - "needs-helm-tests": "false", - "run-tests": "true", + "run-helm-tests": "false", + "run-unit-tests": "true", "skip-providers-tests": "false", "docs-build": "true", "docs-list-as-string": "apache-airflow task-sdk amazon common.compat common.io common.sql " @@ -1968,7 +1969,7 @@ def test_expected_output_push( } ] ), - "needs-mypy": "false", + "run-mypy": "false", "mypy-checks": "[]", }, id="Trigger openlineage and related providers tests when Assets files changed", @@ -2013,15 +2014,15 @@ def test_no_commit_provided_trigger_full_build_for_any_event_type(github_event): "all-python-versions-list-as-string": ALL_PYTHON_VERSIONS_AS_STRING, "ci-image-build": "true", "prod-image-build": "true", - "needs-helm-tests": "true", - "run-tests": "true", + "run-helm-tests": "true", + "run-unit-tests": "true", "docs-build": "true", "skip-prek-hooks": ALL_SKIPPED_COMMITS_BY_DEFAULT_ON_ALL_TESTS_NEEDED, "upgrade-to-newer-dependencies": ( "true" if github_event in [GithubEvents.PUSH, GithubEvents.SCHEDULE] else "false" ), "core-test-types-list-as-strings-in-json": ALL_CI_SELECTIVE_TEST_TYPES_AS_JSON, - "needs-mypy": "true", + "run-mypy": "true", "mypy-checks": ALL_MYPY_CHECKS, }, str(stderr), @@ -2052,15 +2053,15 @@ def test_files_provided_trigger_full_build_for_any_event_type(github_event): "all-python-versions-list-as-string": ALL_PYTHON_VERSIONS_AS_STRING, "ci-image-build": "true", "prod-image-build": "true", - "needs-helm-tests": "true", - "run-tests": "true", + "run-helm-tests": "true", + "run-unit-tests": "true", "docs-build": "true", "skip-prek-hooks": ALL_SKIPPED_COMMITS_BY_DEFAULT_ON_ALL_TESTS_NEEDED, "upgrade-to-newer-dependencies": ( "true" if github_event in [GithubEvents.PUSH, GithubEvents.SCHEDULE] else "false" ), "core-test-types-list-as-strings-in-json": ALL_CI_SELECTIVE_TEST_TYPES_AS_JSON, - "needs-mypy": "true", + "run-mypy": "true", "mypy-checks": ALL_MYPY_CHECKS, }, str(stderr), @@ -2236,7 +2237,7 @@ def test_docs_filter(files: tuple[str, ...], expected_outputs: dict[str, str]): { "ci-image-build": "true", "prod-image-build": "true", - "needs-helm-tests": "true", + "run-helm-tests": "true", }, id="Only helm test files changed", ) @@ -2261,7 +2262,7 @@ def test_helm_tests_trigger_ci_build(files: tuple[str, ...], expected_outputs: d { "ci-image-build": "true", "prod-image-build": "false", - "needs-helm-tests": "false", + "run-helm-tests": "false", }, id="Amazon provider.yaml", ), @@ -2270,7 +2271,7 @@ def test_helm_tests_trigger_ci_build(files: tuple[str, ...], expected_outputs: d { "ci-image-build": "true", "prod-image-build": "false", - "needs-helm-tests": "false", + "run-helm-tests": "false", }, id="Amazon pyproject.toml", ), @@ -2279,7 +2280,7 @@ def test_helm_tests_trigger_ci_build(files: tuple[str, ...], expected_outputs: d { "ci-image-build": "true", "prod-image-build": "true", - "needs-helm-tests": "false", + "run-helm-tests": "false", }, id="CNCF Kubernetes provider.yaml", ), @@ -2288,7 +2289,7 @@ def test_helm_tests_trigger_ci_build(files: tuple[str, ...], expected_outputs: d { "ci-image-build": "true", "prod-image-build": "true", - "needs-helm-tests": "false", + "run-helm-tests": "false", }, id="CNCF Kubernetes pyproject.toml", ), @@ -2374,7 +2375,7 @@ def test_provider_compatibility_checks(labels: tuple[str, ...], expected_outputs pytest.param( ("README.md",), { - "needs-mypy": "false", + "run-mypy": "false", "mypy-checks": "[]", }, "main", @@ -2384,7 +2385,7 @@ def test_provider_compatibility_checks(labels: tuple[str, ...], expected_outputs pytest.param( ("airflow-core/src/airflow/cli/file.py",), { - "needs-mypy": "true", + "run-mypy": "true", "mypy-checks": "['mypy-airflow-core']", }, "main", @@ -2394,7 +2395,7 @@ def test_provider_compatibility_checks(labels: tuple[str, ...], expected_outputs pytest.param( ("airflow-core/src/airflow/models/file.py",), { - "needs-mypy": "true", + "run-mypy": "true", "mypy-checks": "['mypy-airflow-core']", }, "main", @@ -2404,7 +2405,7 @@ def test_provider_compatibility_checks(labels: tuple[str, ...], expected_outputs pytest.param( ("task-sdk/src/airflow/sdk/a_file.py",), { - "needs-mypy": "true", + "run-mypy": "true", "mypy-checks": "['mypy-providers', 'mypy-task-sdk']", }, "main", @@ -2414,7 +2415,7 @@ def test_provider_compatibility_checks(labels: tuple[str, ...], expected_outputs pytest.param( ("dev/a_package/a_file.py",), { - "needs-mypy": "true", + "run-mypy": "true", "mypy-checks": ALL_MYPY_CHECKS, }, "main", @@ -2424,7 +2425,7 @@ def test_provider_compatibility_checks(labels: tuple[str, ...], expected_outputs pytest.param( ("readme.md",), { - "needs-mypy": "true", + "run-mypy": "true", "mypy-checks": ALL_MYPY_CHECKS, }, "main",