mirror of
https://github.com/neovim/neovim.git
synced 2025-02-25 18:55:25 -06:00
test: :! print binary data, control chars
closes #5442 closes #4142 ref #6618 ref #4376 ref #7844 ref #2958 ref #4338
This commit is contained in:
parent
538361955d
commit
352a51e831
@ -11,11 +11,11 @@ local funcs = helpers.funcs
|
|||||||
local request = helpers.request
|
local request = helpers.request
|
||||||
local meth_pcall = helpers.meth_pcall
|
local meth_pcall = helpers.meth_pcall
|
||||||
local command = helpers.command
|
local command = helpers.command
|
||||||
|
local iswin = helpers.iswin
|
||||||
|
|
||||||
local intchar2lua = global_helpers.intchar2lua
|
local intchar2lua = global_helpers.intchar2lua
|
||||||
local format_string = global_helpers.format_string
|
local format_string = global_helpers.format_string
|
||||||
local mergedicts_copy = global_helpers.mergedicts_copy
|
local mergedicts_copy = global_helpers.mergedicts_copy
|
||||||
local uname = global_helpers.uname
|
|
||||||
|
|
||||||
describe('api', function()
|
describe('api', function()
|
||||||
before_each(clear)
|
before_each(clear)
|
||||||
@ -101,7 +101,7 @@ describe('api', function()
|
|||||||
end)
|
end)
|
||||||
|
|
||||||
it('returns shell |:!| output', function()
|
it('returns shell |:!| output', function()
|
||||||
local win_lf = (uname() == 'Windows' and '\r') or ''
|
local win_lf = iswin() and '\r' or ''
|
||||||
eq(':!echo foo\r\n\nfoo'..win_lf..'\n', nvim('command_output', [[!echo foo]]))
|
eq(':!echo foo\r\n\nfoo'..win_lf..'\n', nvim('command_output', [[!echo foo]]))
|
||||||
end)
|
end)
|
||||||
|
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
local helpers = require('test.functional.helpers')(after_each)
|
local helpers = require('test.functional.helpers')(after_each)
|
||||||
local global_helpers = require('test.helpers')
|
|
||||||
local eq = helpers.eq
|
local eq = helpers.eq
|
||||||
local eval = helpers.eval
|
local eval = helpers.eval
|
||||||
local clear = helpers.clear
|
local clear = helpers.clear
|
||||||
@ -10,7 +9,7 @@ local funcs = helpers.funcs
|
|||||||
local Screen = require('test.functional.ui.screen')
|
local Screen = require('test.functional.ui.screen')
|
||||||
local command = helpers.command
|
local command = helpers.command
|
||||||
local feed = helpers.feed
|
local feed = helpers.feed
|
||||||
local uname = global_helpers.uname
|
local iswin = helpers.iswin
|
||||||
|
|
||||||
describe('execute()', function()
|
describe('execute()', function()
|
||||||
before_each(clear)
|
before_each(clear)
|
||||||
@ -123,7 +122,7 @@ describe('execute()', function()
|
|||||||
-- This deviates from vim behavior, but is consistent
|
-- This deviates from vim behavior, but is consistent
|
||||||
-- with how nvim currently displays the output.
|
-- with how nvim currently displays the output.
|
||||||
it('does capture shell-command output', function()
|
it('does capture shell-command output', function()
|
||||||
local win_lf = (uname() == 'Windows' and '\13') or ''
|
local win_lf = iswin() and '\13' or ''
|
||||||
eq('\n:!echo foo\r\n\nfoo'..win_lf..'\n', funcs.execute('!echo foo'))
|
eq('\n:!echo foo\r\n\nfoo'..win_lf..'\n', funcs.execute('!echo foo'))
|
||||||
end)
|
end)
|
||||||
|
|
||||||
|
@ -1,9 +1,14 @@
|
|||||||
|
local Screen = require('test.functional.ui.screen')
|
||||||
local session = require('test.functional.helpers')(after_each)
|
local session = require('test.functional.helpers')(after_each)
|
||||||
local child_session = require('test.functional.terminal.helpers')
|
local child_session = require('test.functional.terminal.helpers')
|
||||||
|
local eq = session.eq
|
||||||
if session.pending_win32(pending) then return end
|
local eval = session.eval
|
||||||
|
local feed = session.feed
|
||||||
|
local iswin = session.iswin
|
||||||
|
|
||||||
describe("shell command :!", function()
|
describe("shell command :!", function()
|
||||||
|
if session.pending_win32(pending) then return end
|
||||||
|
|
||||||
local screen
|
local screen
|
||||||
before_each(function()
|
before_each(function()
|
||||||
session.clear()
|
session.clear()
|
||||||
@ -66,3 +71,64 @@ describe("shell command :!", function()
|
|||||||
]])
|
]])
|
||||||
end)
|
end)
|
||||||
end)
|
end)
|
||||||
|
|
||||||
|
describe("shell command :!", function()
|
||||||
|
before_each(function()
|
||||||
|
session.clear()
|
||||||
|
end)
|
||||||
|
|
||||||
|
it("cat a binary file #4142", function()
|
||||||
|
feed(":exe 'silent !cat '.shellescape(v:progpath)<CR>")
|
||||||
|
eq(2, eval('1+1')) -- Still alive?
|
||||||
|
end)
|
||||||
|
|
||||||
|
it([[display \x08 char #4142]], function()
|
||||||
|
feed(":silent !echo \08<CR>")
|
||||||
|
eq(2, eval('1+1')) -- Still alive?
|
||||||
|
end)
|
||||||
|
|
||||||
|
it([[handles control codes]], function()
|
||||||
|
if iswin() then
|
||||||
|
pending('missing printf', function() end)
|
||||||
|
return
|
||||||
|
end
|
||||||
|
local screen = Screen.new(50, 4)
|
||||||
|
screen:attach()
|
||||||
|
-- Print TAB chars. #2958
|
||||||
|
feed([[:!printf '1\t2\t3'<CR>]])
|
||||||
|
screen:expect([[
|
||||||
|
~ |
|
||||||
|
:!printf '1\t2\t3' |
|
||||||
|
1 2 3 |
|
||||||
|
Press ENTER or type command to continue^ |
|
||||||
|
]])
|
||||||
|
feed([[<CR>]])
|
||||||
|
-- Print BELL control code. #4338
|
||||||
|
feed([[:!printf '\x07\x07\x07\x07text'<CR>]])
|
||||||
|
screen:expect([[
|
||||||
|
~ |
|
||||||
|
:!printf '\x07\x07\x07\x07text' |
|
||||||
|
^G^G^G^Gtext |
|
||||||
|
Press ENTER or type command to continue^ |
|
||||||
|
]])
|
||||||
|
feed([[<CR>]])
|
||||||
|
-- Print BS control code.
|
||||||
|
feed([[:echo system('printf ''\x08\n''')<CR>]])
|
||||||
|
screen:expect([[
|
||||||
|
~ |
|
||||||
|
^H |
|
||||||
|
|
|
||||||
|
Press ENTER or type command to continue^ |
|
||||||
|
]])
|
||||||
|
feed([[<CR>]])
|
||||||
|
-- Print LF control code.
|
||||||
|
feed([[:!printf '\n'<CR>]])
|
||||||
|
screen:expect([[
|
||||||
|
:!printf '\n' |
|
||||||
|
|
|
||||||
|
|
|
||||||
|
Press ENTER or type command to continue^ |
|
||||||
|
]])
|
||||||
|
feed([[<CR>]])
|
||||||
|
end)
|
||||||
|
end)
|
||||||
|
Loading…
Reference in New Issue
Block a user