From 595cf19b8760da697a2ae74b2f6d67c08257dc4d Mon Sep 17 00:00:00 2001 From: Michael Panchenko Date: Sun, 28 Jun 2026 13:26:28 +0200 Subject: [PATCH] Remove niche languages with heavy toolchains from execution in GH actions --- .github/workflows/pytest.yml | 77 ------------------- test/solidlsp/bsl/test_bsl_basic.py | 1 + test/solidlsp/haskell/test_haskell_basic.py | 2 + test/solidlsp/julia/test_julia_basic.py | 3 +- test/solidlsp/ocaml/test_ocaml_basic.py | 3 +- test/solidlsp/ocaml/test_ocaml_diagnostics.py | 3 + test/solidlsp/r/test_r_basic.py | 3 +- 7 files changed, 9 insertions(+), 83 deletions(-) diff --git a/.github/workflows/pytest.yml b/.github/workflows/pytest.yml index efb77935..9cf5535b 100644 --- a/.github/workflows/pytest.yml +++ b/.github/workflows/pytest.yml @@ -92,12 +92,6 @@ jobs: if: steps.cache-go-binaries.outputs.cache-hit != 'true' shell: bash run: go install golang.org/x/tools/gopls@latest - - name: Set up Elixir - if: runner.os != 'Windows' - uses: erlef/setup-beam@v1 - with: - elixir-version: "1.19.3" - otp-version: "28" # Erlang currently not tested in CI, random hangings on macos, always hangs on ubuntu # In local tests, erlang seems to work though # - name: Install Erlang Language Server @@ -202,77 +196,6 @@ jobs: - name: Install Ruby language server shell: bash run: gem install ruby-lsp - - name: Install OCaml and opam - uses: ocaml/setup-ocaml@v3 - with: - ocaml-compiler: ${{ runner.os == 'Windows' && '4.14' || '5.3.x' }} - dune-cache: true - opam-repositories: | - ${{ runner.os == 'Windows' && 'opam-repository-mingw: https://github.com/ocaml-opam/opam-repository-mingw.git#sunset' || '' }} - default: https://github.com/ocaml/opam-repository.git - - name: Install OCaml packages - shell: bash - run: | - if [ "$RUNNER_OS" = "Windows" ]; then - opam install -y dune ocaml-lsp-server - else - # Require ocaml-lsp-server >= 1.23.0 for cross-file reference support - opam install -y dune 'ocaml-lsp-server>=1.23.0' - fi - - name: Install R - uses: r-lib/actions/setup-r@v2 - with: - r-version: '4.4.2' - use-public-rspm: true - - name: Install R sysdeps (libuv for fs package) - if: runner.os == 'Linux' - shell: bash - run: sudo apt-get update && sudo apt-get install -y libuv1-dev - - name: Install R language server - shell: bash - run: | - Rscript -e "install.packages('languageserver', repos='https://cloud.r-project.org')" - - name: Set up Julia - uses: julia-actions/setup-julia@v2 - with: - version: '1.12.6' - - name: Install Julia LanguageServer - shell: bash - run: julia -e 'using Pkg; Pkg.add(Pkg.PackageSpec(name="LanguageServer", version="5.0.0"))' - - name: Setup Haskell toolchain - if: runner.os != 'Windows' - uses: haskell/ghcup-setup@v1 - with: - ghc: '9.12.2' - cabal: '3.10.3.0' - hls: '2.11.0.0' - - name: Verify Haskell tools - if: runner.os != 'Windows' - run: | - echo "Verifying installed Haskell tools:" - which ghc && ghc --version - which cabal && cabal --version - # HLS verification - non-blocking in case of version incompatibility - if command -v haskell-language-server-wrapper &>/dev/null; then - echo "Found haskell-language-server-wrapper" - haskell-language-server-wrapper --version || echo "WARNING: HLS wrapper found but version check failed" - elif command -v haskell-language-server &>/dev/null; then - echo "Found haskell-language-server" - haskell-language-server --version || echo "WARNING: HLS found but version check failed" - else - echo "WARNING: HLS not found (may be incompatible with GHC 9.12.2)" - echo "This is not a critical error - tests will use HLS if available at runtime" - fi - shell: bash - - name: Pre-build Haskell test project for HLS - if: runner.os != 'Windows' - run: | - cd test/resources/repos/haskell/test_repo - cabal update - cabal build --only-dependencies - cabal build - echo "Haskell test project built successfully" - shell: bash - name: Install Zig uses: mlugg/setup-zig@v2 with: diff --git a/test/solidlsp/bsl/test_bsl_basic.py b/test/solidlsp/bsl/test_bsl_basic.py index 67af8cdd..4e2ecc87 100644 --- a/test/solidlsp/bsl/test_bsl_basic.py +++ b/test/solidlsp/bsl/test_bsl_basic.py @@ -12,6 +12,7 @@ from test.solidlsp.conftest import format_symbol_for_assert, has_malformed_name, pytestmark = pytest.mark.skip("BSL is a niche language, the tests are slow and flaky.") + @pytest.mark.bsl class TestBSLLanguageServer: @pytest.mark.parametrize("language_server", [Language.BSL], indirect=True) diff --git a/test/solidlsp/haskell/test_haskell_basic.py b/test/solidlsp/haskell/test_haskell_basic.py index 5b23ad3d..55f94f6d 100644 --- a/test/solidlsp/haskell/test_haskell_basic.py +++ b/test/solidlsp/haskell/test_haskell_basic.py @@ -23,6 +23,8 @@ from solidlsp.ls_types import SymbolKind from test.solidlsp.conftest import format_symbol_for_assert, has_malformed_name, request_all_symbols from test.solidlsp.util.diagnostics import assert_file_diagnostics +pytestmark = pytest.mark.skip("Haskell installation is heavy, the tests should be executed only on demand") + @pytest.mark.haskell @pytest.mark.skipif(sys.platform == "win32", reason="HLS not installed on Windows CI") diff --git a/test/solidlsp/julia/test_julia_basic.py b/test/solidlsp/julia/test_julia_basic.py index 176587f7..1f3fdd87 100644 --- a/test/solidlsp/julia/test_julia_basic.py +++ b/test/solidlsp/julia/test_julia_basic.py @@ -4,12 +4,11 @@ import pytest from solidlsp.ls import SolidLanguageServer from solidlsp.ls_config import Language -from test.conftest import is_ci from test.solidlsp.conftest import format_symbol_for_assert, has_malformed_name, request_all_symbols from test.solidlsp.util.diagnostics import assert_file_diagnostics -@pytest.mark.skipif(shutil.which("julia") is None and not is_ci, reason="Julia is not available") +@pytest.mark.skipif(shutil.which("julia") is None, reason="Julia is not available") @pytest.mark.julia class TestJuliaLanguageServer: @pytest.mark.parametrize("language_server", [Language.JULIA], indirect=True) diff --git a/test/solidlsp/ocaml/test_ocaml_basic.py b/test/solidlsp/ocaml/test_ocaml_basic.py index f3dca2eb..6016be56 100644 --- a/test/solidlsp/ocaml/test_ocaml_basic.py +++ b/test/solidlsp/ocaml/test_ocaml_basic.py @@ -6,11 +6,10 @@ import pytest from solidlsp import SolidLanguageServer from solidlsp.ls_config import Language from solidlsp.ls_utils import SymbolUtils -from test.conftest import is_ci from test.solidlsp.conftest import format_symbol_for_assert, has_malformed_name, request_all_symbols -@pytest.mark.skipif(shutil.which("opam") is None and not is_ci, reason="OPAM is not available") +@pytest.mark.skipif(shutil.which("opam") is None, reason="OPAM is not available") @pytest.mark.ocaml class TestOCamlLanguageServer: @pytest.mark.parametrize("language_server", [Language.OCAML], indirect=True) diff --git a/test/solidlsp/ocaml/test_ocaml_diagnostics.py b/test/solidlsp/ocaml/test_ocaml_diagnostics.py index a76f95cb..69f4ed61 100644 --- a/test/solidlsp/ocaml/test_ocaml_diagnostics.py +++ b/test/solidlsp/ocaml/test_ocaml_diagnostics.py @@ -1,3 +1,5 @@ +import shutil + import pytest from solidlsp import SolidLanguageServer @@ -5,6 +7,7 @@ from solidlsp.ls_config import Language from test.solidlsp.util.diagnostics import assert_file_diagnostics +@pytest.mark.skipif(shutil.which("opam") is None, reason="OPAM is not available") @pytest.mark.ocaml class TestOcamlDiagnostics: @pytest.mark.parametrize("language_server", [Language.OCAML], indirect=True) diff --git a/test/solidlsp/r/test_r_basic.py b/test/solidlsp/r/test_r_basic.py index 76f82602..17f28545 100644 --- a/test/solidlsp/r/test_r_basic.py +++ b/test/solidlsp/r/test_r_basic.py @@ -10,11 +10,10 @@ import pytest from solidlsp import SolidLanguageServer from solidlsp.ls_config import Language -from test.conftest import is_ci from test.solidlsp.conftest import format_symbol_for_assert, has_malformed_name, request_all_symbols -@pytest.mark.skipif(shutil.which("R") is None and not is_ci, reason="R is not available") +@pytest.mark.skipif(shutil.which("R") is None, reason="R is not available") @pytest.mark.r class TestRLanguageServer: """Test basic functionality of the R language server."""