Add Elixir support via ElixirLS #262
Workflow file for this run
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
| name: Test Multilspy | |
| on: | |
| push: | |
| branches: [main, feat/*] | |
| pull_request: | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.ref }} | |
| cancel-in-progress: true | |
| jobs: | |
| test: | |
| name: Test (Python ${{ matrix.python-version }}) | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 30 | |
| strategy: | |
| matrix: | |
| python-version: ["3.10", "3.12", "3.14"] | |
| fail-fast: false | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Set up Python | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: ${{ matrix.python-version }} | |
| cache: "pip" | |
| # --- System-level dependencies for language servers that do NOT self-download --- | |
| # Gopls requires go + gopls pre-installed | |
| - name: Set up Go | |
| uses: actions/setup-go@v5 | |
| with: | |
| go-version: '1.21' | |
| - name: Install gopls | |
| run: go install golang.org/x/tools/gopls@latest | |
| # Solargraph requires ruby (installs solargraph gem itself if missing) | |
| - name: Set up Ruby | |
| uses: ruby/setup-ruby@v1 | |
| with: | |
| ruby-version: '3.4' | |
| # TypeScript LS requires node + npm (installs ts-language-server itself via npm) | |
| - name: Set up Node.js | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: '20' | |
| # OmniSharp requires dotnet runtime | |
| - name: Set up .NET | |
| uses: actions/setup-dotnet@v4 | |
| with: | |
| dotnet-version: '8.0.x' | |
| # ElixirLS requires Elixir and Erlang/OTP | |
| - name: Set up Elixir | |
| uses: erlef/setup-beam@v1 | |
| with: | |
| elixir-version: '1.18' | |
| otp-version: '27' | |
| # --- Workarounds for GitHub runner environment issues --- | |
| # JDTLS downloads its own JRE, but pre-installed JDKs on the runner | |
| # with broken permissions cause JDTLS initialization to fail | |
| - name: Remove problematic JDK installations | |
| run: | | |
| sudo rm -rf /usr/lib/jvm/temurin-8-jdk-amd64 || true | |
| sudo rm -rf /usr/lib/jvm/adoptopenjdk-8-hotspot-amd64 || true | |
| # KLS downloads its own JRE, but invokes system gradle/mvn for classpath | |
| # resolution. These are pre-installed on GitHub runners but may lack | |
| # execute permissions for non-owner users. | |
| - name: Fix Gradle and Maven permissions | |
| run: | | |
| sudo chmod a+x /usr/bin/gradle /usr/bin/mvn || true | |
| gradle --version || echo "WARNING: gradle not runnable" | |
| mvn --version || echo "WARNING: mvn not runnable" | |
| - name: Install dependencies | |
| run: | | |
| python -m pip install --upgrade pip | |
| pip install -r requirements.txt | |
| pip install -e . | |
| - name: Run tests | |
| run: pytest tests/multilspy -v --tb=short |