Revert #130 and fix CI/CD pipeline#133
Merged
LakshyAAAgrawal merged 6 commits intomicrosoft:mainfrom Apr 9, 2026
Merged
Conversation
The CI/CD pipeline was broken by multiple issues: 1. Python version drift: `python-version: "3.x"` now resolves to Python 3.14 on GitHub Actions, but `pytest==7.3.1` crashes on Python 3.12+ (removed `ast.Str`). Fix: pin Python to 3.12 and use `pytest>=7.4.0`. 2. Incomplete runtime setup: the old test/publish workflows only set up Go+Ruby+Python but ran ALL tests. Tests for other languages relied on self-downloading binaries or silently failed. Fix: split test workflow into per-language jobs, each with proper runtime dependencies. 3. Publish workflow: lacked runtimes for most languages and would run tests from forks. Fix: add all runtimes and fork protection. 4. Kotlin hover test flaky: the Kotlin Language Server throws NullPointerException when Gradle has permission issues in CI. Fix: mark as xfail (the bug is in KLS, not multilspy). Additional fixes ported: - server.py: race condition in process tree signaling (children can exit between listing and signaling) - Ruby tests: use set comparison for non-deterministic symbol ordering - Timeout test: handle concurrent.futures.TimeoutError for Python <3.11 - requirements.txt: update jedi-language-server to 0.41.3 (matches pyproject.toml), use flexible pytest/pytest-asyncio versions
- chmod +x only sets owner execute bit; the KLS runs gradle/mvn as the runner user which may not be the owner. Use chmod a+x instead. - Add verification that gradle/mvn are actually runnable after chmod. - Remove xfail from Kotlin hover test since the root cause is fixed. - Restore accidentally deleted comments in publish workflow.
Replace per-language parallel jobs with a single test job that sets up all runtimes. Most language servers self-download their binaries, so adding a new language server requires no CI changes. Test across Python 3.10, 3.12, and 3.14 to verify compatibility with all current production versions, instead of pinning to a single version.
d9e04a8 to
9a218cc
Compare
LakshyAAAgrawalP
approved these changes
Apr 9, 2026
Remove Rust, Java JDK, and Gradle setup action from CI — these servers (rust-analyzer, Eclipse JDTLS, Kotlin LS) self-download their own binaries and JRE. Installing them in CI masks setup failures. Only keep system-level deps for servers that require them: - go + gopls (Gopls checks for pre-installed binaries) - ruby (Solargraph installs itself via gem if missing) - node + npm (TypeScript LS installs via npm) - dotnet (OmniSharp checks dotnet version) Keep runner workarounds that fix environment issues: - Remove broken JDK installations that interfere with JDTLS - Fix gradle/mvn permissions for KLS classpath resolution
9bbddb0 to
baad43f
Compare
The Kotlin Language Server throws NullPointerException on hover when Gradle classpath resolution fails. chmod a+x on /usr/bin/gradle fixes shell access but not JVM subprocess access (likely runner security policy). The failure is non-deterministic: on this CI run, 3.10 and 3.14 passed all Kotlin tests while 3.12 failed only the sync hover. This is a KLS bug (NullPointerException with incomplete classpath), not a multilspy bug. Mark both async and sync hover tests as xfail(strict=False) so they pass when they work and don't block CI when they don't.
baad43f to
0964bcd
Compare
This was referenced Apr 10, 2026
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.
Summary
Root causes fixed
pytest==7.3.1crashes on Python 3.12+ (removedast.Str)pytest>=7.4.0github.repositoryguardNullPointerException(Gradle perms in CI)xfail(strict=False)Additional fixes ported from #130 (the useful parts)
server.py: race condition in process tree signaling (parent.children()can throw if children exit mid-iteration)setcomparison for non-deterministic symbol orderingconcurrent.futures.TimeoutErrorfor Python <3.11requirements.txt: alignjedi-language-serverto 0.41.3 (matchingpyproject.toml)Test plan
Closes #132