Skip to content

Feature/e2e fix 3 - #34

Merged
segoon merged 10 commits into
masterfrom
feature/e2e-fix-3
Sep 10, 2026
Merged

Feature/e2e fix 3#34
segoon merged 10 commits into
masterfrom
feature/e2e-fix-3

Conversation

@segoon

@segoon segoon commented Sep 10, 2026

Copy link
Copy Markdown
Owner

No description provided.

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).
@segoon
segoon merged commit 7c250df into master Sep 10, 2026
8 checks passed
@segoon
segoon deleted the feature/e2e-fix-3 branch September 10, 2026 20:31
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant