From 60ce7d9e0a0606e20a17f90d78e9d8319114273b Mon Sep 17 00:00:00 2001 From: Björn Linse Date: Wed, 7 Feb 2018 10:23:19 +0100 Subject: shell: support bell --- test/functional/ui/output_spec.lua | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) (limited to 'test/functional/ui/output_spec.lua') diff --git a/test/functional/ui/output_spec.lua b/test/functional/ui/output_spec.lua index c42c0b26c6..de0b8ba69b 100644 --- a/test/functional/ui/output_spec.lua +++ b/test/functional/ui/output_spec.lua @@ -104,13 +104,16 @@ describe("shell command :!", function() ]]) feed([[]]) -- Print BELL control code. #4338 + screen.bell = false feed([[:!printf '\x07\x07\x07\x07text']]) screen:expect([[ ~ | :!printf '\x07\x07\x07\x07text' | - ^G^G^G^Gtext | + text | Press ENTER or type command to continue^ | - ]]) + ]], nil, nil, function() + eq(true, screen.bell) + end) feed([[]]) -- Print BS control code. feed([[:echo system('printf ''\x08\n''')]]) -- cgit From 01cdeff62656225ebbac237fb7c212d622ac43d3 Mon Sep 17 00:00:00 2001 From: Björn Linse Date: Wed, 7 Feb 2018 10:33:05 +0100 Subject: tests: integrate ex_cmds/bang_filter_spec into ui/output_spec they test the same thing. Filtering is tested elsewhere. --- test/functional/ui/output_spec.lua | 84 +++++++++++++++++++++++++++++++++----- 1 file changed, 73 insertions(+), 11 deletions(-) (limited to 'test/functional/ui/output_spec.lua') diff --git a/test/functional/ui/output_spec.lua b/test/functional/ui/output_spec.lua index de0b8ba69b..4e79c2e6cb 100644 --- a/test/functional/ui/output_spec.lua +++ b/test/functional/ui/output_spec.lua @@ -1,19 +1,23 @@ local Screen = require('test.functional.ui.screen') -local session = require('test.functional.helpers')(after_each) +local helpers = require('test.functional.helpers')(after_each) local child_session = require('test.functional.terminal.helpers') -local eq = session.eq -local eval = session.eval -local feed = session.feed -local iswin = session.iswin +local mkdir, write_file, rmdir = helpers.mkdir, helpers.write_file, helpers.rmdir +local eq = helpers.eq +local eval = helpers.eval +local feed = helpers.feed +local feed_command = helpers.feed_command +local iswin = helpers.iswin +local clear = helpers.clear +local command = helpers.command describe("shell command :!", function() - if session.pending_win32(pending) then return end + if helpers.pending_win32(pending) then return end local screen before_each(function() - session.clear() - screen = child_session.screen_setup(0, '["'..session.nvim_prog.. - '", "-u", "NONE", "-i", "NONE", "--cmd", "'..session.nvim_set..'"]') + clear() + screen = child_session.screen_setup(0, '["'..helpers.nvim_prog.. + '", "-u", "NONE", "-i", "NONE", "--cmd", "'..helpers.nvim_set..'"]') screen:expect([[ {1: } | {4:~ }| @@ -46,7 +50,7 @@ describe("shell command :!", function() end) it("throttles shell-command output greater than ~10KB", function() - if os.getenv("TRAVIS") and session.os_name() == "osx" then + if os.getenv("TRAVIS") and helpers.os_name() == "osx" then pending("[Unreliable on Travis macOS.]", function() end) return end @@ -74,7 +78,7 @@ end) describe("shell command :!", function() before_each(function() - session.clear() + clear() end) it("cat a binary file #4142", function() @@ -134,4 +138,62 @@ describe("shell command :!", function() ]]) feed([[]]) end) + + describe('', function() + local screen + before_each(function() + rmdir('bang_filter_spec') + mkdir('bang_filter_spec') + write_file('bang_filter_spec/f1', 'f1') + write_file('bang_filter_spec/f2', 'f2') + write_file('bang_filter_spec/f3', 'f3') + screen = Screen.new(53,10) + screen:set_default_attr_ids({ + [1] = {bold = true, foreground = Screen.colors.Blue1}, + [2] = {foreground = Screen.colors.Blue1}, + [3] = {bold = true, foreground = Screen.colors.SeaGreen4}, + }) + screen:attach() + end) + + after_each(function() + rmdir('bang_filter_spec') + end) + + it("doesn't truncate Last line of shell output #3269", function() + command([[nnoremap \l :!ls bang_filter_spec]]) + feed([[\l]]) + screen:expect([[ + {1:~ }| + {1:~ }| + {1:~ }| + {1:~ }| + :!ls bang_filter_spec | + f1 | + f2 | + f3 | + | + {3:Press ENTER or type command to continue}^ | + ]]) + end) + + it('handles binary and multibyte data', function() + feed_command('!cat test/functional/fixtures/shell_data.txt') + screen.bell = false + screen:expect([[ + {1:~ }| + {1:~ }| + {1:~ }| + :!cat test/functional/fixtures/shell_data.txt | + {2:^@^A^B^C^D^E^F^H} | + {2:^N^O^P^Q^R^S^T^U^V^W^X^Y^Z^[^\^]^^^_} | + ö 한글 {2:} | + t {2:} | + | + {3:Press ENTER or type command to continue}^ | + ]], nil, nil, function() + eq(true, screen.bell) + end) + end) + end) end) -- cgit From f75c4b39ece7b5f760892c1e18af449c5bb270c7 Mon Sep 17 00:00:00 2001 From: Björn Linse Date: Thu, 8 Feb 2018 15:11:56 +0100 Subject: shell: handle split-up UTF-8 sequences --- test/functional/ui/output_spec.lua | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) (limited to 'test/functional/ui/output_spec.lua') diff --git a/test/functional/ui/output_spec.lua b/test/functional/ui/output_spec.lua index 4e79c2e6cb..14f2091046 100644 --- a/test/functional/ui/output_spec.lua +++ b/test/functional/ui/output_spec.lua @@ -9,6 +9,7 @@ local feed_command = helpers.feed_command local iswin = helpers.iswin local clear = helpers.clear local command = helpers.command +local nvim_dir = helpers.nvim_dir describe("shell command :!", function() if helpers.pending_win32(pending) then return end @@ -195,5 +196,29 @@ describe("shell command :!", function() eq(true, screen.bell) end) end) + + it('handles multibyte sequences split over buffer boundaries', function() + command('cd '..nvim_dir) + local cmd + if iswin() then + cmd = '!shell-test UTF-8 ' + else + cmd = '!./shell-test UTF-8' + end + feed_command(cmd) + -- Note: only the first example of split composed char works + screen:expect([[ + {1:~ }| + {1:~ }| + :]]..cmd..[[ | + å | + ref: å̲ | + 1: å̲ | + 2: å ̲ | + 3: å ̲ | + | + {3:Press ENTER or type command to continue}^ | + ]]) + end) end) end) -- cgit From c03a847884c017a78e099beaa1b252e5f940c8e0 Mon Sep 17 00:00:00 2001 From: Jan Edmund Lazo Date: Tue, 3 Oct 2017 17:39:17 -0400 Subject: win: enable backtick_expansion and shell output tests --- test/functional/ui/output_spec.lua | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'test/functional/ui/output_spec.lua') diff --git a/test/functional/ui/output_spec.lua b/test/functional/ui/output_spec.lua index 14f2091046..4246020fab 100644 --- a/test/functional/ui/output_spec.lua +++ b/test/functional/ui/output_spec.lua @@ -162,14 +162,19 @@ describe("shell command :!", function() end) it("doesn't truncate Last line of shell output #3269", function() - command([[nnoremap \l :!ls bang_filter_spec]]) + command(helpers.iswin() + and [[nnoremap \l :!dir /b bang_filter_spec]] + or [[nnoremap \l :!ls bang_filter_spec]]) + local result = (helpers.iswin() + and [[:!dir /b bang_filter_spec]] + or [[:!ls bang_filter_spec ]]) feed([[\l]]) screen:expect([[ {1:~ }| {1:~ }| {1:~ }| {1:~ }| - :!ls bang_filter_spec | + ]]..result..[[ | f1 | f2 | f3 | -- cgit