]> Sergey Matveev's repositories - vim-lsp.git/commitdiff
Add LspCodeAction tests for creating and renaming files
authorYegappan Lakshmanan <yegappan@yahoo.com>
Sun, 11 Feb 2024 05:06:51 +0000 (21:06 -0800)
committerYegappan Lakshmanan <yegappan@yahoo.com>
Sun, 11 Feb 2024 05:06:51 +0000 (21:06 -0800)
test/rust_tests.vim

index d6402d85c22015c02244faef3143559ed14efcc2..6dc227733a548f8f1caf2a515ffe27320ce2d2b7 100644 (file)
@@ -18,20 +18,99 @@ def g:Test_LspGotoDef()
   :cd xrust_tests/src
   try
     silent! edit ./main.rs
-    sleep 600m
+    deletebufline('%', 1, '$')
+    g:WaitForServerFileLoad(0)
     var lines: list<string> =<< trim END
+      fn main() {
+      }
       fn foo() {
       }
       fn bar() {
         foo();
       }
     END
-    append('$', lines)
+    setline(1, lines)
     g:WaitForServerFileLoad(0)
-    cursor(7, 5)
+    cursor(6, 5)
     :LspGotoDefinition
-    assert_equal([4, 4], [line('.'), col('.')])
+    assert_equal([3, 4], [line('.'), col('.')])
+    :%bw!
+  finally
+    :cd ../..
+  endtry
+enddef
+
+# Test for :LspCodeAction creating a file in the current directory
+def g:Test_LspCodeAction_CreateFile()
+  :cd xrust_tests/src
+  try
+    silent! edit ./main.rs
+    deletebufline('%', 1, '$')
+    g:WaitForServerFileLoad(0)
+    var lines: list<string> =<< trim END
+      mod foo;
+      fn main() {
+      }
+    END
+    setline(1, lines)
+    g:WaitForServerFileLoad(1)
+    cursor(1, 1)
+    :LspCodeAction 1
+    g:WaitForServerFileLoad(0)
+    assert_true(filereadable('foo.rs'))
+    :%bw!
+    delete('foo.rs')
+  finally
+    :cd ../..
+  endtry
+enddef
+
+# Test for :LspCodeAction creating a file in a subdirectory
+def g:Test_LspCodeAction_CreateFile_Subdir()
+  :cd xrust_tests/src
+  try
+    silent! edit ./main.rs
+    deletebufline('%', 1, '$')
+    g:WaitForServerFileLoad(0)
+    var lines: list<string> =<< trim END
+      mod baz;
+      fn main() {
+      }
+    END
+    setline(1, lines)
+    g:WaitForServerFileLoad(1)
+    cursor(1, 1)
+    :LspCodeAction 2
+    g:WaitForServerFileLoad(0)
+    assert_true(filereadable('baz/mod.rs'))
+    :%bw!
+    delete('baz', 'rf')
+  finally
+    :cd ../..
+  endtry
+enddef
+
+# Test for :LspCodeAction renaming a file
+def g:Test_LspCodeAction_RenameFile()
+  :cd xrust_tests/src
+  try
+    silent! edit ./main.rs
+    deletebufline('%', 1, '$')
+    g:WaitForServerFileLoad(0)
+    writefile([], 'foobar.rs')
+    var lines: list<string> =<< trim END
+      mod foobar;
+      fn main() {
+      }
+    END
+    setline(1, lines)
+    g:WaitForServerFileLoad(0)
+    cursor(1, 5)
+    :LspRename foobaz
+    g:WaitForServerFileLoad(0)
+    assert_true(filereadable('foobaz.rs'))
     :%bw!
+    delete('foobaz.rs')
   finally
     :cd ../..
   endtry