Feature/e2e fix 3 - #34
Merged
Merged
Conversation
GitHub-release assets packaged as .tar.xz (e.g. zls) silently failed to extract since only .tar.gz and .zip were handled, leaving an empty install directory and a misleading "did not produce a runnable executable" error. Decode via the pure-Rust lzma-rs crate, reusing the existing per-entry tar unpacking and a bounded writer to keep the same decompression-bomb guard the other formats already have.
Add zig and ruby runtimes to scripts/download_dev_env.sh / activate.sh (ruby-builder's prebuilt binaries need their shebang rewritten and LD_LIBRARY_PATH/RUBYLIB set, since RUNPATH and the default $LOAD_PATH are baked in for GitHub Actions' hostedtoolcache layout; mirrored via a new ruby_env case in the E2E harness alongside the existing dotnet_root one). Give zig a real fixture project (build.zig + main.zig) and promote its language kind from metadata to source with a query profile, since `capabilities`-only smoke is only valid for metadata languages - `queries` requires an actual project to run references/definition/ callers/etc against. zls has no background-work progress signal, so build-index gets the same failure exception as clangd/pyright/etc. Also start a ruby fixture (lib/order.rb, lib/report.rb, Gemfile) as a head start for later - ruby's LSP servers (solargraph, rubocop, sorbet, standardrb, steep) all install via `pkg:gem`, which the Mason installer doesn't support yet, so ruby.yaml stays on capabilities-only for now.
Give perl a real fixture project (lib/Order.pm, lib/OrderItem.pm, lib/Report.pm, main.pl) and promote its language kind from metadata to source with a query profile. Declare node/npm/perl as host programs for perlnavigator's provisioning (it's an npm package that shells out to a system perl for compilation checks and Perl::Critic), and except definition (perlnavigator doesn't resolve goto-definition for a sub called from the same file it's defined in) and build-index (no background-work progress signal, same as several other servers).
The single file was growing by one install_<lang> function per new E2E runtime; move each into scripts/download_dev_env/<lang>.inc (sourced by the main script, which keeps the shared helpers and orchestration) so adding a language is a new small file instead of a bigger diff to one.
language_id() only covered 10 extensions and fell back to "plaintext" for everything else, including .vim; vim-language-server filters on languageId and silently returns no results for documents it doesn't recognize. Discovered while triaging vim/vimls for E2E query coverage (not promoted this round - the server still returns empty document symbols and can't resolve workspace/symbol for name-based lookups, so it needs more investigation before it's a clean queries candidate).
Give luau a real fixture project (main.luau, Order/OrderItem types + build_sample_order/format_order functions) and promote its language kind from metadata to source with a query profile. luau-lsp is a standalone binary (no extra host programs needed) with full definition/references/call-hierarchy support; except callees (build_sample_order has no outgoing call-hierarchy edges, same pattern as rust/zig) and build-index (no background-work progress signal).
Give odin a real fixture project (main.odin, Order/OrderItem structs + build_sample_order/format_order procs) and promote its language kind from metadata to source with a query profile. Also add "odin" to the textDocument/didOpen languageId table (was falling back to "plaintext" like .vim files did) - ols doesn't actually require it, but it's correct regardless. Except grep (ols returns no workspace/symbol matches for this fixture, even though definition/references work by other means) and build-index (no background-work progress signal, same pattern as several other servers).
Give clojure a real fixture project (main.clj: OrderItem/Order records, build-sample-order/format-order/order-total fns) and promote its language kind from metadata to source with a query profile. Except grep and declaration (clojure-lsp returns no workspace/symbol or textDocument/declaration matches for this fixture), callers (build-sample-order is only called from top-level code, not from another named function, so it legitimately has no call-hierarchy callers), and build-index (no background-work progress signal, same pattern as several other servers).
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.