diff --git a/test/functional/ex_cmds/bang_filter_spec.lua b/test/functional/ex_cmds/bang_filter_spec.lua index aaec983b73..636d732161 100644 --- a/test/functional/ex_cmds/bang_filter_spec.lua +++ b/test/functional/ex_cmds/bang_filter_spec.lua @@ -3,13 +3,14 @@ local helpers = require('test.functional.helpers')(after_each) local feed, command, clear = helpers.feed, helpers.command, helpers.clear local mkdir, write_file, rmdir = helpers.mkdir, helpers.write_file, helpers.rmdir +local feed_command = helpers.feed_command if helpers.pending_win32(pending) then return end local Screen = require('test.functional.ui.screen') -describe('issues', function() +describe(':! command', function() local screen before_each(function() @@ -19,7 +20,12 @@ describe('issues', function() write_file('bang_filter_spec/f1', 'f1') write_file('bang_filter_spec/f2', 'f2') write_file('bang_filter_spec/f3', 'f3') - screen = Screen.new() + 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) @@ -27,25 +33,37 @@ describe('issues', function() rmdir('bang_filter_spec') end) - it('#3269 Last line of shell output is not truncated', function() + 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 | - Press ENTER or type command to continue^ | + | + {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:expect([[ + {1:~ }| + {1:~ }| + {1:~ }| + :!cat test/functional/fixtures/shell_data.txt | + {2:^@^A^B^C^D^E^F^G^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}^ | + ]]) + end) + end) diff --git a/test/functional/fixtures/shell_data.txt b/test/functional/fixtures/shell_data.txt new file mode 100644 index 0000000000..ef3506c5b1 Binary files /dev/null and b/test/functional/fixtures/shell_data.txt differ diff --git a/test/functional/ui/output_spec.lua b/test/functional/ui/output_spec.lua index c6d564e8dc..da3f474e08 100644 --- a/test/functional/ui/output_spec.lua +++ b/test/functional/ui/output_spec.lua @@ -33,8 +33,8 @@ describe("shell command :!", function() {4:~ }| {4:~ }| {4:~ }| + {4:~ }| :!printf foo; sleep 200 | - | foo | {3:-- TERMINAL --} | ]]) @@ -56,11 +56,11 @@ describe("shell command :!", function() -- Final chunk of output should always be displayed, never skipped. -- (Throttling is non-deterministic, this test is merely a sanity check.) screen:expect([[ - XXXXXXXXXX 2996 | XXXXXXXXXX 2997 | XXXXXXXXXX 2998 | XXXXXXXXXX 2999 | XXXXXXXXXX 3000 | + | {10:Press ENTER or type command to continue}{1: } | {3:-- TERMINAL --} | ]])