diff options
Diffstat (limited to 'mnv/src/testdir/test_plugin_osc52.mnv')
| -rw-r--r-- | mnv/src/testdir/test_plugin_osc52.mnv | 96 |
1 files changed, 96 insertions, 0 deletions
diff --git a/mnv/src/testdir/test_plugin_osc52.mnv b/mnv/src/testdir/test_plugin_osc52.mnv new file mode 100644 index 0000000000..d6bf86d3bb --- /dev/null +++ b/mnv/src/testdir/test_plugin_osc52.mnv @@ -0,0 +1,96 @@ +" Test for the OSC 52 plugin + +CheckFeature clipboard_provider +CheckRunMNVInTerminal + +source util/screendump.mnv + +" Check if plugin correctly detects OSC 52 support if possible +func Test_osc52_detect() + let lines =<< trim END + let g:osc52_no_da1 = 1 + packadd osc52 + set clipmethod=osc52 + END + call writefile(lines, "Xosc52.mnv", "D") + defer delete("Xosc52result") + + let buf = RunMNVInTerminal("-S Xosc52.mnv", {}) + + " The plugin creates an autocmd listening for DA1 responses + + " No support + call term_sendkeys(buf, "\<Esc>[?62;22;c") + call TermWait(buf) + + call term_sendkeys(buf, + \ "\<Esc>:call writefile([v:termda1, v:clipmethod], 'Xosc52result')\<CR>") + call TermWait(buf) + call WaitForAssert({-> + \ assert_equal(["\<Esc>[?62;22;c", "none"], readfile('Xosc52result'))}) + + " Yes support + call term_sendkeys(buf, "\<Esc>[?62;2;3;4;1;52;c") + call TermWait(buf) + call term_sendkeys(buf, + \ "\<Esc>:call writefile([v:termda1, v:clipmethod], 'Xosc52result')\<CR>") + call TermWait(buf) + call WaitForAssert({-> assert_equal(["\<Esc>[?62;2;3;4;1;52;c", "osc52"], + \ readfile('Xosc52result'))}) + + call StopMNVInTerminal(buf) +endfunc + +" Test if pasting works +func Test_osc52_paste() + CheckScreendump + + let lines =<< trim END + let g:osc52_no_da1 = 1 + packadd osc52 + set clipmethod=osc52 + redraw! + END + call writefile(lines, "Xosc52.mnv", "D") + + let buf = RunMNVInTerminal("-S Xosc52.mnv", {}) + + call term_sendkeys(buf, "\<Esc>[?52;c") + call TermWait(buf) + + call term_sendkeys(buf, "\"+p") + call TermWait(buf) + + " Check to see if message is shown after a second of waiting for a response + sleep 1500m + call VerifyScreenDump(buf, 'Test_osc52_paste_01', {}) + + call term_sendkeys(buf, "\<Esc>]52;c;" .. + \ base64_encode(str2blob(["hello", "world!"])) .. "\<Esc>\\") + call TermWait(buf) + + " Check if message is gone + call VerifyScreenDump(buf, 'Test_osc52_paste_02', {}) + + " Test when invalid base64 content received (should emit a message) + call term_sendkeys(buf, "\"+p") + call TermWait(buf) + + call term_sendkeys(buf, "\<Esc>]52;c;abc\<Esc>\\") + call TermWait(buf) + + call VerifyScreenDump(buf, 'Test_osc52_paste_03', {}) + + " Test if interrupt is handled and message is outputted + call term_sendkeys(buf, "\"+p") + call TermWait(buf) + + call term_sendkeys(buf, "\<C-c>") + call TermWait(buf) + + call VerifyScreenDump(buf, 'Test_osc52_paste_04', {}) + + call StopMNVInTerminal(buf) +endfunc + +" mnv: shiftwidth=2 sts=2 expandtab |
