mirror of
https://github.com/zed-industries/zed.git
synced 2026-08-23 16:04:45 +00:00
crates/benchmarks/Cargo.toml requested test-support directly from seven application crates (agent, editor, language, language_model, lsp, project, settings) so its edit_file_tool.rs bench could drive the agent's edit-file tool through TestAppContext, FakeFs, FakeLspAdapter, FakeLanguageModel, and Project::test. Because Cargo unifies features per package, those test-only builds applied to the whole benchmarks package, including display_map.rs, editor_render.rs, and markdown_renderer.rs, which render production code paths and have no inherent need for most of that test-only surface. This moves edit_file_tool.rs into a new sibling package, edit_file_tool_benchmarks (crates/edit_file_tool_benchmarks), with its own Cargo.toml requesting exactly the dependencies and test-support features that one benchmark needs. It reuses benchmarks::bench_utils (for random_rust_file/rust_identifier/rust_file_line_count) via a plain workspace dependency on benchmarks rather than duplicating that generator, since bench_utils itself needs no test-support feature. The bench file's content, name, and behavior are unchanged; only its package changed, so `cargo bench -p edit_file_tool_benchmarks --bench edit_file_tool` replaces `cargo bench -p benchmarks --bench edit_file_tool`. With edit_file_tool.rs gone, crates/benchmarks/Cargo.toml drops its direct test-support edges to agent, editor, language_model, and project entirely: `cargo tree -p benchmarks --edges features --invert <crate>` now shows none of those four anywhere in the graph, not merely as a direct edge (agent and language_model aren't dependencies of benchmarks at all any more). Two edges do not go away, and this is a real finding, not an oversight: - settings/test-support remains, because display_map.rs, editor_render.rs, and markdown_renderer.rs all call SettingsStore::test directly to build a global settings store for their benchmarks, independent of edit_file_tool. This also keeps gpui/test-support resolved (settings' test-support feature enables it directly), which is what display_map.rs's direct use of TestAppContext/TestDispatcher relies on. - language/test-support remains, because markdown_renderer.rs calls LanguageRegistry::test and language::rust_lang directly to build a language registry for its Markdown benchmark, also independent of edit_file_tool. language's test-support feature enables lsp/test-support, so lsp/test-support still resolves transitively too, despite benchmarks no longer depending on lsp directly at all. - multi_buffer/test-support is now a new *direct* edge (it used to resolve only transitively through editor's test-support): display_map.rs and editor_render.rs call MultiBuffer::build_simple/build_random, which are only compiled under multi_buffer's own test-support feature, with no production equivalent. None of this is edit_file_tool-specific, so moving that one benchmark out cannot remove it without changing what display_map/editor_render/ markdown_renderer actually exercise (e.g. swapping SettingsStore::test for settings::init would change the settings values feeding those benchmarks). That is out of scope here. script/check-gpui-bench-feature-isolation gains a check that walks the whole resolved graph (not just a direct edge, since nothing else in benchmarks has a legitimate reason to reach test-support through any of them) for agent, editor, language_model, and project, confirming they are fully absent from benchmarks' test-support surface now that edit_file_tool moved out. The existing theme/util direct-edge check gains updated comments reflecting that language, multi_buffer, and settings are the crates still populating the graph, and the script gains a sanity check that edit_file_tool_benchmarks still exists and resolves, documenting rather than hiding its continued test-support dependency. Validation performed: - `cargo check -p benchmarks -p edit_file_tool_benchmarks --benches`: both packages compile cleanly together. - `cargo bench --offline -- --test` (quick mode) for all four bench targets: display_map, editor_render, and markdown_renderer under benchmarks, and edit_file_tool under edit_file_tool_benchmarks. All cases report Success with the same benchmark names/groups as before the split. - `cargo tree -p benchmarks --edges features` before/after comparison confirms agent, editor, language_model, and project are gone from the graph entirely, while language, multi_buffer, and settings remain for the reasons above. - `script/check-gpui-bench-feature-isolation` passes; manually confirmed it fails (correctly) when a test-support edge to agent is reintroduced. - `cargo shear --locked`: no unused dependencies in either package. - `cargo fmt --check` (whole repo) and `./script/clippy -p benchmarks -p edit_file_tool_benchmarks` (deny warnings) both pass. - `bash script/shellcheck-scripts` and `bash script/check-licenses` both pass for the modified/new files. Remaining test-support debt, tracked honestly rather than hidden: edit_file_tool_benchmarks still depends on test-support from agent, editor, language, language_model, lsp, project, and settings, unchanged from before this split. This PR only isolates that dependency to its own package so it stops contaminating the three production-rendering benchmarks; giving edit_file_tool_benchmarks a production-capable harness (or accepting it as a permanently test-shaped benchmark) is future work. Release Notes: - N/A |
||
|---|---|---|
| .. | ||
| danger | ||
| flatpak | ||
| lib | ||
| licenses | ||
| terms | ||
| update_top_ranking_issues | ||
| analyze_highlights.py | ||
| bootstrap | ||
| bootstrap.ps1 | ||
| build-docker | ||
| bump-extension-cli | ||
| bump-gpui-version | ||
| bump-nightly | ||
| bump-zed-version | ||
| bundle-freebsd | ||
| bundle-linux | ||
| bundle-mac | ||
| bundle-windows.ps1 | ||
| cargo | ||
| cargo-timing-info.js | ||
| check-gpui-bench-feature-isolation | ||
| check-keymaps | ||
| check-licenses | ||
| check-links | ||
| check-todos | ||
| cherry-pick | ||
| clear-target-dir-if-larger-than | ||
| clear-target-dir-if-larger-than.ps1 | ||
| clippy | ||
| clippy.ps1 | ||
| collab-flamegraph | ||
| community-pr-track-mapping.json | ||
| crate-dep-graph | ||
| create-draft-release | ||
| debug-cli | ||
| deploy-collab | ||
| determine-release-channel | ||
| determine-release-channel.ps1 | ||
| digital-ocean-db.sh | ||
| docs-strip-preview-callouts | ||
| docs-suggest | ||
| docs-suggest-publish | ||
| download-wasi-sdk | ||
| draft-release-notes | ||
| drop-test-dbs | ||
| exit-ci-if-dev-drive-is-full.ps1 | ||
| freebsd | ||
| generate-action-metadata | ||
| generate-licenses | ||
| generate-licenses-csv | ||
| generate-licenses.ps1 | ||
| generate-terms-rtf | ||
| get-crate-version | ||
| get-crate-version.ps1 | ||
| get-pull-requests-since | ||
| get-release-notes-since | ||
| get-released-version | ||
| github-assign-contributor-issue.py | ||
| github-check-new-issue-for-duplicates.py | ||
| github-clean-issue-types.py | ||
| github-community-pr-board.py | ||
| github-find-top-duplicated-bugs.py | ||
| github-guild-board.py | ||
| github-pr-cleanup.py | ||
| github-pr-status | ||
| github-track-duplicate-bot-effectiveness.py | ||
| github-triage-queue-board.py | ||
| histogram | ||
| import-themes | ||
| install-cmake | ||
| install-linux | ||
| install-rustup.ps1 | ||
| install.sh | ||
| kube-shell | ||
| linux | ||
| metal-debug | ||
| mitm-proxy.sh | ||
| new-crate | ||
| prettier | ||
| prompts | ||
| randomized-test-ci | ||
| randomized-test-minimize | ||
| remote-server | ||
| reset_db | ||
| run-background-agent-mvp-local | ||
| run-local-minio | ||
| run-unit-evals | ||
| seed-db | ||
| select-sentry-crash-candidates | ||
| sentry-fetch | ||
| setup-dev-driver.ps1 | ||
| setup-sccache | ||
| setup-sccache.ps1 | ||
| shellcheck-scripts | ||
| snap-build | ||
| snap-try | ||
| squawk | ||
| test-docs-suggest-batch | ||
| test-wsl-sandbox.ps1 | ||
| triage_watcher.jl | ||
| trigger-docs-build | ||
| trigger-release | ||
| uninstall.sh | ||
| update-json-schemas | ||
| upload-extension-cli | ||
| upload-nightly | ||
| upload-nightly.ps1 | ||
| verify-macos-document-icon | ||
| what-is-deployed | ||
| zed-local | ||