" 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, "\[?62;22;c") call TermWait(buf) call term_sendkeys(buf, \ "\:call writefile([v:termda1, v:clipmethod], 'Xosc52result')\") call TermWait(buf) call WaitForAssert({-> \ assert_equal(["\[?62;22;c", "none"], readfile('Xosc52result'))}) " Yes support call term_sendkeys(buf, "\[?62;2;3;4;1;52;c") call TermWait(buf) call term_sendkeys(buf, \ "\:call writefile([v:termda1, v:clipmethod], 'Xosc52result')\") call TermWait(buf) call WaitForAssert({-> assert_equal(["\[?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, "\[?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, "\]52;c;" .. \ base64_encode(str2blob(["hello", "world!"])) .. "\\\") 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, "\]52;c;abc\\\") 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, "\") call TermWait(buf) call VerifyScreenDump(buf, 'Test_osc52_paste_04', {}) call StopMNVInTerminal(buf) endfunc " mnv: shiftwidth=2 sts=2 expandtab