aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/testdir/test_prompt_buffer.vim
diff options
context:
space:
mode:
authorJosh Rahm <joshuarahm@gmail.com>2023-11-30 20:35:25 +0000
committerJosh Rahm <joshuarahm@gmail.com>2023-11-30 20:35:25 +0000
commit1b7b916b7631ddf73c38e3a0070d64e4636cb2f3 (patch)
treecd08258054db80bb9a11b1061bb091c70b76926a /src/nvim/testdir/test_prompt_buffer.vim
parenteaa89c11d0f8aefbb512de769c6c82f61a8baca3 (diff)
parent4a8bf24ac690004aedf5540fa440e788459e5e34 (diff)
downloadrneovim-aucmd_textputpost.tar.gz
rneovim-aucmd_textputpost.tar.bz2
rneovim-aucmd_textputpost.zip
Merge remote-tracking branch 'upstream/master' into aucmd_textputpostaucmd_textputpost
Diffstat (limited to 'src/nvim/testdir/test_prompt_buffer.vim')
-rw-r--r--src/nvim/testdir/test_prompt_buffer.vim262
1 files changed, 0 insertions, 262 deletions
diff --git a/src/nvim/testdir/test_prompt_buffer.vim b/src/nvim/testdir/test_prompt_buffer.vim
deleted file mode 100644
index b8f6c5240c..0000000000
--- a/src/nvim/testdir/test_prompt_buffer.vim
+++ /dev/null
@@ -1,262 +0,0 @@
-" Tests for setting 'buftype' to "prompt"
-
-source check.vim
-" Nvim's channel implementation differs from Vim's
-" CheckFeature channel
-
-source shared.vim
-source screendump.vim
-
-func CanTestPromptBuffer()
- " We need to use a terminal window to be able to feed keys without leaving
- " Insert mode.
- " Nvim's terminal implementation differs from Vim's
- " CheckFeature terminal
-
- " TODO: make the tests work on MS-Windows
- CheckNotMSWindows
-endfunc
-
-func WriteScript(name)
- call writefile([
- \ 'func TextEntered(text)',
- \ ' if a:text == "exit"',
- \ ' " Reset &modified to allow the buffer to be closed.',
- \ ' set nomodified',
- \ ' stopinsert',
- \ ' close',
- \ ' else',
- \ ' " Add the output above the current prompt.',
- \ ' call append(line("$") - 1, "Command: \"" . a:text . "\"")',
- \ ' " Reset &modified to allow the buffer to be closed.',
- \ ' set nomodified',
- \ ' call timer_start(20, {id -> TimerFunc(a:text)})',
- \ ' endif',
- \ 'endfunc',
- \ '',
- \ 'func TimerFunc(text)',
- \ ' " Add the output above the current prompt.',
- \ ' call append(line("$") - 1, "Result: \"" . a:text . "\"")',
- \ ' " Reset &modified to allow the buffer to be closed.',
- \ ' set nomodified',
- \ 'endfunc',
- \ '',
- \ 'func SwitchWindows()',
- \ ' call timer_start(0, {-> execute("wincmd p|wincmd p", "")})',
- \ 'endfunc',
- \ '',
- \ 'call setline(1, "other buffer")',
- \ 'set nomodified',
- \ 'new',
- \ 'set buftype=prompt',
- \ 'call prompt_setcallback(bufnr(""), function("TextEntered"))',
- \ 'eval bufnr("")->prompt_setprompt("cmd: ")',
- \ 'startinsert',
- \ ], a:name)
-endfunc
-
-func Test_prompt_basic()
- throw 'skipped: TODO'
- call CanTestPromptBuffer()
- let scriptName = 'XpromptscriptBasic'
- call WriteScript(scriptName)
-
- let buf = RunVimInTerminal('-S ' . scriptName, {})
- call WaitForAssert({-> assert_equal('cmd:', term_getline(buf, 1))})
-
- call term_sendkeys(buf, "hello\<CR>")
- call WaitForAssert({-> assert_equal('cmd: hello', term_getline(buf, 1))})
- call WaitForAssert({-> assert_equal('Command: "hello"', term_getline(buf, 2))})
- call WaitForAssert({-> assert_equal('Result: "hello"', term_getline(buf, 3))})
-
- call term_sendkeys(buf, "exit\<CR>")
- call WaitForAssert({-> assert_equal('other buffer', term_getline(buf, 1))})
-
- call StopVimInTerminal(buf)
- call delete(scriptName)
-endfunc
-
-func Test_prompt_editing()
- throw 'skipped: TODO'
- call CanTestPromptBuffer()
- let scriptName = 'XpromptscriptEditing'
- call WriteScript(scriptName)
-
- let buf = RunVimInTerminal('-S ' . scriptName, {})
- call WaitForAssert({-> assert_equal('cmd:', term_getline(buf, 1))})
-
- let bs = "\<BS>"
- call term_sendkeys(buf, "hello" . bs . bs)
- call WaitForAssert({-> assert_equal('cmd: hel', term_getline(buf, 1))})
-
- let left = "\<Left>"
- call term_sendkeys(buf, left . left . left . bs . '-')
- call WaitForAssert({-> assert_equal('cmd: -hel', term_getline(buf, 1))})
-
- call term_sendkeys(buf, "\<C-O>lz")
- call WaitForAssert({-> assert_equal('cmd: -hzel', term_getline(buf, 1))})
-
- let end = "\<End>"
- call term_sendkeys(buf, end . "x")
- call WaitForAssert({-> assert_equal('cmd: -hzelx', term_getline(buf, 1))})
-
- call term_sendkeys(buf, "\<C-U>exit\<CR>")
- call WaitForAssert({-> assert_equal('other buffer', term_getline(buf, 1))})
-
- call StopVimInTerminal(buf)
- call delete(scriptName)
-endfunc
-
-func Test_prompt_switch_windows()
- throw 'skipped: TODO'
- call CanTestPromptBuffer()
- let scriptName = 'XpromptSwitchWindows'
- call WriteScript(scriptName)
-
- let buf = RunVimInTerminal('-S ' . scriptName, {'rows': 12})
- call WaitForAssert({-> assert_equal('cmd:', term_getline(buf, 1))})
- call WaitForAssert({-> assert_match('-- INSERT --', term_getline(buf, 12))})
-
- call term_sendkeys(buf, "\<C-O>:call SwitchWindows()\<CR>")
- call term_wait(buf, 50)
- call WaitForAssert({-> assert_match('-- INSERT --', term_getline(buf, 12))})
-
- call term_sendkeys(buf, "\<Esc>")
- call term_wait(buf, 50)
- call WaitForAssert({-> assert_match('^ *$', term_getline(buf, 12))})
-
- call StopVimInTerminal(buf)
- call delete(scriptName)
-endfunc
-
-func Test_prompt_garbage_collect()
- func MyPromptCallback(x, text)
- " NOP
- endfunc
- func MyPromptInterrupt(x)
- " NOP
- endfunc
-
- new
- set buftype=prompt
- eval bufnr('')->prompt_setcallback(function('MyPromptCallback', [{}]))
- eval bufnr('')->prompt_setinterrupt(function('MyPromptInterrupt', [{}]))
- call test_garbagecollect_now()
- " Must not crash
- call feedkeys("\<CR>\<C-C>", 'xt')
- call assert_true(v:true)
-
- call assert_fails("call prompt_setcallback(bufnr(), [])", 'E921:')
- call assert_equal(0, prompt_setcallback({}, ''))
- call assert_fails("call prompt_setinterrupt(bufnr(), [])", 'E921:')
- call assert_equal(0, prompt_setinterrupt({}, ''))
-
- delfunc MyPromptCallback
- bwipe!
-endfunc
-
-func Test_prompt_backspace()
- new
- set buftype=prompt
- call feedkeys("A123456\<Left>\<BS>\<Esc>", 'xt')
- call assert_equal('% 12346', getline(1))
- bwipe!
-endfunc
-
-" Test for editing the prompt buffer
-func Test_prompt_buffer_edit()
- new
- set buftype=prompt
- normal! i
- call assert_beeps('normal! dd')
- call assert_beeps('normal! ~')
- call assert_beeps('normal! o')
- call assert_beeps('normal! O')
- call assert_beeps('normal! p')
- call assert_beeps('normal! P')
- call assert_beeps('normal! u')
- call assert_beeps('normal! ra')
- call assert_beeps('normal! s')
- call assert_beeps('normal! S')
- call assert_beeps("normal! \<C-A>")
- call assert_beeps("normal! \<C-X>")
- call assert_beeps("normal! dp")
- call assert_beeps("normal! do")
- " pressing CTRL-W in the prompt buffer should trigger the window commands
- call assert_equal(1, winnr())
- exe "normal A\<C-W>\<C-W>"
- call assert_equal(2, winnr())
- wincmd w
- close!
- call assert_equal(0, prompt_setprompt([], ''))
-endfunc
-
-func Test_prompt_buffer_getbufinfo()
- new
- call assert_equal('', prompt_getprompt('%'))
- call assert_equal('', prompt_getprompt(bufnr('%')))
- let another_buffer = bufnr('%')
-
- set buftype=prompt
- call assert_equal('% ', prompt_getprompt('%'))
- call prompt_setprompt( bufnr( '%' ), 'This is a test: ' )
- call assert_equal('This is a test: ', prompt_getprompt('%'))
-
- call prompt_setprompt( bufnr( '%' ), '' )
- call assert_equal('', '%'->prompt_getprompt())
-
- call prompt_setprompt( bufnr( '%' ), 'Another: ' )
- call assert_equal('Another: ', prompt_getprompt('%'))
- let another = bufnr('%')
-
- new
-
- call assert_equal('', prompt_getprompt('%'))
- call assert_equal('Another: ', prompt_getprompt(another))
-
- " Doesn't exist
- let buffers_before = len( getbufinfo() )
- call assert_equal('', prompt_getprompt( bufnr('$') + 1))
- call assert_equal(buffers_before, len( getbufinfo()))
-
- " invalid type
- call assert_fails('call prompt_getprompt({})', 'E728:')
-
- %bwipe!
-endfunc
-
-func Test_prompt_while_writing_to_hidden_buffer()
- throw 'skipped: TODO'
- call CanTestPromptBuffer()
- CheckUnix
-
- " Make a job continuously write to a hidden buffer, check that the prompt
- " buffer is not affected.
- let scriptName = 'XpromptscriptHiddenBuf'
- let script =<< trim END
- set buftype=prompt
- call prompt_setprompt( bufnr(), 'cmd:' )
- let job = job_start(['/bin/sh', '-c',
- \ 'while true;
- \ do echo line;
- \ sleep 0.1;
- \ done'], #{out_io: 'buffer', out_name: ''})
- startinsert
- END
- eval script->writefile(scriptName)
-
- let buf = RunVimInTerminal('-S ' .. scriptName, {})
- call WaitForAssert({-> assert_equal('cmd:', term_getline(buf, 1))})
-
- call term_sendkeys(buf, 'test')
- call WaitForAssert({-> assert_equal('cmd:test', term_getline(buf, 1))})
- call term_sendkeys(buf, 'test')
- call WaitForAssert({-> assert_equal('cmd:testtest', term_getline(buf, 1))})
- call term_sendkeys(buf, 'test')
- call WaitForAssert({-> assert_equal('cmd:testtesttest', term_getline(buf, 1))})
-
- call StopVimInTerminal(buf)
- call delete(scriptName)
-endfunc
-
-" vim: shiftwidth=2 sts=2 expandtab