diff --git a/pkgs/by-name/em/emmet-language-server/package.nix b/pkgs/by-name/em/emmet-language-server/package.nix index cb4eb5393f93..a8cc88056844 100644 --- a/pkgs/by-name/em/emmet-language-server/package.nix +++ b/pkgs/by-name/em/emmet-language-server/package.nix @@ -8,6 +8,8 @@ pnpmBuildHook, fetchFromGitHub, nix-update-script, + runCommand, + emmet-language-server, }: let pnpm = pnpm_11; @@ -60,7 +62,24 @@ stdenvNoCC.mkDerivation (finalAttrs: { runHook postInstall ''; - passthru.updateScript = nix-update-script { }; + passthru = { + updateScript = nix-update-script { }; + + tests.smoke = runCommand "emmet-language-server-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 emmet-language-server} --stdio 2>&1 | head -c 1000 + ) || true + + echo "$RESPONSE" | grep -q '"capabilities"' + touch $out + ''; + }; meta = { description = "Language server for emmet.io";