From 2d2444700c98abff20cc4fe2ea705bc278b8dd51 Mon Sep 17 00:00:00 2001 From: Yegappan Lakshmanan Date: Sat, 10 Feb 2024 20:37:09 -0800 Subject: [PATCH] Add a simple rust language server test --- .github/workflows/unitests.yml | 1 + test/run_tests.sh | 2 +- test/rust_tests.vim | 58 ++++++++++++++++++++++++++++++++++ 3 files changed, 60 insertions(+), 1 deletion(-) create mode 100644 test/rust_tests.vim diff --git a/.github/workflows/unitests.yml b/.github/workflows/unitests.yml index 245157e..52c7667 100644 --- a/.github/workflows/unitests.yml +++ b/.github/workflows/unitests.yml @@ -25,6 +25,7 @@ jobs: sudo apt install -y golang sudo apt install -y gopls # install the rust language server + sudo apt install -y cargo rust-src mkdir -p ~/.local/bin curl -L https://github.com/rust-lang/rust-analyzer/releases/latest/download/rust-analyzer-x86_64-unknown-linux-gnu.gz | gunzip -c - > ~/.local/bin/rust-analyzer chmod +x ~/.local/bin/rust-analyzer diff --git a/test/run_tests.sh b/test/run_tests.sh index e995905..1a1e69b 100755 --- a/test/run_tests.sh +++ b/test/run_tests.sh @@ -10,7 +10,7 @@ fi VIM_CMD="$VIMPRG -u NONE -U NONE -i NONE --noplugin -N --not-a-term" -TESTS="clangd_tests.vim tsserver_tests.vim gopls_tests.vim not_lspserver_related_tests.vim markdown_tests.vim" +TESTS="clangd_tests.vim tsserver_tests.vim gopls_tests.vim not_lspserver_related_tests.vim markdown_tests.vim rust_tests.vim" RunTestsInFile() { testfile=$1 diff --git a/test/rust_tests.vim b/test/rust_tests.vim new file mode 100644 index 0000000..d6402d8 --- /dev/null +++ b/test/rust_tests.vim @@ -0,0 +1,58 @@ +vim9script +# Unit tests for LSP rust-analyzer client + +source common.vim +source term_util.vim +source screendump.vim + +var lspServers = [{ + filetype: ['rust'], + path: exepath('rust-analyzer'), + args: [] + }] +call LspAddServer(lspServers) +echomsg systemlist($'{lspServers[0].path} --version') + +def g:Test_LspGotoDef() + settagstack(0, {items: []}) + :cd xrust_tests/src + try + silent! edit ./main.rs + sleep 600m + var lines: list =<< trim END + fn foo() { + } + fn bar() { + foo(); + } + END + append('$', lines) + g:WaitForServerFileLoad(0) + cursor(7, 5) + :LspGotoDefinition + assert_equal([4, 4], [line('.'), col('.')]) + :%bw! + finally + :cd ../.. + endtry +enddef + +def g:Test_ZZZ_Cleanup() + delete('./xrust_tests', 'rf') +enddef + +# Start the rust-analyzer language server. Returns true on success and false +# on failure. +def g:StartLangServer(): bool + system('cargo new xrust_tests') + :cd xrust_tests/src + var status = false + try + status = g:StartLangServerWithFile('./main.rs') + finally + :cd ../.. + endtry + return status +enddef + +# vim: shiftwidth=2 softtabstop=2 noexpandtab -- 2.48.1