run_tests.yml

  1# Generated from xtask::workflows::run_tests
  2# Rebuild with `cargo xtask workflows`.
  3name: run_tests
  4env:
  5  CARGO_TERM_COLOR: always
  6  RUST_BACKTRACE: '1'
  7  CARGO_INCREMENTAL: '0'
  8on:
  9  pull_request:
 10    branches:
 11    - '**'
 12  push:
 13    branches:
 14    - main
 15    - v[0-9]+.[0-9]+.x
 16jobs:
 17  orchestrate:
 18    if: (github.repository_owner == 'zed-industries' || github.repository_owner == 'zed-extensions')
 19    runs-on: namespace-profile-2x4-ubuntu-2404
 20    steps:
 21    - name: steps::checkout_repo
 22      uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
 23      with:
 24        clean: false
 25        fetch-depth: ${{ github.ref == 'refs/heads/main' && 2 || 350 }}
 26    - id: filter
 27      name: filter
 28      run: |
 29        if [ -z "$GITHUB_BASE_REF" ]; then
 30          echo "Not in a PR context (i.e., push to main/stable/preview)"
 31          COMPARE_REV="$(git rev-parse HEAD~1)"
 32        else
 33          echo "In a PR context comparing to pull_request.base.ref"
 34          git fetch origin "$GITHUB_BASE_REF" --depth=350
 35          COMPARE_REV="$(git merge-base "origin/${GITHUB_BASE_REF}" HEAD)"
 36        fi
 37        CHANGED_FILES="$(git diff --name-only "$COMPARE_REV" ${{ github.sha }})"
 38
 39        check_pattern() {
 40          local output_name="$1"
 41          local pattern="$2"
 42          local grep_arg="$3"
 43
 44          echo "$CHANGED_FILES" | grep "$grep_arg" "$pattern" && \
 45            echo "${output_name}=true" >> "$GITHUB_OUTPUT" || \
 46            echo "${output_name}=false" >> "$GITHUB_OUTPUT"
 47        }
 48
 49        check_pattern "run_action_checks" '^\.github/(workflows/|actions/|actionlint.yml)|tooling/xtask|script/' -qP
 50        check_pattern "run_docs" '^(docs/|crates/.*\.rs)' -qP
 51        check_pattern "run_licenses" '^(Cargo.lock|script/.*licenses)' -qP
 52        check_pattern "run_nix" '^(nix/|flake\.|Cargo\.|rust-toolchain.toml|\.cargo/config.toml)' -qP
 53        check_pattern "run_tests" '^(docs/|script/update_top_ranking_issues/|\.github/(ISSUE_TEMPLATE|workflows/(?!run_tests)))' -qvP
 54      shell: bash -euxo pipefail {0}
 55    outputs:
 56      run_action_checks: ${{ steps.filter.outputs.run_action_checks }}
 57      run_docs: ${{ steps.filter.outputs.run_docs }}
 58      run_licenses: ${{ steps.filter.outputs.run_licenses }}
 59      run_nix: ${{ steps.filter.outputs.run_nix }}
 60      run_tests: ${{ steps.filter.outputs.run_tests }}
 61  check_style:
 62    if: (github.repository_owner == 'zed-industries' || github.repository_owner == 'zed-extensions')
 63    runs-on: namespace-profile-4x8-ubuntu-2204
 64    steps:
 65    - name: steps::checkout_repo
 66      uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
 67      with:
 68        clean: false
 69    - name: steps::cache_rust_dependencies_namespace
 70      uses: namespacelabs/nscloud-cache-action@v1
 71      with:
 72        cache: rust
 73    - name: steps::setup_pnpm
 74      uses: pnpm/action-setup@fe02b34f77f8bc703788d5817da081398fad5dd2
 75      with:
 76        version: '9'
 77    - name: ./script/prettier
 78      run: ./script/prettier
 79      shell: bash -euxo pipefail {0}
 80    - name: steps::cargo_fmt
 81      run: cargo fmt --all -- --check
 82      shell: bash -euxo pipefail {0}
 83    - name: ./script/check-todos
 84      run: ./script/check-todos
 85      shell: bash -euxo pipefail {0}
 86    - name: ./script/check-keymaps
 87      run: ./script/check-keymaps
 88      shell: bash -euxo pipefail {0}
 89    - name: run_tests::check_style::check_for_typos
 90      uses: crate-ci/typos@2d0ce569feab1f8752f1dde43cc2f2aa53236e06
 91      with:
 92        config: ./typos.toml
 93    timeout-minutes: 60
 94  run_tests_windows:
 95    needs:
 96    - orchestrate
 97    if: needs.orchestrate.outputs.run_tests == 'true'
 98    runs-on: self-32vcpu-windows-2022
 99    steps:
100    - name: steps::checkout_repo
101      uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
102      with:
103        clean: false
104    - name: steps::setup_cargo_config
105      run: |
106        New-Item -ItemType Directory -Path "./../.cargo" -Force
107        Copy-Item -Path "./.cargo/ci-config.toml" -Destination "./../.cargo/config.toml"
108      shell: pwsh
109    - name: steps::setup_node
110      uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020
111      with:
112        node-version: '20'
113    - id: clippy
114      name: steps::clippy
115      run: ./script/clippy.ps1
116      shell: pwsh
117    - name: steps::clear_target_dir_if_large
118      run: ./script/clear-target-dir-if-larger-than.ps1 250
119      shell: pwsh
120    - name: steps::cargo_nextest
121      run: cargo nextest run --workspace --no-fail-fast
122      shell: pwsh
123    - name: steps::cleanup_cargo_config
124      if: always()
125      run: |
126        Remove-Item -Recurse -Path "./../.cargo" -Force -ErrorAction SilentlyContinue
127      shell: pwsh
128    timeout-minutes: 60
129  run_tests_linux:
130    needs:
131    - orchestrate
132    if: needs.orchestrate.outputs.run_tests == 'true'
133    runs-on: namespace-profile-16x32-ubuntu-2204
134    steps:
135    - name: steps::checkout_repo
136      uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
137      with:
138        clean: false
139    - name: steps::setup_cargo_config
140      run: |
141        mkdir -p ./../.cargo
142        cp ./.cargo/ci-config.toml ./../.cargo/config.toml
143      shell: bash -euxo pipefail {0}
144    - name: steps::cache_rust_dependencies_namespace
145      uses: namespacelabs/nscloud-cache-action@v1
146      with:
147        cache: rust
148    - name: steps::setup_linux
149      run: ./script/linux
150      shell: bash -euxo pipefail {0}
151    - name: steps::install_mold
152      run: ./script/install-mold
153      shell: bash -euxo pipefail {0}
154    - name: steps::download_wasi_sdk
155      run: ./script/download-wasi-sdk
156      shell: bash -euxo pipefail {0}
157    - name: steps::setup_node
158      uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020
159      with:
160        node-version: '20'
161    - id: clippy
162      name: steps::clippy
163      run: ./script/clippy
164      shell: bash -euxo pipefail {0}
165    - name: steps::cargo_install_nextest
166      uses: taiki-e/install-action@nextest
167    - name: steps::clear_target_dir_if_large
168      run: ./script/clear-target-dir-if-larger-than 250
169      shell: bash -euxo pipefail {0}
170    - name: steps::cargo_nextest
171      run: cargo nextest run --workspace --no-fail-fast
172      shell: bash -euxo pipefail {0}
173    - name: steps::cleanup_cargo_config
174      if: always()
175      run: |
176        rm -rf ./../.cargo
177      shell: bash -euxo pipefail {0}
178    outputs:
179      clippy_failed: ${{ steps.clippy.outcome == 'failure' }}
180    timeout-minutes: 60
181  run_tests_mac:
182    needs:
183    - orchestrate
184    if: needs.orchestrate.outputs.run_tests == 'true'
185    runs-on: self-mini-macos
186    steps:
187    - name: steps::checkout_repo
188      uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
189      with:
190        clean: false
191    - name: steps::setup_cargo_config
192      run: |
193        mkdir -p ./../.cargo
194        cp ./.cargo/ci-config.toml ./../.cargo/config.toml
195      shell: bash -euxo pipefail {0}
196    - name: steps::setup_node
197      uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020
198      with:
199        node-version: '20'
200    - id: clippy
201      name: steps::clippy
202      run: ./script/clippy
203      shell: bash -euxo pipefail {0}
204    - name: steps::clear_target_dir_if_large
205      run: ./script/clear-target-dir-if-larger-than 300
206      shell: bash -euxo pipefail {0}
207    - name: steps::cargo_nextest
208      run: cargo nextest run --workspace --no-fail-fast
209      shell: bash -euxo pipefail {0}
210    - name: steps::cleanup_cargo_config
211      if: always()
212      run: |
213        rm -rf ./../.cargo
214      shell: bash -euxo pipefail {0}
215    timeout-minutes: 60
216  doctests:
217    needs:
218    - orchestrate
219    if: needs.orchestrate.outputs.run_tests == 'true'
220    runs-on: namespace-profile-16x32-ubuntu-2204
221    steps:
222    - name: steps::checkout_repo
223      uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
224      with:
225        clean: false
226    - name: steps::cache_rust_dependencies_namespace
227      uses: namespacelabs/nscloud-cache-action@v1
228      with:
229        cache: rust
230    - name: steps::setup_linux
231      run: ./script/linux
232      shell: bash -euxo pipefail {0}
233    - name: steps::install_mold
234      run: ./script/install-mold
235      shell: bash -euxo pipefail {0}
236    - name: steps::download_wasi_sdk
237      run: ./script/download-wasi-sdk
238      shell: bash -euxo pipefail {0}
239    - name: steps::setup_cargo_config
240      run: |
241        mkdir -p ./../.cargo
242        cp ./.cargo/ci-config.toml ./../.cargo/config.toml
243      shell: bash -euxo pipefail {0}
244    - id: run_doctests
245      name: run_tests::doctests::run_doctests
246      run: |
247        cargo test --workspace --doc --no-fail-fast
248      shell: bash -euxo pipefail {0}
249    - name: steps::cleanup_cargo_config
250      if: always()
251      run: |
252        rm -rf ./../.cargo
253      shell: bash -euxo pipefail {0}
254    timeout-minutes: 60
255  check_workspace_binaries:
256    needs:
257    - orchestrate
258    if: needs.orchestrate.outputs.run_tests == 'true'
259    runs-on: namespace-profile-8x16-ubuntu-2204
260    steps:
261    - name: steps::checkout_repo
262      uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
263      with:
264        clean: false
265    - name: steps::setup_cargo_config
266      run: |
267        mkdir -p ./../.cargo
268        cp ./.cargo/ci-config.toml ./../.cargo/config.toml
269      shell: bash -euxo pipefail {0}
270    - name: steps::cache_rust_dependencies_namespace
271      uses: namespacelabs/nscloud-cache-action@v1
272      with:
273        cache: rust
274    - name: steps::setup_linux
275      run: ./script/linux
276      shell: bash -euxo pipefail {0}
277    - name: steps::install_mold
278      run: ./script/install-mold
279      shell: bash -euxo pipefail {0}
280    - name: steps::download_wasi_sdk
281      run: ./script/download-wasi-sdk
282      shell: bash -euxo pipefail {0}
283    - name: cargo build -p collab
284      run: cargo build -p collab
285      shell: bash -euxo pipefail {0}
286    - name: cargo build --workspace --bins --examples
287      run: cargo build --workspace --bins --examples
288      shell: bash -euxo pipefail {0}
289    - name: steps::cleanup_cargo_config
290      if: always()
291      run: |
292        rm -rf ./../.cargo
293      shell: bash -euxo pipefail {0}
294    timeout-minutes: 60
295  check_dependencies:
296    needs:
297    - orchestrate
298    if: needs.orchestrate.outputs.run_tests == 'true'
299    runs-on: namespace-profile-2x4-ubuntu-2404
300    steps:
301    - name: steps::checkout_repo
302      uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
303      with:
304        clean: false
305    - name: steps::cache_rust_dependencies_namespace
306      uses: namespacelabs/nscloud-cache-action@v1
307      with:
308        cache: rust
309    - name: run_tests::check_dependencies::install_cargo_machete
310      uses: clechasseur/rs-cargo@8435b10f6e71c2e3d4d3b7573003a8ce4bfc6386
311      with:
312        command: install
313        args: cargo-machete@0.7.0
314    - name: run_tests::check_dependencies::run_cargo_machete
315      uses: clechasseur/rs-cargo@8435b10f6e71c2e3d4d3b7573003a8ce4bfc6386
316      with:
317        command: machete
318    - name: run_tests::check_dependencies::check_cargo_lock
319      run: cargo update --locked --workspace
320      shell: bash -euxo pipefail {0}
321    - name: run_tests::check_dependencies::check_vulnerable_dependencies
322      if: github.event_name == 'pull_request'
323      uses: actions/dependency-review-action@67d4f4bd7a9b17a0db54d2a7519187c65e339de8
324      with:
325        license-check: false
326    timeout-minutes: 60
327  check_docs:
328    needs:
329    - orchestrate
330    if: needs.orchestrate.outputs.run_docs == 'true'
331    runs-on: namespace-profile-8x16-ubuntu-2204
332    steps:
333    - name: steps::checkout_repo
334      uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
335      with:
336        clean: false
337    - name: steps::setup_cargo_config
338      run: |
339        mkdir -p ./../.cargo
340        cp ./.cargo/ci-config.toml ./../.cargo/config.toml
341      shell: bash -euxo pipefail {0}
342    - name: steps::cache_rust_dependencies_namespace
343      uses: namespacelabs/nscloud-cache-action@v1
344      with:
345        cache: rust
346    - name: run_tests::check_docs::lychee_link_check
347      uses: lycheeverse/lychee-action@82202e5e9c2f4ef1a55a3d02563e1cb6041e5332
348      with:
349        args: --no-progress --exclude '^http' './docs/src/**/*'
350        fail: true
351        jobSummary: false
352    - name: steps::setup_linux
353      run: ./script/linux
354      shell: bash -euxo pipefail {0}
355    - name: steps::install_mold
356      run: ./script/install-mold
357      shell: bash -euxo pipefail {0}
358    - name: steps::download_wasi_sdk
359      run: ./script/download-wasi-sdk
360      shell: bash -euxo pipefail {0}
361    - name: run_tests::check_docs::install_mdbook
362      uses: peaceiris/actions-mdbook@ee69d230fe19748b7abf22df32acaa93833fad08
363      with:
364        mdbook-version: 0.4.37
365    - name: run_tests::check_docs::build_docs
366      run: |
367        mkdir -p target/deploy
368        mdbook build ./docs --dest-dir=../target/deploy/docs/
369      shell: bash -euxo pipefail {0}
370    - name: run_tests::check_docs::lychee_link_check
371      uses: lycheeverse/lychee-action@82202e5e9c2f4ef1a55a3d02563e1cb6041e5332
372      with:
373        args: --no-progress --exclude '^http' 'target/deploy/docs'
374        fail: true
375        jobSummary: false
376    timeout-minutes: 60
377  check_licenses:
378    needs:
379    - orchestrate
380    if: needs.orchestrate.outputs.run_licenses == 'true'
381    runs-on: namespace-profile-2x4-ubuntu-2404
382    steps:
383    - name: steps::checkout_repo
384      uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
385      with:
386        clean: false
387    - name: steps::cache_rust_dependencies_namespace
388      uses: namespacelabs/nscloud-cache-action@v1
389      with:
390        cache: rust
391    - name: ./script/check-licenses
392      run: ./script/check-licenses
393      shell: bash -euxo pipefail {0}
394    - name: ./script/generate-licenses
395      run: ./script/generate-licenses
396      shell: bash -euxo pipefail {0}
397  check_scripts:
398    needs:
399    - orchestrate
400    if: needs.orchestrate.outputs.run_action_checks == 'true'
401    runs-on: namespace-profile-2x4-ubuntu-2404
402    steps:
403    - name: steps::checkout_repo
404      uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
405      with:
406        clean: false
407    - name: run_tests::check_scripts::run_shellcheck
408      run: ./script/shellcheck-scripts error
409      shell: bash -euxo pipefail {0}
410    - id: get_actionlint
411      name: run_tests::check_scripts::download_actionlint
412      run: bash <(curl https://raw.githubusercontent.com/rhysd/actionlint/main/scripts/download-actionlint.bash)
413      shell: bash -euxo pipefail {0}
414    - name: run_tests::check_scripts::run_actionlint
415      run: |
416        ${{ steps.get_actionlint.outputs.executable }} -color
417      shell: bash -euxo pipefail {0}
418    - name: run_tests::check_scripts::check_xtask_workflows
419      run: |
420        cargo xtask workflows
421        if ! git diff --exit-code .github; then
422          echo "Error: .github directory has uncommitted changes after running 'cargo xtask workflows'"
423          echo "Please run 'cargo xtask workflows' locally and commit the changes"
424          exit 1
425        fi
426      shell: bash -euxo pipefail {0}
427    timeout-minutes: 60
428  build_nix_linux_x86_64:
429    needs:
430    - orchestrate
431    if: needs.orchestrate.outputs.run_nix == 'true'
432    runs-on: namespace-profile-32x64-ubuntu-2004
433    env:
434      ZED_CLIENT_CHECKSUM_SEED: ${{ secrets.ZED_CLIENT_CHECKSUM_SEED }}
435      ZED_MINIDUMP_ENDPOINT: ${{ secrets.ZED_SENTRY_MINIDUMP_ENDPOINT }}
436      ZED_CLOUD_PROVIDER_ADDITIONAL_MODELS_JSON: ${{ secrets.ZED_CLOUD_PROVIDER_ADDITIONAL_MODELS_JSON }}
437      GIT_LFS_SKIP_SMUDGE: '1'
438    steps:
439    - name: steps::checkout_repo
440      uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
441      with:
442        clean: false
443    - name: nix_build::build_nix::install_nix
444      uses: cachix/install-nix-action@02a151ada4993995686f9ed4f1be7cfbb229e56f
445      with:
446        github_access_token: ${{ secrets.GITHUB_TOKEN }}
447    - name: nix_build::build_nix::cachix_action
448      uses: cachix/cachix-action@0fc020193b5a1fa3ac4575aa3a7d3aa6a35435ad
449      with:
450        name: zed
451        authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
452        cachixArgs: -v
453        pushFilter: -zed-editor-[0-9.]*-nightly
454    - name: nix_build::build_nix::build
455      run: nix build .#debug -L --accept-flake-config
456      shell: bash -euxo pipefail {0}
457    timeout-minutes: 60
458    continue-on-error: true
459  build_nix_mac_aarch64:
460    needs:
461    - orchestrate
462    if: needs.orchestrate.outputs.run_nix == 'true'
463    runs-on: self-mini-macos
464    env:
465      ZED_CLIENT_CHECKSUM_SEED: ${{ secrets.ZED_CLIENT_CHECKSUM_SEED }}
466      ZED_MINIDUMP_ENDPOINT: ${{ secrets.ZED_SENTRY_MINIDUMP_ENDPOINT }}
467      ZED_CLOUD_PROVIDER_ADDITIONAL_MODELS_JSON: ${{ secrets.ZED_CLOUD_PROVIDER_ADDITIONAL_MODELS_JSON }}
468      GIT_LFS_SKIP_SMUDGE: '1'
469    steps:
470    - name: steps::checkout_repo
471      uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
472      with:
473        clean: false
474    - name: nix_build::build_nix::set_path
475      run: |
476        echo "/nix/var/nix/profiles/default/bin" >> "$GITHUB_PATH"
477        echo "/Users/administrator/.nix-profile/bin" >> "$GITHUB_PATH"
478      shell: bash -euxo pipefail {0}
479    - name: nix_build::build_nix::cachix_action
480      uses: cachix/cachix-action@0fc020193b5a1fa3ac4575aa3a7d3aa6a35435ad
481      with:
482        name: zed
483        authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
484        cachixArgs: -v
485        pushFilter: -zed-editor-[0-9.]*-nightly
486    - name: nix_build::build_nix::build
487      run: nix build .#debug -L --accept-flake-config
488      shell: bash -euxo pipefail {0}
489    - name: nix_build::build_nix::limit_store
490      run: |-
491        if [ "$(du -sm /nix/store | cut -f1)" -gt 50000 ]; then
492            nix-collect-garbage -d || true
493        fi
494      shell: bash -euxo pipefail {0}
495    timeout-minutes: 60
496    continue-on-error: true
497  check_postgres_and_protobuf_migrations:
498    needs:
499    - orchestrate
500    if: needs.orchestrate.outputs.run_tests == 'true'
501    runs-on: namespace-profile-16x32-ubuntu-2204
502    env:
503      GIT_AUTHOR_NAME: Protobuf Action
504      GIT_AUTHOR_EMAIL: ci@zed.dev
505      GIT_COMMITTER_NAME: Protobuf Action
506      GIT_COMMITTER_EMAIL: ci@zed.dev
507    steps:
508    - name: steps::checkout_repo
509      uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
510      with:
511        fetch-depth: 0
512    - name: run_tests::check_postgres_and_protobuf_migrations::remove_untracked_files
513      run: git clean -df
514      shell: bash -euxo pipefail {0}
515    - name: run_tests::check_postgres_and_protobuf_migrations::ensure_fresh_merge
516      run: |
517        if [ -z "$GITHUB_BASE_REF" ];
518        then
519          echo "BUF_BASE_BRANCH=$(git merge-base origin/main HEAD)" >> "$GITHUB_ENV"
520        else
521          git checkout -B temp
522          git merge -q "origin/$GITHUB_BASE_REF" -m "merge main into temp"
523          echo "BUF_BASE_BRANCH=$GITHUB_BASE_REF" >> "$GITHUB_ENV"
524        fi
525      shell: bash -euxo pipefail {0}
526    - name: run_tests::check_postgres_and_protobuf_migrations::bufbuild_setup_action
527      uses: bufbuild/buf-setup-action@v1
528      with:
529        version: v1.29.0
530        github_token: ${{ secrets.GITHUB_TOKEN }}
531    - name: run_tests::check_postgres_and_protobuf_migrations::bufbuild_breaking_action
532      uses: bufbuild/buf-breaking-action@v1
533      with:
534        input: crates/proto/proto/
535        against: https://github.com/${GITHUB_REPOSITORY}.git#branch=${BUF_BASE_BRANCH},subdir=crates/proto/proto/
536    timeout-minutes: 60
537  tests_pass:
538    needs:
539    - orchestrate
540    - check_style
541    - run_tests_windows
542    - run_tests_linux
543    - run_tests_mac
544    - doctests
545    - check_workspace_binaries
546    - check_dependencies
547    - check_docs
548    - check_licenses
549    - check_scripts
550    - build_nix_linux_x86_64
551    - build_nix_mac_aarch64
552    if: (github.repository_owner == 'zed-industries' || github.repository_owner == 'zed-extensions') && always()
553    runs-on: namespace-profile-2x4-ubuntu-2404
554    steps:
555    - name: run_tests::tests_pass
556      run: |
557        set +x
558        EXIT_CODE=0
559
560        check_result() {
561          echo "* $1: $2"
562          if [[ "$2" != "skipped" && "$2" != "success" ]]; then EXIT_CODE=1; fi
563        }
564
565        check_result "orchestrate" "${{ needs.orchestrate.result }}"
566        check_result "check_style" "${{ needs.check_style.result }}"
567        check_result "run_tests_windows" "${{ needs.run_tests_windows.result }}"
568        check_result "run_tests_linux" "${{ needs.run_tests_linux.result }}"
569        check_result "run_tests_mac" "${{ needs.run_tests_mac.result }}"
570        check_result "doctests" "${{ needs.doctests.result }}"
571        check_result "check_workspace_binaries" "${{ needs.check_workspace_binaries.result }}"
572        check_result "check_dependencies" "${{ needs.check_dependencies.result }}"
573        check_result "check_docs" "${{ needs.check_docs.result }}"
574        check_result "check_licenses" "${{ needs.check_licenses.result }}"
575        check_result "check_scripts" "${{ needs.check_scripts.result }}"
576        check_result "build_nix_linux_x86_64" "${{ needs.build_nix_linux_x86_64.result }}"
577        check_result "build_nix_mac_aarch64" "${{ needs.build_nix_mac_aarch64.result }}"
578
579        exit $EXIT_CODE
580      shell: bash -euxo pipefail {0}
581  call_autofix:
582    needs:
583    - check_style
584    - run_tests_linux
585    if: (needs.check_style.result == 'failure' || needs.run_tests_linux.outputs.clippy_failed == 'true') && github.event_name == 'pull_request' && github.actor != 'zed-zippy[bot]'
586    runs-on: namespace-profile-2x4-ubuntu-2404
587    steps:
588    - id: get-app-token
589      name: steps::authenticate_as_zippy
590      uses: actions/create-github-app-token@bef1eaf1c0ac2b148ee2a0a74c65fbe6db0631f1
591      with:
592        app-id: ${{ secrets.ZED_ZIPPY_APP_ID }}
593        private-key: ${{ secrets.ZED_ZIPPY_APP_PRIVATE_KEY }}
594    - name: run_tests::call_autofix::dispatch_autofix
595      run: gh workflow run autofix_pr.yml -f pr_number=${{ github.event.pull_request.number }} -f run_clippy=${{ needs.run_tests_linux.outputs.clippy_failed == 'true' }}
596      shell: bash -euxo pipefail {0}
597      env:
598        GITHUB_TOKEN: ${{ steps.get-app-token.outputs.token }}
599concurrency:
600  group: ${{ github.workflow }}-${{ github.ref_name }}-${{ github.ref_name == 'main' && github.sha || 'anysha' }}
601  cancel-in-progress: true