From 389d1a8463a7efefed2a13a7f57678abb164c002 Mon Sep 17 00:00:00 2001 From: Tatu Argillander Date: Tue, 27 Jan 2026 22:18:02 +0200 Subject: [PATCH] vtsls: add lsp initialization smoke test --- pkgs/by-name/vt/vtsls/package.nix | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/pkgs/by-name/vt/vtsls/package.nix b/pkgs/by-name/vt/vtsls/package.nix index e5e6ad17db52..7fac88f81b36 100644 --- a/pkgs/by-name/vt/vtsls/package.nix +++ b/pkgs/by-name/vt/vtsls/package.nix @@ -9,6 +9,8 @@ fetchPnpmDeps, pnpmConfigHook, nix-update-script, + vtsls, + runCommand, }: let pnpm' = pnpm_11.override { nodejs-slim = nodejs-slim_22; }; @@ -94,6 +96,25 @@ stdenv.mkDerivation (finalAttrs: { passthru = { updateScript = nix-update-script { }; + + tests.smoke = + runCommand "vtsls-smoke-test" + { + } + '' + INIT_REQUEST='{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"processId":null,"rootUri":"file:///tmp","workspaceFolders":[{"uri":"file:///tmp","name":"test"}],"capabilities":{}}}' + CONTENT_LENGTH=''${#INIT_REQUEST} + + RESPONSE=$( + { + printf "Content-Length: %d\r\n\r\n%s" "$CONTENT_LENGTH" "$INIT_REQUEST" + sleep 1 + } | timeout 3 ${lib.getExe vtsls} --stdio 2>&1 | head -c 1000 + ) || true + + echo "$RESPONSE" | grep -q '"capabilities"' + touch $out + ''; }; meta = {