annotate src/testdir/test_terminal.vim @ 13860:7f892e37b017 v8.0.1801

patch 8.0.1801: MS-Windows: redirecting terminal output does not work commit https://github.com/vim/vim/commit/f25329cb94e481999e8b08d886cc0f0169e2020c Author: Bram Moolenaar <Bram@vim.org> Date: Sun May 6 21:49:32 2018 +0200 patch 8.0.1801: MS-Windows: redirecting terminal output does not work Problem: MS-Windows: redirecting terminal output does not work. Solution: Intercept the text written to the terminal and write it to the file.
author Christian Brabandt <cb@256bit.org>
date Sun, 06 May 2018 22:00:07 +0200
parents 8e583c52eb44
children ea0e6c71ba51
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
11846
1c65cad8b967 patch 8.0.0804: terminal window functions not yet implemented
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
1 " Tests for the terminal window.
1c65cad8b967 patch 8.0.0804: terminal window functions not yet implemented
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
2
12156
ee8ead988f2c patch 8.0.0958: terminal test fails on Windows when winpty dll is missing
Christian Brabandt <cb@256bit.org>
parents: 12154
diff changeset
3 if !has('terminal')
11846
1c65cad8b967 patch 8.0.0804: terminal window functions not yet implemented
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
4 finish
1c65cad8b967 patch 8.0.0804: terminal window functions not yet implemented
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
5 endif
1c65cad8b967 patch 8.0.0804: terminal window functions not yet implemented
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
6
1c65cad8b967 patch 8.0.0804: terminal window functions not yet implemented
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
7 source shared.vim
13438
33eea5ce5415 patch 8.0.1593: :qall never exits with an active terminal window
Christian Brabandt <cb@256bit.org>
parents: 13435
diff changeset
8 source screendump.vim
11846
1c65cad8b967 patch 8.0.0804: terminal window functions not yet implemented
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
9
12062
191ccece2f5d patch 8.0.0911: terminal test takes too long
Christian Brabandt <cb@256bit.org>
parents: 12060
diff changeset
10 let s:python = PythonProg()
191ccece2f5d patch 8.0.0911: terminal test takes too long
Christian Brabandt <cb@256bit.org>
parents: 12060
diff changeset
11
11917
00836eb177cb patch 8.0.0838: buffer hangs around whem terminal window is closed
Christian Brabandt <cb@256bit.org>
parents: 11912
diff changeset
12 " Open a terminal with a shell, assign the job to g:job and return the buffer
00836eb177cb patch 8.0.0838: buffer hangs around whem terminal window is closed
Christian Brabandt <cb@256bit.org>
parents: 11912
diff changeset
13 " number.
12043
2796a2c9fc17 patch 8.0.0902: cannot specify directory or environment for a job
Christian Brabandt <cb@256bit.org>
parents: 12031
diff changeset
14 func Run_shell_in_terminal(options)
12724
17c257dd2438 patch 8.0.1240: MS-Windows: term_start() does not support environment
Christian Brabandt <cb@256bit.org>
parents: 12650
diff changeset
15 if has('win32')
17c257dd2438 patch 8.0.1240: MS-Windows: term_start() does not support environment
Christian Brabandt <cb@256bit.org>
parents: 12650
diff changeset
16 let buf = term_start([&shell,'/k'], a:options)
17c257dd2438 patch 8.0.1240: MS-Windows: term_start() does not support environment
Christian Brabandt <cb@256bit.org>
parents: 12650
diff changeset
17 else
17c257dd2438 patch 8.0.1240: MS-Windows: term_start() does not support environment
Christian Brabandt <cb@256bit.org>
parents: 12650
diff changeset
18 let buf = term_start(&shell, a:options)
17c257dd2438 patch 8.0.1240: MS-Windows: term_start() does not support environment
Christian Brabandt <cb@256bit.org>
parents: 12650
diff changeset
19 endif
11846
1c65cad8b967 patch 8.0.0804: terminal window functions not yet implemented
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
20
1c65cad8b967 patch 8.0.0804: terminal window functions not yet implemented
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
21 let termlist = term_list()
1c65cad8b967 patch 8.0.0804: terminal window functions not yet implemented
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
22 call assert_equal(1, len(termlist))
1c65cad8b967 patch 8.0.0804: terminal window functions not yet implemented
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
23 call assert_equal(buf, termlist[0])
1c65cad8b967 patch 8.0.0804: terminal window functions not yet implemented
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
24
1c65cad8b967 patch 8.0.0804: terminal window functions not yet implemented
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
25 let g:job = term_getjob(buf)
1c65cad8b967 patch 8.0.0804: terminal window functions not yet implemented
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
26 call assert_equal(v:t_job, type(g:job))
1c65cad8b967 patch 8.0.0804: terminal window functions not yet implemented
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
27
11973
aec3df2af27c patch 8.0.0867: job and channel in a dict value not quoted
Christian Brabandt <cb@256bit.org>
parents: 11957
diff changeset
28 let string = string({'job': term_getjob(buf)})
aec3df2af27c patch 8.0.0867: job and channel in a dict value not quoted
Christian Brabandt <cb@256bit.org>
parents: 11957
diff changeset
29 call assert_match("{'job': 'process \\d\\+ run'}", string)
aec3df2af27c patch 8.0.0867: job and channel in a dict value not quoted
Christian Brabandt <cb@256bit.org>
parents: 11957
diff changeset
30
11917
00836eb177cb patch 8.0.0838: buffer hangs around whem terminal window is closed
Christian Brabandt <cb@256bit.org>
parents: 11912
diff changeset
31 return buf
00836eb177cb patch 8.0.0838: buffer hangs around whem terminal window is closed
Christian Brabandt <cb@256bit.org>
parents: 11912
diff changeset
32 endfunc
00836eb177cb patch 8.0.0838: buffer hangs around whem terminal window is closed
Christian Brabandt <cb@256bit.org>
parents: 11912
diff changeset
33
11912
22658e33203f patch 8.0.0836: can abandon a terminal buffer after making a change
Christian Brabandt <cb@256bit.org>
parents: 11906
diff changeset
34 func Test_terminal_basic()
13835
8e583c52eb44 patch 8.0.1789: BufWinEnter does not work well for a terminal window
Christian Brabandt <cb@256bit.org>
parents: 13829
diff changeset
35 au TerminalOpen * let b:done = 'yes'
12043
2796a2c9fc17 patch 8.0.0902: cannot specify directory or environment for a job
Christian Brabandt <cb@256bit.org>
parents: 12031
diff changeset
36 let buf = Run_shell_in_terminal({})
12505
5cf248ecb6e3 patch 8.0.1131: not easy to trigger an autocommand for new terminal window
Christian Brabandt <cb@256bit.org>
parents: 12479
diff changeset
37
11933
d033653d3df8 patch 8.0.0846: cannot get the name of the pty of a job
Christian Brabandt <cb@256bit.org>
parents: 11923
diff changeset
38 if has("unix")
12389
d0cf7f71b95b patch 8.0.1074: ":term NONE" does not work on MS-Windows
Christian Brabandt <cb@256bit.org>
parents: 12357
diff changeset
39 call assert_match('^/dev/', job_info(g:job).tty_out)
d0cf7f71b95b patch 8.0.1074: ":term NONE" does not work on MS-Windows
Christian Brabandt <cb@256bit.org>
parents: 12357
diff changeset
40 call assert_match('^/dev/', term_gettty(''))
11933
d033653d3df8 patch 8.0.0846: cannot get the name of the pty of a job
Christian Brabandt <cb@256bit.org>
parents: 11923
diff changeset
41 else
12389
d0cf7f71b95b patch 8.0.1074: ":term NONE" does not work on MS-Windows
Christian Brabandt <cb@256bit.org>
parents: 12357
diff changeset
42 call assert_match('^\\\\.\\pipe\\', job_info(g:job).tty_out)
d0cf7f71b95b patch 8.0.1074: ":term NONE" does not work on MS-Windows
Christian Brabandt <cb@256bit.org>
parents: 12357
diff changeset
43 call assert_match('^\\\\.\\pipe\\', term_gettty(''))
11933
d033653d3df8 patch 8.0.0846: cannot get the name of the pty of a job
Christian Brabandt <cb@256bit.org>
parents: 11923
diff changeset
44 endif
12112
6afc7339c2ad patch 8.0.0936: mode() returns wrong value for a terminal window
Christian Brabandt <cb@256bit.org>
parents: 12106
diff changeset
45 call assert_equal('t', mode())
12505
5cf248ecb6e3 patch 8.0.1131: not easy to trigger an autocommand for new terminal window
Christian Brabandt <cb@256bit.org>
parents: 12479
diff changeset
46 call assert_equal('yes', b:done)
12112
6afc7339c2ad patch 8.0.0936: mode() returns wrong value for a terminal window
Christian Brabandt <cb@256bit.org>
parents: 12106
diff changeset
47 call assert_match('%aR[^\n]*running]', execute('ls'))
13555
78ead137b2ad patch 8.0.1651: cannot filter :ls output for terminal buffers
Christian Brabandt <cb@256bit.org>
parents: 13547
diff changeset
48 call assert_match('%aR[^\n]*running]', execute('ls R'))
78ead137b2ad patch 8.0.1651: cannot filter :ls output for terminal buffers
Christian Brabandt <cb@256bit.org>
parents: 13547
diff changeset
49 call assert_notmatch('%[^\n]*running]', execute('ls F'))
78ead137b2ad patch 8.0.1651: cannot filter :ls output for terminal buffers
Christian Brabandt <cb@256bit.org>
parents: 13547
diff changeset
50 call assert_notmatch('%[^\n]*running]', execute('ls ?'))
12112
6afc7339c2ad patch 8.0.0936: mode() returns wrong value for a terminal window
Christian Brabandt <cb@256bit.org>
parents: 12106
diff changeset
51
11917
00836eb177cb patch 8.0.0838: buffer hangs around whem terminal window is closed
Christian Brabandt <cb@256bit.org>
parents: 11912
diff changeset
52 call Stop_shell_in_terminal(buf)
00836eb177cb patch 8.0.0838: buffer hangs around whem terminal window is closed
Christian Brabandt <cb@256bit.org>
parents: 11912
diff changeset
53 call term_wait(buf)
12112
6afc7339c2ad patch 8.0.0936: mode() returns wrong value for a terminal window
Christian Brabandt <cb@256bit.org>
parents: 12106
diff changeset
54 call assert_equal('n', mode())
6afc7339c2ad patch 8.0.0936: mode() returns wrong value for a terminal window
Christian Brabandt <cb@256bit.org>
parents: 12106
diff changeset
55 call assert_match('%aF[^\n]*finished]', execute('ls'))
13555
78ead137b2ad patch 8.0.1651: cannot filter :ls output for terminal buffers
Christian Brabandt <cb@256bit.org>
parents: 13547
diff changeset
56 call assert_match('%aF[^\n]*finished]', execute('ls F'))
78ead137b2ad patch 8.0.1651: cannot filter :ls output for terminal buffers
Christian Brabandt <cb@256bit.org>
parents: 13547
diff changeset
57 call assert_notmatch('%[^\n]*finished]', execute('ls R'))
78ead137b2ad patch 8.0.1651: cannot filter :ls output for terminal buffers
Christian Brabandt <cb@256bit.org>
parents: 13547
diff changeset
58 call assert_notmatch('%[^\n]*finished]', execute('ls ?'))
11912
22658e33203f patch 8.0.0836: can abandon a terminal buffer after making a change
Christian Brabandt <cb@256bit.org>
parents: 11906
diff changeset
59
11917
00836eb177cb patch 8.0.0838: buffer hangs around whem terminal window is closed
Christian Brabandt <cb@256bit.org>
parents: 11912
diff changeset
60 " closing window wipes out the terminal buffer a with finished job
00836eb177cb patch 8.0.0838: buffer hangs around whem terminal window is closed
Christian Brabandt <cb@256bit.org>
parents: 11912
diff changeset
61 close
00836eb177cb patch 8.0.0838: buffer hangs around whem terminal window is closed
Christian Brabandt <cb@256bit.org>
parents: 11912
diff changeset
62 call assert_equal("", bufname(buf))
00836eb177cb patch 8.0.0838: buffer hangs around whem terminal window is closed
Christian Brabandt <cb@256bit.org>
parents: 11912
diff changeset
63
13835
8e583c52eb44 patch 8.0.1789: BufWinEnter does not work well for a terminal window
Christian Brabandt <cb@256bit.org>
parents: 13829
diff changeset
64 au! TerminalOpen
11912
22658e33203f patch 8.0.0836: can abandon a terminal buffer after making a change
Christian Brabandt <cb@256bit.org>
parents: 11906
diff changeset
65 unlet g:job
22658e33203f patch 8.0.0836: can abandon a terminal buffer after making a change
Christian Brabandt <cb@256bit.org>
parents: 11906
diff changeset
66 endfunc
22658e33203f patch 8.0.0836: can abandon a terminal buffer after making a change
Christian Brabandt <cb@256bit.org>
parents: 11906
diff changeset
67
22658e33203f patch 8.0.0836: can abandon a terminal buffer after making a change
Christian Brabandt <cb@256bit.org>
parents: 11906
diff changeset
68 func Test_terminal_make_change()
12043
2796a2c9fc17 patch 8.0.0902: cannot specify directory or environment for a job
Christian Brabandt <cb@256bit.org>
parents: 12031
diff changeset
69 let buf = Run_shell_in_terminal({})
11917
00836eb177cb patch 8.0.0838: buffer hangs around whem terminal window is closed
Christian Brabandt <cb@256bit.org>
parents: 11912
diff changeset
70 call Stop_shell_in_terminal(buf)
11912
22658e33203f patch 8.0.0836: can abandon a terminal buffer after making a change
Christian Brabandt <cb@256bit.org>
parents: 11906
diff changeset
71 call term_wait(buf)
22658e33203f patch 8.0.0836: can abandon a terminal buffer after making a change
Christian Brabandt <cb@256bit.org>
parents: 11906
diff changeset
72
22658e33203f patch 8.0.0836: can abandon a terminal buffer after making a change
Christian Brabandt <cb@256bit.org>
parents: 11906
diff changeset
73 setlocal modifiable
22658e33203f patch 8.0.0836: can abandon a terminal buffer after making a change
Christian Brabandt <cb@256bit.org>
parents: 11906
diff changeset
74 exe "normal Axxx\<Esc>"
22658e33203f patch 8.0.0836: can abandon a terminal buffer after making a change
Christian Brabandt <cb@256bit.org>
parents: 11906
diff changeset
75 call assert_fails(buf . 'bwipe', 'E517')
22658e33203f patch 8.0.0836: can abandon a terminal buffer after making a change
Christian Brabandt <cb@256bit.org>
parents: 11906
diff changeset
76 undo
22658e33203f patch 8.0.0836: can abandon a terminal buffer after making a change
Christian Brabandt <cb@256bit.org>
parents: 11906
diff changeset
77
11846
1c65cad8b967 patch 8.0.0804: terminal window functions not yet implemented
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
78 exe buf . 'bwipe'
1c65cad8b967 patch 8.0.0804: terminal window functions not yet implemented
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
79 unlet g:job
1c65cad8b967 patch 8.0.0804: terminal window functions not yet implemented
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
80 endfunc
1c65cad8b967 patch 8.0.0804: terminal window functions not yet implemented
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
81
11917
00836eb177cb patch 8.0.0838: buffer hangs around whem terminal window is closed
Christian Brabandt <cb@256bit.org>
parents: 11912
diff changeset
82 func Test_terminal_wipe_buffer()
12043
2796a2c9fc17 patch 8.0.0902: cannot specify directory or environment for a job
Christian Brabandt <cb@256bit.org>
parents: 12031
diff changeset
83 let buf = Run_shell_in_terminal({})
11957
bc0fee081e1e patch 8.0.0858: can exit while a terminal is still running a job
Christian Brabandt <cb@256bit.org>
parents: 11955
diff changeset
84 call assert_fails(buf . 'bwipe', 'E517')
bc0fee081e1e patch 8.0.0858: can exit while a terminal is still running a job
Christian Brabandt <cb@256bit.org>
parents: 11955
diff changeset
85 exe buf . 'bwipe!'
13798
415185e2c970 patch 8.0.1771: in tests, when WaitFor() fails it doesn't say why
Christian Brabandt <cb@256bit.org>
parents: 13750
diff changeset
86 call WaitForAssert({-> assert_equal('dead', job_status(g:job))})
11917
00836eb177cb patch 8.0.0838: buffer hangs around whem terminal window is closed
Christian Brabandt <cb@256bit.org>
parents: 11912
diff changeset
87 call assert_equal("", bufname(buf))
00836eb177cb patch 8.0.0838: buffer hangs around whem terminal window is closed
Christian Brabandt <cb@256bit.org>
parents: 11912
diff changeset
88
00836eb177cb patch 8.0.0838: buffer hangs around whem terminal window is closed
Christian Brabandt <cb@256bit.org>
parents: 11912
diff changeset
89 unlet g:job
00836eb177cb patch 8.0.0838: buffer hangs around whem terminal window is closed
Christian Brabandt <cb@256bit.org>
parents: 11912
diff changeset
90 endfunc
00836eb177cb patch 8.0.0838: buffer hangs around whem terminal window is closed
Christian Brabandt <cb@256bit.org>
parents: 11912
diff changeset
91
12479
65c7769ef6d1 patch 8.0.1119: quitting a split terminal window kills the job
Christian Brabandt <cb@256bit.org>
parents: 12475
diff changeset
92 func Test_terminal_split_quit()
65c7769ef6d1 patch 8.0.1119: quitting a split terminal window kills the job
Christian Brabandt <cb@256bit.org>
parents: 12475
diff changeset
93 let buf = Run_shell_in_terminal({})
65c7769ef6d1 patch 8.0.1119: quitting a split terminal window kills the job
Christian Brabandt <cb@256bit.org>
parents: 12475
diff changeset
94 call term_wait(buf)
65c7769ef6d1 patch 8.0.1119: quitting a split terminal window kills the job
Christian Brabandt <cb@256bit.org>
parents: 12475
diff changeset
95 split
65c7769ef6d1 patch 8.0.1119: quitting a split terminal window kills the job
Christian Brabandt <cb@256bit.org>
parents: 12475
diff changeset
96 quit!
65c7769ef6d1 patch 8.0.1119: quitting a split terminal window kills the job
Christian Brabandt <cb@256bit.org>
parents: 12475
diff changeset
97 call term_wait(buf)
65c7769ef6d1 patch 8.0.1119: quitting a split terminal window kills the job
Christian Brabandt <cb@256bit.org>
parents: 12475
diff changeset
98 sleep 50m
65c7769ef6d1 patch 8.0.1119: quitting a split terminal window kills the job
Christian Brabandt <cb@256bit.org>
parents: 12475
diff changeset
99 call assert_equal('run', job_status(g:job))
65c7769ef6d1 patch 8.0.1119: quitting a split terminal window kills the job
Christian Brabandt <cb@256bit.org>
parents: 12475
diff changeset
100
65c7769ef6d1 patch 8.0.1119: quitting a split terminal window kills the job
Christian Brabandt <cb@256bit.org>
parents: 12475
diff changeset
101 quit!
13798
415185e2c970 patch 8.0.1771: in tests, when WaitFor() fails it doesn't say why
Christian Brabandt <cb@256bit.org>
parents: 13750
diff changeset
102 call WaitForAssert({-> assert_equal('dead', job_status(g:job))})
12479
65c7769ef6d1 patch 8.0.1119: quitting a split terminal window kills the job
Christian Brabandt <cb@256bit.org>
parents: 12475
diff changeset
103
65c7769ef6d1 patch 8.0.1119: quitting a split terminal window kills the job
Christian Brabandt <cb@256bit.org>
parents: 12475
diff changeset
104 exe buf . 'bwipe'
65c7769ef6d1 patch 8.0.1119: quitting a split terminal window kills the job
Christian Brabandt <cb@256bit.org>
parents: 12475
diff changeset
105 unlet g:job
65c7769ef6d1 patch 8.0.1119: quitting a split terminal window kills the job
Christian Brabandt <cb@256bit.org>
parents: 12475
diff changeset
106 endfunc
65c7769ef6d1 patch 8.0.1119: quitting a split terminal window kills the job
Christian Brabandt <cb@256bit.org>
parents: 12475
diff changeset
107
11917
00836eb177cb patch 8.0.0838: buffer hangs around whem terminal window is closed
Christian Brabandt <cb@256bit.org>
parents: 11912
diff changeset
108 func Test_terminal_hide_buffer()
12043
2796a2c9fc17 patch 8.0.0902: cannot specify directory or environment for a job
Christian Brabandt <cb@256bit.org>
parents: 12031
diff changeset
109 let buf = Run_shell_in_terminal({})
12271
e4aa68825575 patch 8.0.1015: missing update to terminal test
Christian Brabandt <cb@256bit.org>
parents: 12263
diff changeset
110 setlocal bufhidden=hide
11917
00836eb177cb patch 8.0.0838: buffer hangs around whem terminal window is closed
Christian Brabandt <cb@256bit.org>
parents: 11912
diff changeset
111 quit
00836eb177cb patch 8.0.0838: buffer hangs around whem terminal window is closed
Christian Brabandt <cb@256bit.org>
parents: 11912
diff changeset
112 for nr in range(1, winnr('$'))
00836eb177cb patch 8.0.0838: buffer hangs around whem terminal window is closed
Christian Brabandt <cb@256bit.org>
parents: 11912
diff changeset
113 call assert_notequal(winbufnr(nr), buf)
00836eb177cb patch 8.0.0838: buffer hangs around whem terminal window is closed
Christian Brabandt <cb@256bit.org>
parents: 11912
diff changeset
114 endfor
00836eb177cb patch 8.0.0838: buffer hangs around whem terminal window is closed
Christian Brabandt <cb@256bit.org>
parents: 11912
diff changeset
115 call assert_true(bufloaded(buf))
00836eb177cb patch 8.0.0838: buffer hangs around whem terminal window is closed
Christian Brabandt <cb@256bit.org>
parents: 11912
diff changeset
116 call assert_true(buflisted(buf))
00836eb177cb patch 8.0.0838: buffer hangs around whem terminal window is closed
Christian Brabandt <cb@256bit.org>
parents: 11912
diff changeset
117
00836eb177cb patch 8.0.0838: buffer hangs around whem terminal window is closed
Christian Brabandt <cb@256bit.org>
parents: 11912
diff changeset
118 exe 'split ' . buf . 'buf'
00836eb177cb patch 8.0.0838: buffer hangs around whem terminal window is closed
Christian Brabandt <cb@256bit.org>
parents: 11912
diff changeset
119 call Stop_shell_in_terminal(buf)
00836eb177cb patch 8.0.0838: buffer hangs around whem terminal window is closed
Christian Brabandt <cb@256bit.org>
parents: 11912
diff changeset
120 exe buf . 'bwipe'
00836eb177cb patch 8.0.0838: buffer hangs around whem terminal window is closed
Christian Brabandt <cb@256bit.org>
parents: 11912
diff changeset
121
00836eb177cb patch 8.0.0838: buffer hangs around whem terminal window is closed
Christian Brabandt <cb@256bit.org>
parents: 11912
diff changeset
122 unlet g:job
00836eb177cb patch 8.0.0838: buffer hangs around whem terminal window is closed
Christian Brabandt <cb@256bit.org>
parents: 11912
diff changeset
123 endfunc
00836eb177cb patch 8.0.0838: buffer hangs around whem terminal window is closed
Christian Brabandt <cb@256bit.org>
parents: 11912
diff changeset
124
11939
ef1febf04d03 patch 8.0.0849: crash when job exit callback wipes the terminal
Christian Brabandt <cb@256bit.org>
parents: 11933
diff changeset
125 func! s:Nasty_exit_cb(job, st)
ef1febf04d03 patch 8.0.0849: crash when job exit callback wipes the terminal
Christian Brabandt <cb@256bit.org>
parents: 11933
diff changeset
126 exe g:buf . 'bwipe!'
ef1febf04d03 patch 8.0.0849: crash when job exit callback wipes the terminal
Christian Brabandt <cb@256bit.org>
parents: 11933
diff changeset
127 let g:buf = 0
ef1febf04d03 patch 8.0.0849: crash when job exit callback wipes the terminal
Christian Brabandt <cb@256bit.org>
parents: 11933
diff changeset
128 endfunc
ef1febf04d03 patch 8.0.0849: crash when job exit callback wipes the terminal
Christian Brabandt <cb@256bit.org>
parents: 11933
diff changeset
129
12405
6ef5e636f246 patch 8.0.1082: tests fail when run under valgrind
Christian Brabandt <cb@256bit.org>
parents: 12389
diff changeset
130 func Get_cat_123_cmd()
6ef5e636f246 patch 8.0.1082: tests fail when run under valgrind
Christian Brabandt <cb@256bit.org>
parents: 12389
diff changeset
131 if has('win32')
6ef5e636f246 patch 8.0.1082: tests fail when run under valgrind
Christian Brabandt <cb@256bit.org>
parents: 12389
diff changeset
132 return 'cmd /c "cls && color 2 && echo 123"'
6ef5e636f246 patch 8.0.1082: tests fail when run under valgrind
Christian Brabandt <cb@256bit.org>
parents: 12389
diff changeset
133 else
6ef5e636f246 patch 8.0.1082: tests fail when run under valgrind
Christian Brabandt <cb@256bit.org>
parents: 12389
diff changeset
134 call writefile(["\<Esc>[32m123"], 'Xtext')
6ef5e636f246 patch 8.0.1082: tests fail when run under valgrind
Christian Brabandt <cb@256bit.org>
parents: 12389
diff changeset
135 return "cat Xtext"
6ef5e636f246 patch 8.0.1082: tests fail when run under valgrind
Christian Brabandt <cb@256bit.org>
parents: 12389
diff changeset
136 endif
6ef5e636f246 patch 8.0.1082: tests fail when run under valgrind
Christian Brabandt <cb@256bit.org>
parents: 12389
diff changeset
137 endfunc
6ef5e636f246 patch 8.0.1082: tests fail when run under valgrind
Christian Brabandt <cb@256bit.org>
parents: 12389
diff changeset
138
11939
ef1febf04d03 patch 8.0.0849: crash when job exit callback wipes the terminal
Christian Brabandt <cb@256bit.org>
parents: 11933
diff changeset
139 func Test_terminal_nasty_cb()
12009
0d9bfdb3f6f7 patch 8.0.0885: terminal window scrollback is stored inefficiently
Christian Brabandt <cb@256bit.org>
parents: 11975
diff changeset
140 let cmd = Get_cat_123_cmd()
11939
ef1febf04d03 patch 8.0.0849: crash when job exit callback wipes the terminal
Christian Brabandt <cb@256bit.org>
parents: 11933
diff changeset
141 let g:buf = term_start(cmd, {'exit_cb': function('s:Nasty_exit_cb')})
ef1febf04d03 patch 8.0.0849: crash when job exit callback wipes the terminal
Christian Brabandt <cb@256bit.org>
parents: 11933
diff changeset
142 let g:job = term_getjob(g:buf)
ef1febf04d03 patch 8.0.0849: crash when job exit callback wipes the terminal
Christian Brabandt <cb@256bit.org>
parents: 11933
diff changeset
143
13808
16a062cf08c2 patch 8.0.1776: in tests, when WaitFor() fails it doesn't say why
Christian Brabandt <cb@256bit.org>
parents: 13798
diff changeset
144 call WaitForAssert({-> assert_equal("dead", job_status(g:job))})
16a062cf08c2 patch 8.0.1776: in tests, when WaitFor() fails it doesn't say why
Christian Brabandt <cb@256bit.org>
parents: 13798
diff changeset
145 call WaitForAssert({-> assert_equal(0, g:buf)})
11939
ef1febf04d03 patch 8.0.0849: crash when job exit callback wipes the terminal
Christian Brabandt <cb@256bit.org>
parents: 11933
diff changeset
146 unlet g:buf
ef1febf04d03 patch 8.0.0849: crash when job exit callback wipes the terminal
Christian Brabandt <cb@256bit.org>
parents: 11933
diff changeset
147 unlet g:job
ef1febf04d03 patch 8.0.0849: crash when job exit callback wipes the terminal
Christian Brabandt <cb@256bit.org>
parents: 11933
diff changeset
148 call delete('Xtext')
ef1febf04d03 patch 8.0.0849: crash when job exit callback wipes the terminal
Christian Brabandt <cb@256bit.org>
parents: 11933
diff changeset
149 endfunc
ef1febf04d03 patch 8.0.0849: crash when job exit callback wipes the terminal
Christian Brabandt <cb@256bit.org>
parents: 11933
diff changeset
150
11846
1c65cad8b967 patch 8.0.0804: terminal window functions not yet implemented
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
151 func Check_123(buf)
11923
c9da7b42fdf5 patch 8.0.0841: term_getline() may cause a crash
Christian Brabandt <cb@256bit.org>
parents: 11917
diff changeset
152 let l = term_scrape(a:buf, 0)
c9da7b42fdf5 patch 8.0.0841: term_getline() may cause a crash
Christian Brabandt <cb@256bit.org>
parents: 11917
diff changeset
153 call assert_true(len(l) == 0)
c9da7b42fdf5 patch 8.0.0841: term_getline() may cause a crash
Christian Brabandt <cb@256bit.org>
parents: 11917
diff changeset
154 let l = term_scrape(a:buf, 999)
c9da7b42fdf5 patch 8.0.0841: term_getline() may cause a crash
Christian Brabandt <cb@256bit.org>
parents: 11917
diff changeset
155 call assert_true(len(l) == 0)
11906
7df4afab67c7 patch 8.0.0833: terminal test fails
Christian Brabandt <cb@256bit.org>
parents: 11872
diff changeset
156 let l = term_scrape(a:buf, 1)
11846
1c65cad8b967 patch 8.0.0804: terminal window functions not yet implemented
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
157 call assert_true(len(l) > 0)
1c65cad8b967 patch 8.0.0804: terminal window functions not yet implemented
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
158 call assert_equal('1', l[0].chars)
1c65cad8b967 patch 8.0.0804: terminal window functions not yet implemented
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
159 call assert_equal('2', l[1].chars)
1c65cad8b967 patch 8.0.0804: terminal window functions not yet implemented
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
160 call assert_equal('3', l[2].chars)
1c65cad8b967 patch 8.0.0804: terminal window functions not yet implemented
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
161 call assert_equal('#00e000', l[0].fg)
1c65cad8b967 patch 8.0.0804: terminal window functions not yet implemented
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
162 if &background == 'light'
1c65cad8b967 patch 8.0.0804: terminal window functions not yet implemented
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
163 call assert_equal('#ffffff', l[0].bg)
1c65cad8b967 patch 8.0.0804: terminal window functions not yet implemented
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
164 else
1c65cad8b967 patch 8.0.0804: terminal window functions not yet implemented
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
165 call assert_equal('#000000', l[0].bg)
1c65cad8b967 patch 8.0.0804: terminal window functions not yet implemented
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
166 endif
1c65cad8b967 patch 8.0.0804: terminal window functions not yet implemented
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
167
11923
c9da7b42fdf5 patch 8.0.0841: term_getline() may cause a crash
Christian Brabandt <cb@256bit.org>
parents: 11917
diff changeset
168 let l = term_getline(a:buf, -1)
c9da7b42fdf5 patch 8.0.0841: term_getline() may cause a crash
Christian Brabandt <cb@256bit.org>
parents: 11917
diff changeset
169 call assert_equal('', l)
c9da7b42fdf5 patch 8.0.0841: term_getline() may cause a crash
Christian Brabandt <cb@256bit.org>
parents: 11917
diff changeset
170 let l = term_getline(a:buf, 0)
c9da7b42fdf5 patch 8.0.0841: term_getline() may cause a crash
Christian Brabandt <cb@256bit.org>
parents: 11917
diff changeset
171 call assert_equal('', l)
c9da7b42fdf5 patch 8.0.0841: term_getline() may cause a crash
Christian Brabandt <cb@256bit.org>
parents: 11917
diff changeset
172 let l = term_getline(a:buf, 999)
c9da7b42fdf5 patch 8.0.0841: term_getline() may cause a crash
Christian Brabandt <cb@256bit.org>
parents: 11917
diff changeset
173 call assert_equal('', l)
11906
7df4afab67c7 patch 8.0.0833: terminal test fails
Christian Brabandt <cb@256bit.org>
parents: 11872
diff changeset
174 let l = term_getline(a:buf, 1)
11846
1c65cad8b967 patch 8.0.0804: terminal window functions not yet implemented
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
175 call assert_equal('123', l)
1c65cad8b967 patch 8.0.0804: terminal window functions not yet implemented
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
176 endfunc
1c65cad8b967 patch 8.0.0804: terminal window functions not yet implemented
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
177
12009
0d9bfdb3f6f7 patch 8.0.0885: terminal window scrollback is stored inefficiently
Christian Brabandt <cb@256bit.org>
parents: 11975
diff changeset
178 func Test_terminal_scrape_123()
0d9bfdb3f6f7 patch 8.0.0885: terminal window scrollback is stored inefficiently
Christian Brabandt <cb@256bit.org>
parents: 11975
diff changeset
179 let cmd = Get_cat_123_cmd()
11846
1c65cad8b967 patch 8.0.0804: terminal window functions not yet implemented
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
180 let buf = term_start(cmd)
1c65cad8b967 patch 8.0.0804: terminal window functions not yet implemented
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
181
1c65cad8b967 patch 8.0.0804: terminal window functions not yet implemented
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
182 let termlist = term_list()
1c65cad8b967 patch 8.0.0804: terminal window functions not yet implemented
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
183 call assert_equal(1, len(termlist))
1c65cad8b967 patch 8.0.0804: terminal window functions not yet implemented
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
184 call assert_equal(buf, termlist[0])
1c65cad8b967 patch 8.0.0804: terminal window functions not yet implemented
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
185
11872
ff8122091ec6 patch 8.0.0816: crash when using invalid buffer number
Christian Brabandt <cb@256bit.org>
parents: 11846
diff changeset
186 " Nothing happens with invalid buffer number
ff8122091ec6 patch 8.0.0816: crash when using invalid buffer number
Christian Brabandt <cb@256bit.org>
parents: 11846
diff changeset
187 call term_wait(1234)
ff8122091ec6 patch 8.0.0816: crash when using invalid buffer number
Christian Brabandt <cb@256bit.org>
parents: 11846
diff changeset
188
11846
1c65cad8b967 patch 8.0.0804: terminal window functions not yet implemented
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
189 call term_wait(buf)
12349
bb67396239a4 patch 8.0.1054: terminal test fails on MS-Windows
Christian Brabandt <cb@256bit.org>
parents: 12345
diff changeset
190 " On MS-Windows we first get a startup message of two lines, wait for the
12355
368a7bf382c7 patch 8.0.1057: terminal scrape test waits too long
Christian Brabandt <cb@256bit.org>
parents: 12349
diff changeset
191 " "cls" to happen, after that we have one line with three characters.
13808
16a062cf08c2 patch 8.0.1776: in tests, when WaitFor() fails it doesn't say why
Christian Brabandt <cb@256bit.org>
parents: 13798
diff changeset
192 call WaitForAssert({-> assert_equal(3, len(term_scrape(buf, 1)))})
11846
1c65cad8b967 patch 8.0.0804: terminal window functions not yet implemented
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
193 call Check_123(buf)
1c65cad8b967 patch 8.0.0804: terminal window functions not yet implemented
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
194
1c65cad8b967 patch 8.0.0804: terminal window functions not yet implemented
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
195 " Must still work after the job ended.
12765
c1347c968d31 patch 8.0.1260: using global variables for WaitFor()
Christian Brabandt <cb@256bit.org>
parents: 12734
diff changeset
196 let job = term_getjob(buf)
13808
16a062cf08c2 patch 8.0.1776: in tests, when WaitFor() fails it doesn't say why
Christian Brabandt <cb@256bit.org>
parents: 13798
diff changeset
197 call WaitForAssert({-> assert_equal("dead", job_status(job))})
11846
1c65cad8b967 patch 8.0.0804: terminal window functions not yet implemented
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
198 call term_wait(buf)
1c65cad8b967 patch 8.0.0804: terminal window functions not yet implemented
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
199 call Check_123(buf)
1c65cad8b967 patch 8.0.0804: terminal window functions not yet implemented
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
200
1c65cad8b967 patch 8.0.0804: terminal window functions not yet implemented
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
201 exe buf . 'bwipe'
11872
ff8122091ec6 patch 8.0.0816: crash when using invalid buffer number
Christian Brabandt <cb@256bit.org>
parents: 11846
diff changeset
202 call delete('Xtext')
11846
1c65cad8b967 patch 8.0.0804: terminal window functions not yet implemented
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
203 endfunc
11975
5cc005cf312f patch 8.0.0868: cannot specify the terminal size on the command line
Christian Brabandt <cb@256bit.org>
parents: 11973
diff changeset
204
12009
0d9bfdb3f6f7 patch 8.0.0885: terminal window scrollback is stored inefficiently
Christian Brabandt <cb@256bit.org>
parents: 11975
diff changeset
205 func Test_terminal_scrape_multibyte()
0d9bfdb3f6f7 patch 8.0.0885: terminal window scrollback is stored inefficiently
Christian Brabandt <cb@256bit.org>
parents: 11975
diff changeset
206 if !has('multi_byte')
0d9bfdb3f6f7 patch 8.0.0885: terminal window scrollback is stored inefficiently
Christian Brabandt <cb@256bit.org>
parents: 11975
diff changeset
207 return
0d9bfdb3f6f7 patch 8.0.0885: terminal window scrollback is stored inefficiently
Christian Brabandt <cb@256bit.org>
parents: 11975
diff changeset
208 endif
0d9bfdb3f6f7 patch 8.0.0885: terminal window scrollback is stored inefficiently
Christian Brabandt <cb@256bit.org>
parents: 11975
diff changeset
209 call writefile(["léttまrs"], 'Xtext')
0d9bfdb3f6f7 patch 8.0.0885: terminal window scrollback is stored inefficiently
Christian Brabandt <cb@256bit.org>
parents: 11975
diff changeset
210 if has('win32')
12126
bb43ab26381e patch 8.0.0943: MS-Windows: Test_terminal_scrape_multibyte may fail
Christian Brabandt <cb@256bit.org>
parents: 12120
diff changeset
211 " Run cmd with UTF-8 codepage to make the type command print the expected
bb43ab26381e patch 8.0.0943: MS-Windows: Test_terminal_scrape_multibyte may fail
Christian Brabandt <cb@256bit.org>
parents: 12120
diff changeset
212 " multibyte characters.
12765
c1347c968d31 patch 8.0.1260: using global variables for WaitFor()
Christian Brabandt <cb@256bit.org>
parents: 12734
diff changeset
213 let buf = term_start("cmd /K chcp 65001")
c1347c968d31 patch 8.0.1260: using global variables for WaitFor()
Christian Brabandt <cb@256bit.org>
parents: 12734
diff changeset
214 call term_sendkeys(buf, "type Xtext\<CR>")
c1347c968d31 patch 8.0.1260: using global variables for WaitFor()
Christian Brabandt <cb@256bit.org>
parents: 12734
diff changeset
215 call term_sendkeys(buf, "exit\<CR>")
c1347c968d31 patch 8.0.1260: using global variables for WaitFor()
Christian Brabandt <cb@256bit.org>
parents: 12734
diff changeset
216 let line = 4
12009
0d9bfdb3f6f7 patch 8.0.0885: terminal window scrollback is stored inefficiently
Christian Brabandt <cb@256bit.org>
parents: 11975
diff changeset
217 else
12765
c1347c968d31 patch 8.0.1260: using global variables for WaitFor()
Christian Brabandt <cb@256bit.org>
parents: 12734
diff changeset
218 let buf = term_start("cat Xtext")
c1347c968d31 patch 8.0.1260: using global variables for WaitFor()
Christian Brabandt <cb@256bit.org>
parents: 12734
diff changeset
219 let line = 1
12009
0d9bfdb3f6f7 patch 8.0.0885: terminal window scrollback is stored inefficiently
Christian Brabandt <cb@256bit.org>
parents: 11975
diff changeset
220 endif
0d9bfdb3f6f7 patch 8.0.0885: terminal window scrollback is stored inefficiently
Christian Brabandt <cb@256bit.org>
parents: 11975
diff changeset
221
12765
c1347c968d31 patch 8.0.1260: using global variables for WaitFor()
Christian Brabandt <cb@256bit.org>
parents: 12734
diff changeset
222 call WaitFor({-> len(term_scrape(buf, line)) >= 7 && term_scrape(buf, line)[0].chars == "l"})
c1347c968d31 patch 8.0.1260: using global variables for WaitFor()
Christian Brabandt <cb@256bit.org>
parents: 12734
diff changeset
223 let l = term_scrape(buf, line)
12009
0d9bfdb3f6f7 patch 8.0.0885: terminal window scrollback is stored inefficiently
Christian Brabandt <cb@256bit.org>
parents: 11975
diff changeset
224 call assert_true(len(l) >= 7)
0d9bfdb3f6f7 patch 8.0.0885: terminal window scrollback is stored inefficiently
Christian Brabandt <cb@256bit.org>
parents: 11975
diff changeset
225 call assert_equal('l', l[0].chars)
0d9bfdb3f6f7 patch 8.0.0885: terminal window scrollback is stored inefficiently
Christian Brabandt <cb@256bit.org>
parents: 11975
diff changeset
226 call assert_equal('é', l[1].chars)
0d9bfdb3f6f7 patch 8.0.0885: terminal window scrollback is stored inefficiently
Christian Brabandt <cb@256bit.org>
parents: 11975
diff changeset
227 call assert_equal(1, l[1].width)
0d9bfdb3f6f7 patch 8.0.0885: terminal window scrollback is stored inefficiently
Christian Brabandt <cb@256bit.org>
parents: 11975
diff changeset
228 call assert_equal('t', l[2].chars)
0d9bfdb3f6f7 patch 8.0.0885: terminal window scrollback is stored inefficiently
Christian Brabandt <cb@256bit.org>
parents: 11975
diff changeset
229 call assert_equal('t', l[3].chars)
0d9bfdb3f6f7 patch 8.0.0885: terminal window scrollback is stored inefficiently
Christian Brabandt <cb@256bit.org>
parents: 11975
diff changeset
230 call assert_equal('ま', l[4].chars)
0d9bfdb3f6f7 patch 8.0.0885: terminal window scrollback is stored inefficiently
Christian Brabandt <cb@256bit.org>
parents: 11975
diff changeset
231 call assert_equal(2, l[4].width)
0d9bfdb3f6f7 patch 8.0.0885: terminal window scrollback is stored inefficiently
Christian Brabandt <cb@256bit.org>
parents: 11975
diff changeset
232 call assert_equal('r', l[5].chars)
0d9bfdb3f6f7 patch 8.0.0885: terminal window scrollback is stored inefficiently
Christian Brabandt <cb@256bit.org>
parents: 11975
diff changeset
233 call assert_equal('s', l[6].chars)
0d9bfdb3f6f7 patch 8.0.0885: terminal window scrollback is stored inefficiently
Christian Brabandt <cb@256bit.org>
parents: 11975
diff changeset
234
12765
c1347c968d31 patch 8.0.1260: using global variables for WaitFor()
Christian Brabandt <cb@256bit.org>
parents: 12734
diff changeset
235 let job = term_getjob(buf)
13808
16a062cf08c2 patch 8.0.1776: in tests, when WaitFor() fails it doesn't say why
Christian Brabandt <cb@256bit.org>
parents: 13798
diff changeset
236 call WaitForAssert({-> assert_equal("dead", job_status(job))})
12765
c1347c968d31 patch 8.0.1260: using global variables for WaitFor()
Christian Brabandt <cb@256bit.org>
parents: 12734
diff changeset
237 call term_wait(buf)
12009
0d9bfdb3f6f7 patch 8.0.0885: terminal window scrollback is stored inefficiently
Christian Brabandt <cb@256bit.org>
parents: 11975
diff changeset
238
12765
c1347c968d31 patch 8.0.1260: using global variables for WaitFor()
Christian Brabandt <cb@256bit.org>
parents: 12734
diff changeset
239 exe buf . 'bwipe'
12009
0d9bfdb3f6f7 patch 8.0.0885: terminal window scrollback is stored inefficiently
Christian Brabandt <cb@256bit.org>
parents: 11975
diff changeset
240 call delete('Xtext')
0d9bfdb3f6f7 patch 8.0.0885: terminal window scrollback is stored inefficiently
Christian Brabandt <cb@256bit.org>
parents: 11975
diff changeset
241 endfunc
0d9bfdb3f6f7 patch 8.0.0885: terminal window scrollback is stored inefficiently
Christian Brabandt <cb@256bit.org>
parents: 11975
diff changeset
242
12011
1f4e7361ce89 patch 8.0.0886: crash when using ":term ls"
Christian Brabandt <cb@256bit.org>
parents: 12009
diff changeset
243 func Test_terminal_scroll()
1f4e7361ce89 patch 8.0.0886: crash when using ":term ls"
Christian Brabandt <cb@256bit.org>
parents: 12009
diff changeset
244 call writefile(range(1, 200), 'Xtext')
1f4e7361ce89 patch 8.0.0886: crash when using ":term ls"
Christian Brabandt <cb@256bit.org>
parents: 12009
diff changeset
245 if has('win32')
1f4e7361ce89 patch 8.0.0886: crash when using ":term ls"
Christian Brabandt <cb@256bit.org>
parents: 12009
diff changeset
246 let cmd = 'cmd /c "type Xtext"'
1f4e7361ce89 patch 8.0.0886: crash when using ":term ls"
Christian Brabandt <cb@256bit.org>
parents: 12009
diff changeset
247 else
1f4e7361ce89 patch 8.0.0886: crash when using ":term ls"
Christian Brabandt <cb@256bit.org>
parents: 12009
diff changeset
248 let cmd = "cat Xtext"
1f4e7361ce89 patch 8.0.0886: crash when using ":term ls"
Christian Brabandt <cb@256bit.org>
parents: 12009
diff changeset
249 endif
1f4e7361ce89 patch 8.0.0886: crash when using ":term ls"
Christian Brabandt <cb@256bit.org>
parents: 12009
diff changeset
250 let buf = term_start(cmd)
1f4e7361ce89 patch 8.0.0886: crash when using ":term ls"
Christian Brabandt <cb@256bit.org>
parents: 12009
diff changeset
251
12765
c1347c968d31 patch 8.0.1260: using global variables for WaitFor()
Christian Brabandt <cb@256bit.org>
parents: 12734
diff changeset
252 let job = term_getjob(buf)
13808
16a062cf08c2 patch 8.0.1776: in tests, when WaitFor() fails it doesn't say why
Christian Brabandt <cb@256bit.org>
parents: 13798
diff changeset
253 call WaitForAssert({-> assert_equal("dead", job_status(job))})
12011
1f4e7361ce89 patch 8.0.0886: crash when using ":term ls"
Christian Brabandt <cb@256bit.org>
parents: 12009
diff changeset
254 call term_wait(buf)
1f4e7361ce89 patch 8.0.0886: crash when using ":term ls"
Christian Brabandt <cb@256bit.org>
parents: 12009
diff changeset
255 if has('win32')
1f4e7361ce89 patch 8.0.0886: crash when using ":term ls"
Christian Brabandt <cb@256bit.org>
parents: 12009
diff changeset
256 " TODO: this should not be needed
1f4e7361ce89 patch 8.0.0886: crash when using ":term ls"
Christian Brabandt <cb@256bit.org>
parents: 12009
diff changeset
257 sleep 100m
1f4e7361ce89 patch 8.0.0886: crash when using ":term ls"
Christian Brabandt <cb@256bit.org>
parents: 12009
diff changeset
258 endif
1f4e7361ce89 patch 8.0.0886: crash when using ":term ls"
Christian Brabandt <cb@256bit.org>
parents: 12009
diff changeset
259
12025
c0ee48f48a2b patch 8.0.0893: cannot get the scroll count of a terminal window
Christian Brabandt <cb@256bit.org>
parents: 12011
diff changeset
260 let scrolled = term_getscrolled(buf)
12011
1f4e7361ce89 patch 8.0.0886: crash when using ":term ls"
Christian Brabandt <cb@256bit.org>
parents: 12009
diff changeset
261 call assert_equal('1', getline(1))
12025
c0ee48f48a2b patch 8.0.0893: cannot get the scroll count of a terminal window
Christian Brabandt <cb@256bit.org>
parents: 12011
diff changeset
262 call assert_equal('1', term_getline(buf, 1 - scrolled))
12011
1f4e7361ce89 patch 8.0.0886: crash when using ":term ls"
Christian Brabandt <cb@256bit.org>
parents: 12009
diff changeset
263 call assert_equal('49', getline(49))
12025
c0ee48f48a2b patch 8.0.0893: cannot get the scroll count of a terminal window
Christian Brabandt <cb@256bit.org>
parents: 12011
diff changeset
264 call assert_equal('49', term_getline(buf, 49 - scrolled))
12011
1f4e7361ce89 patch 8.0.0886: crash when using ":term ls"
Christian Brabandt <cb@256bit.org>
parents: 12009
diff changeset
265 call assert_equal('200', getline(200))
12025
c0ee48f48a2b patch 8.0.0893: cannot get the scroll count of a terminal window
Christian Brabandt <cb@256bit.org>
parents: 12011
diff changeset
266 call assert_equal('200', term_getline(buf, 200 - scrolled))
12011
1f4e7361ce89 patch 8.0.0886: crash when using ":term ls"
Christian Brabandt <cb@256bit.org>
parents: 12009
diff changeset
267
1f4e7361ce89 patch 8.0.0886: crash when using ":term ls"
Christian Brabandt <cb@256bit.org>
parents: 12009
diff changeset
268 exe buf . 'bwipe'
1f4e7361ce89 patch 8.0.0886: crash when using ":term ls"
Christian Brabandt <cb@256bit.org>
parents: 12009
diff changeset
269 call delete('Xtext')
1f4e7361ce89 patch 8.0.0886: crash when using ":term ls"
Christian Brabandt <cb@256bit.org>
parents: 12009
diff changeset
270 endfunc
1f4e7361ce89 patch 8.0.0886: crash when using ":term ls"
Christian Brabandt <cb@256bit.org>
parents: 12009
diff changeset
271
13684
1651a4c5c27a patch 8.0.1714: term_setsize() does not give an error in a normal buffer
Christian Brabandt <cb@256bit.org>
parents: 13678
diff changeset
272 func Test_terminal_scrollback()
1651a4c5c27a patch 8.0.1714: term_setsize() does not give an error in a normal buffer
Christian Brabandt <cb@256bit.org>
parents: 13678
diff changeset
273 let buf = Run_shell_in_terminal({})
13742
a34b1323286c patch 8.0.1743: terminal window options are named inconsistently
Christian Brabandt <cb@256bit.org>
parents: 13720
diff changeset
274 set termwinscroll=100
13684
1651a4c5c27a patch 8.0.1714: term_setsize() does not give an error in a normal buffer
Christian Brabandt <cb@256bit.org>
parents: 13678
diff changeset
275 call writefile(range(150), 'Xtext')
1651a4c5c27a patch 8.0.1714: term_setsize() does not give an error in a normal buffer
Christian Brabandt <cb@256bit.org>
parents: 13678
diff changeset
276 if has('win32')
1651a4c5c27a patch 8.0.1714: term_setsize() does not give an error in a normal buffer
Christian Brabandt <cb@256bit.org>
parents: 13678
diff changeset
277 call term_sendkeys(buf, "type Xtext\<CR>")
1651a4c5c27a patch 8.0.1714: term_setsize() does not give an error in a normal buffer
Christian Brabandt <cb@256bit.org>
parents: 13678
diff changeset
278 else
1651a4c5c27a patch 8.0.1714: term_setsize() does not give an error in a normal buffer
Christian Brabandt <cb@256bit.org>
parents: 13678
diff changeset
279 call term_sendkeys(buf, "cat Xtext\<CR>")
1651a4c5c27a patch 8.0.1714: term_setsize() does not give an error in a normal buffer
Christian Brabandt <cb@256bit.org>
parents: 13678
diff changeset
280 endif
1651a4c5c27a patch 8.0.1714: term_setsize() does not give an error in a normal buffer
Christian Brabandt <cb@256bit.org>
parents: 13678
diff changeset
281 let rows = term_getsize(buf)[0]
13692
2dd14253ad12 patch 8.0.1718: terminal scrollback test fails on MS-Windows
Christian Brabandt <cb@256bit.org>
parents: 13688
diff changeset
282 " On MS-Windows there is an empty line, check both last line and above it.
13808
16a062cf08c2 patch 8.0.1776: in tests, when WaitFor() fails it doesn't say why
Christian Brabandt <cb@256bit.org>
parents: 13798
diff changeset
283 call WaitForAssert({-> assert_match( '149', term_getline(buf, rows - 1) . term_getline(buf, rows - 2))})
13684
1651a4c5c27a patch 8.0.1714: term_setsize() does not give an error in a normal buffer
Christian Brabandt <cb@256bit.org>
parents: 13678
diff changeset
284 let lines = line('$')
13688
f07e48d6650b patch 8.0.1716: test for term_setsize() does not give a good error message
Christian Brabandt <cb@256bit.org>
parents: 13684
diff changeset
285 call assert_inrange(91, 100, lines)
13684
1651a4c5c27a patch 8.0.1714: term_setsize() does not give an error in a normal buffer
Christian Brabandt <cb@256bit.org>
parents: 13678
diff changeset
286
1651a4c5c27a patch 8.0.1714: term_setsize() does not give an error in a normal buffer
Christian Brabandt <cb@256bit.org>
parents: 13678
diff changeset
287 call Stop_shell_in_terminal(buf)
1651a4c5c27a patch 8.0.1714: term_setsize() does not give an error in a normal buffer
Christian Brabandt <cb@256bit.org>
parents: 13678
diff changeset
288 call term_wait(buf)
1651a4c5c27a patch 8.0.1714: term_setsize() does not give an error in a normal buffer
Christian Brabandt <cb@256bit.org>
parents: 13678
diff changeset
289 exe buf . 'bwipe'
13742
a34b1323286c patch 8.0.1743: terminal window options are named inconsistently
Christian Brabandt <cb@256bit.org>
parents: 13720
diff changeset
290 set termwinscroll&
13684
1651a4c5c27a patch 8.0.1714: term_setsize() does not give an error in a normal buffer
Christian Brabandt <cb@256bit.org>
parents: 13678
diff changeset
291 endfunc
1651a4c5c27a patch 8.0.1714: term_setsize() does not give an error in a normal buffer
Christian Brabandt <cb@256bit.org>
parents: 13678
diff changeset
292
11975
5cc005cf312f patch 8.0.0868: cannot specify the terminal size on the command line
Christian Brabandt <cb@256bit.org>
parents: 11973
diff changeset
293 func Test_terminal_size()
12009
0d9bfdb3f6f7 patch 8.0.0885: terminal window scrollback is stored inefficiently
Christian Brabandt <cb@256bit.org>
parents: 11975
diff changeset
294 let cmd = Get_cat_123_cmd()
11975
5cc005cf312f patch 8.0.0868: cannot specify the terminal size on the command line
Christian Brabandt <cb@256bit.org>
parents: 11973
diff changeset
295
12192
6947d5bcf57f patch 8.0.0976: cannot send lines to a terminal job
Christian Brabandt <cb@256bit.org>
parents: 12166
diff changeset
296 exe 'terminal ++rows=5 ' . cmd
11975
5cc005cf312f patch 8.0.0868: cannot specify the terminal size on the command line
Christian Brabandt <cb@256bit.org>
parents: 11973
diff changeset
297 let size = term_getsize('')
5cc005cf312f patch 8.0.0868: cannot specify the terminal size on the command line
Christian Brabandt <cb@256bit.org>
parents: 11973
diff changeset
298 bwipe!
5cc005cf312f patch 8.0.0868: cannot specify the terminal size on the command line
Christian Brabandt <cb@256bit.org>
parents: 11973
diff changeset
299 call assert_equal(5, size[0])
5cc005cf312f patch 8.0.0868: cannot specify the terminal size on the command line
Christian Brabandt <cb@256bit.org>
parents: 11973
diff changeset
300
12056
0498547dace0 patch 8.0.0908: cannot set terminal size with options
Christian Brabandt <cb@256bit.org>
parents: 12046
diff changeset
301 call term_start(cmd, {'term_rows': 6})
0498547dace0 patch 8.0.0908: cannot set terminal size with options
Christian Brabandt <cb@256bit.org>
parents: 12046
diff changeset
302 let size = term_getsize('')
0498547dace0 patch 8.0.0908: cannot set terminal size with options
Christian Brabandt <cb@256bit.org>
parents: 12046
diff changeset
303 bwipe!
0498547dace0 patch 8.0.0908: cannot set terminal size with options
Christian Brabandt <cb@256bit.org>
parents: 12046
diff changeset
304 call assert_equal(6, size[0])
0498547dace0 patch 8.0.0908: cannot set terminal size with options
Christian Brabandt <cb@256bit.org>
parents: 12046
diff changeset
305
11975
5cc005cf312f patch 8.0.0868: cannot specify the terminal size on the command line
Christian Brabandt <cb@256bit.org>
parents: 11973
diff changeset
306 vsplit
12192
6947d5bcf57f patch 8.0.0976: cannot send lines to a terminal job
Christian Brabandt <cb@256bit.org>
parents: 12166
diff changeset
307 exe 'terminal ++rows=5 ++cols=33 ' . cmd
13678
39fcaaa973db patch 8.0.1711: term_setsize() is not implemented yet
Christian Brabandt <cb@256bit.org>
parents: 13650
diff changeset
308 call assert_equal([5, 33], term_getsize(''))
39fcaaa973db patch 8.0.1711: term_setsize() is not implemented yet
Christian Brabandt <cb@256bit.org>
parents: 13650
diff changeset
309
39fcaaa973db patch 8.0.1711: term_setsize() is not implemented yet
Christian Brabandt <cb@256bit.org>
parents: 13650
diff changeset
310 call term_setsize('', 6, 0)
39fcaaa973db patch 8.0.1711: term_setsize() is not implemented yet
Christian Brabandt <cb@256bit.org>
parents: 13650
diff changeset
311 call assert_equal([6, 33], term_getsize(''))
39fcaaa973db patch 8.0.1711: term_setsize() is not implemented yet
Christian Brabandt <cb@256bit.org>
parents: 13650
diff changeset
312
39fcaaa973db patch 8.0.1711: term_setsize() is not implemented yet
Christian Brabandt <cb@256bit.org>
parents: 13650
diff changeset
313 call term_setsize('', 0, 35)
39fcaaa973db patch 8.0.1711: term_setsize() is not implemented yet
Christian Brabandt <cb@256bit.org>
parents: 13650
diff changeset
314 call assert_equal([6, 35], term_getsize(''))
39fcaaa973db patch 8.0.1711: term_setsize() is not implemented yet
Christian Brabandt <cb@256bit.org>
parents: 13650
diff changeset
315
39fcaaa973db patch 8.0.1711: term_setsize() is not implemented yet
Christian Brabandt <cb@256bit.org>
parents: 13650
diff changeset
316 call term_setsize('', 7, 30)
39fcaaa973db patch 8.0.1711: term_setsize() is not implemented yet
Christian Brabandt <cb@256bit.org>
parents: 13650
diff changeset
317 call assert_equal([7, 30], term_getsize(''))
39fcaaa973db patch 8.0.1711: term_setsize() is not implemented yet
Christian Brabandt <cb@256bit.org>
parents: 13650
diff changeset
318
11975
5cc005cf312f patch 8.0.0868: cannot specify the terminal size on the command line
Christian Brabandt <cb@256bit.org>
parents: 11973
diff changeset
319 bwipe!
13684
1651a4c5c27a patch 8.0.1714: term_setsize() does not give an error in a normal buffer
Christian Brabandt <cb@256bit.org>
parents: 13678
diff changeset
320 call assert_fails("call term_setsize('', 7, 30)", "E955:")
11975
5cc005cf312f patch 8.0.0868: cannot specify the terminal size on the command line
Christian Brabandt <cb@256bit.org>
parents: 11973
diff changeset
321
12056
0498547dace0 patch 8.0.0908: cannot set terminal size with options
Christian Brabandt <cb@256bit.org>
parents: 12046
diff changeset
322 call term_start(cmd, {'term_rows': 6, 'term_cols': 36})
0498547dace0 patch 8.0.0908: cannot set terminal size with options
Christian Brabandt <cb@256bit.org>
parents: 12046
diff changeset
323 let size = term_getsize('')
0498547dace0 patch 8.0.0908: cannot set terminal size with options
Christian Brabandt <cb@256bit.org>
parents: 12046
diff changeset
324 bwipe!
0498547dace0 patch 8.0.0908: cannot set terminal size with options
Christian Brabandt <cb@256bit.org>
parents: 12046
diff changeset
325 call assert_equal([6, 36], size)
0498547dace0 patch 8.0.0908: cannot set terminal size with options
Christian Brabandt <cb@256bit.org>
parents: 12046
diff changeset
326
12192
6947d5bcf57f patch 8.0.0976: cannot send lines to a terminal job
Christian Brabandt <cb@256bit.org>
parents: 12166
diff changeset
327 exe 'vertical terminal ++cols=20 ' . cmd
11975
5cc005cf312f patch 8.0.0868: cannot specify the terminal size on the command line
Christian Brabandt <cb@256bit.org>
parents: 11973
diff changeset
328 let size = term_getsize('')
5cc005cf312f patch 8.0.0868: cannot specify the terminal size on the command line
Christian Brabandt <cb@256bit.org>
parents: 11973
diff changeset
329 bwipe!
5cc005cf312f patch 8.0.0868: cannot specify the terminal size on the command line
Christian Brabandt <cb@256bit.org>
parents: 11973
diff changeset
330 call assert_equal(20, size[1])
5cc005cf312f patch 8.0.0868: cannot specify the terminal size on the command line
Christian Brabandt <cb@256bit.org>
parents: 11973
diff changeset
331
12056
0498547dace0 patch 8.0.0908: cannot set terminal size with options
Christian Brabandt <cb@256bit.org>
parents: 12046
diff changeset
332 call term_start(cmd, {'vertical': 1, 'term_cols': 26})
0498547dace0 patch 8.0.0908: cannot set terminal size with options
Christian Brabandt <cb@256bit.org>
parents: 12046
diff changeset
333 let size = term_getsize('')
0498547dace0 patch 8.0.0908: cannot set terminal size with options
Christian Brabandt <cb@256bit.org>
parents: 12046
diff changeset
334 bwipe!
0498547dace0 patch 8.0.0908: cannot set terminal size with options
Christian Brabandt <cb@256bit.org>
parents: 12046
diff changeset
335 call assert_equal(26, size[1])
0498547dace0 patch 8.0.0908: cannot set terminal size with options
Christian Brabandt <cb@256bit.org>
parents: 12046
diff changeset
336
11975
5cc005cf312f patch 8.0.0868: cannot specify the terminal size on the command line
Christian Brabandt <cb@256bit.org>
parents: 11973
diff changeset
337 split
12192
6947d5bcf57f patch 8.0.0976: cannot send lines to a terminal job
Christian Brabandt <cb@256bit.org>
parents: 12166
diff changeset
338 exe 'vertical terminal ++rows=6 ++cols=20 ' . cmd
11975
5cc005cf312f patch 8.0.0868: cannot specify the terminal size on the command line
Christian Brabandt <cb@256bit.org>
parents: 11973
diff changeset
339 let size = term_getsize('')
5cc005cf312f patch 8.0.0868: cannot specify the terminal size on the command line
Christian Brabandt <cb@256bit.org>
parents: 11973
diff changeset
340 bwipe!
5cc005cf312f patch 8.0.0868: cannot specify the terminal size on the command line
Christian Brabandt <cb@256bit.org>
parents: 11973
diff changeset
341 call assert_equal([6, 20], size)
12056
0498547dace0 patch 8.0.0908: cannot set terminal size with options
Christian Brabandt <cb@256bit.org>
parents: 12046
diff changeset
342
0498547dace0 patch 8.0.0908: cannot set terminal size with options
Christian Brabandt <cb@256bit.org>
parents: 12046
diff changeset
343 call term_start(cmd, {'vertical': 1, 'term_rows': 7, 'term_cols': 27})
0498547dace0 patch 8.0.0908: cannot set terminal size with options
Christian Brabandt <cb@256bit.org>
parents: 12046
diff changeset
344 let size = term_getsize('')
0498547dace0 patch 8.0.0908: cannot set terminal size with options
Christian Brabandt <cb@256bit.org>
parents: 12046
diff changeset
345 bwipe!
0498547dace0 patch 8.0.0908: cannot set terminal size with options
Christian Brabandt <cb@256bit.org>
parents: 12046
diff changeset
346 call assert_equal([7, 27], size)
12343
72046661f6d0 patch 8.0.1051: cannot run terminal with spaces in argument
Christian Brabandt <cb@256bit.org>
parents: 12339
diff changeset
347
72046661f6d0 patch 8.0.1051: cannot run terminal with spaces in argument
Christian Brabandt <cb@256bit.org>
parents: 12339
diff changeset
348 call delete('Xtext')
12060
a879814b8a37 patch 8.0.0910: cannot create a terminal in the current window
Christian Brabandt <cb@256bit.org>
parents: 12056
diff changeset
349 endfunc
a879814b8a37 patch 8.0.0910: cannot create a terminal in the current window
Christian Brabandt <cb@256bit.org>
parents: 12056
diff changeset
350
a879814b8a37 patch 8.0.0910: cannot create a terminal in the current window
Christian Brabandt <cb@256bit.org>
parents: 12056
diff changeset
351 func Test_terminal_curwin()
a879814b8a37 patch 8.0.0910: cannot create a terminal in the current window
Christian Brabandt <cb@256bit.org>
parents: 12056
diff changeset
352 let cmd = Get_cat_123_cmd()
a879814b8a37 patch 8.0.0910: cannot create a terminal in the current window
Christian Brabandt <cb@256bit.org>
parents: 12056
diff changeset
353 call assert_equal(1, winnr('$'))
a879814b8a37 patch 8.0.0910: cannot create a terminal in the current window
Christian Brabandt <cb@256bit.org>
parents: 12056
diff changeset
354
a879814b8a37 patch 8.0.0910: cannot create a terminal in the current window
Christian Brabandt <cb@256bit.org>
parents: 12056
diff changeset
355 split dummy
a879814b8a37 patch 8.0.0910: cannot create a terminal in the current window
Christian Brabandt <cb@256bit.org>
parents: 12056
diff changeset
356 exe 'terminal ++curwin ' . cmd
a879814b8a37 patch 8.0.0910: cannot create a terminal in the current window
Christian Brabandt <cb@256bit.org>
parents: 12056
diff changeset
357 call assert_equal(2, winnr('$'))
a879814b8a37 patch 8.0.0910: cannot create a terminal in the current window
Christian Brabandt <cb@256bit.org>
parents: 12056
diff changeset
358 bwipe!
a879814b8a37 patch 8.0.0910: cannot create a terminal in the current window
Christian Brabandt <cb@256bit.org>
parents: 12056
diff changeset
359
a879814b8a37 patch 8.0.0910: cannot create a terminal in the current window
Christian Brabandt <cb@256bit.org>
parents: 12056
diff changeset
360 split dummy
a879814b8a37 patch 8.0.0910: cannot create a terminal in the current window
Christian Brabandt <cb@256bit.org>
parents: 12056
diff changeset
361 call term_start(cmd, {'curwin': 1})
a879814b8a37 patch 8.0.0910: cannot create a terminal in the current window
Christian Brabandt <cb@256bit.org>
parents: 12056
diff changeset
362 call assert_equal(2, winnr('$'))
a879814b8a37 patch 8.0.0910: cannot create a terminal in the current window
Christian Brabandt <cb@256bit.org>
parents: 12056
diff changeset
363 bwipe!
a879814b8a37 patch 8.0.0910: cannot create a terminal in the current window
Christian Brabandt <cb@256bit.org>
parents: 12056
diff changeset
364
a879814b8a37 patch 8.0.0910: cannot create a terminal in the current window
Christian Brabandt <cb@256bit.org>
parents: 12056
diff changeset
365 split dummy
a879814b8a37 patch 8.0.0910: cannot create a terminal in the current window
Christian Brabandt <cb@256bit.org>
parents: 12056
diff changeset
366 call setline(1, 'change')
a879814b8a37 patch 8.0.0910: cannot create a terminal in the current window
Christian Brabandt <cb@256bit.org>
parents: 12056
diff changeset
367 call assert_fails('terminal ++curwin ' . cmd, 'E37:')
a879814b8a37 patch 8.0.0910: cannot create a terminal in the current window
Christian Brabandt <cb@256bit.org>
parents: 12056
diff changeset
368 call assert_equal(2, winnr('$'))
a879814b8a37 patch 8.0.0910: cannot create a terminal in the current window
Christian Brabandt <cb@256bit.org>
parents: 12056
diff changeset
369 exe 'terminal! ++curwin ' . cmd
a879814b8a37 patch 8.0.0910: cannot create a terminal in the current window
Christian Brabandt <cb@256bit.org>
parents: 12056
diff changeset
370 call assert_equal(2, winnr('$'))
a879814b8a37 patch 8.0.0910: cannot create a terminal in the current window
Christian Brabandt <cb@256bit.org>
parents: 12056
diff changeset
371 bwipe!
a879814b8a37 patch 8.0.0910: cannot create a terminal in the current window
Christian Brabandt <cb@256bit.org>
parents: 12056
diff changeset
372
a879814b8a37 patch 8.0.0910: cannot create a terminal in the current window
Christian Brabandt <cb@256bit.org>
parents: 12056
diff changeset
373 split dummy
a879814b8a37 patch 8.0.0910: cannot create a terminal in the current window
Christian Brabandt <cb@256bit.org>
parents: 12056
diff changeset
374 call setline(1, 'change')
a879814b8a37 patch 8.0.0910: cannot create a terminal in the current window
Christian Brabandt <cb@256bit.org>
parents: 12056
diff changeset
375 call assert_fails("call term_start(cmd, {'curwin': 1})", 'E37:')
a879814b8a37 patch 8.0.0910: cannot create a terminal in the current window
Christian Brabandt <cb@256bit.org>
parents: 12056
diff changeset
376 call assert_equal(2, winnr('$'))
a879814b8a37 patch 8.0.0910: cannot create a terminal in the current window
Christian Brabandt <cb@256bit.org>
parents: 12056
diff changeset
377 bwipe!
a879814b8a37 patch 8.0.0910: cannot create a terminal in the current window
Christian Brabandt <cb@256bit.org>
parents: 12056
diff changeset
378
a879814b8a37 patch 8.0.0910: cannot create a terminal in the current window
Christian Brabandt <cb@256bit.org>
parents: 12056
diff changeset
379 split dummy
a879814b8a37 patch 8.0.0910: cannot create a terminal in the current window
Christian Brabandt <cb@256bit.org>
parents: 12056
diff changeset
380 bwipe!
12343
72046661f6d0 patch 8.0.1051: cannot run terminal with spaces in argument
Christian Brabandt <cb@256bit.org>
parents: 12339
diff changeset
381 call delete('Xtext')
11975
5cc005cf312f patch 8.0.0868: cannot specify the terminal size on the command line
Christian Brabandt <cb@256bit.org>
parents: 11973
diff changeset
382 endfunc
12031
9897241c08b5 patch 8.0.0896: cannot close a terminal window when the job ends
Christian Brabandt <cb@256bit.org>
parents: 12025
diff changeset
383
12903
411a30bd7e8a patch 8.0.1328: trouble when using ":term ++close" with autocmd
Christian Brabandt <cb@256bit.org>
parents: 12765
diff changeset
384 func s:get_sleep_cmd()
12062
191ccece2f5d patch 8.0.0911: terminal test takes too long
Christian Brabandt <cb@256bit.org>
parents: 12060
diff changeset
385 if s:python != ''
191ccece2f5d patch 8.0.0911: terminal test takes too long
Christian Brabandt <cb@256bit.org>
parents: 12060
diff changeset
386 let cmd = s:python . " test_short_sleep.py"
191ccece2f5d patch 8.0.0911: terminal test takes too long
Christian Brabandt <cb@256bit.org>
parents: 12060
diff changeset
387 let waittime = 500
12031
9897241c08b5 patch 8.0.0896: cannot close a terminal window when the job ends
Christian Brabandt <cb@256bit.org>
parents: 12025
diff changeset
388 else
12062
191ccece2f5d patch 8.0.0911: terminal test takes too long
Christian Brabandt <cb@256bit.org>
parents: 12060
diff changeset
389 echo 'This will take five seconds...'
191ccece2f5d patch 8.0.0911: terminal test takes too long
Christian Brabandt <cb@256bit.org>
parents: 12060
diff changeset
390 let waittime = 2000
191ccece2f5d patch 8.0.0911: terminal test takes too long
Christian Brabandt <cb@256bit.org>
parents: 12060
diff changeset
391 if has('win32')
191ccece2f5d patch 8.0.0911: terminal test takes too long
Christian Brabandt <cb@256bit.org>
parents: 12060
diff changeset
392 let cmd = $windir . '\system32\timeout.exe 1'
191ccece2f5d patch 8.0.0911: terminal test takes too long
Christian Brabandt <cb@256bit.org>
parents: 12060
diff changeset
393 else
191ccece2f5d patch 8.0.0911: terminal test takes too long
Christian Brabandt <cb@256bit.org>
parents: 12060
diff changeset
394 let cmd = 'sleep 1'
191ccece2f5d patch 8.0.0911: terminal test takes too long
Christian Brabandt <cb@256bit.org>
parents: 12060
diff changeset
395 endif
12031
9897241c08b5 patch 8.0.0896: cannot close a terminal window when the job ends
Christian Brabandt <cb@256bit.org>
parents: 12025
diff changeset
396 endif
12903
411a30bd7e8a patch 8.0.1328: trouble when using ":term ++close" with autocmd
Christian Brabandt <cb@256bit.org>
parents: 12765
diff changeset
397 return [cmd, waittime]
411a30bd7e8a patch 8.0.1328: trouble when using ":term ++close" with autocmd
Christian Brabandt <cb@256bit.org>
parents: 12765
diff changeset
398 endfunc
411a30bd7e8a patch 8.0.1328: trouble when using ":term ++close" with autocmd
Christian Brabandt <cb@256bit.org>
parents: 12765
diff changeset
399
411a30bd7e8a patch 8.0.1328: trouble when using ":term ++close" with autocmd
Christian Brabandt <cb@256bit.org>
parents: 12765
diff changeset
400 func Test_terminal_finish_open_close()
411a30bd7e8a patch 8.0.1328: trouble when using ":term ++close" with autocmd
Christian Brabandt <cb@256bit.org>
parents: 12765
diff changeset
401 call assert_equal(1, winnr('$'))
411a30bd7e8a patch 8.0.1328: trouble when using ":term ++close" with autocmd
Christian Brabandt <cb@256bit.org>
parents: 12765
diff changeset
402
411a30bd7e8a patch 8.0.1328: trouble when using ":term ++close" with autocmd
Christian Brabandt <cb@256bit.org>
parents: 12765
diff changeset
403 let [cmd, waittime] = s:get_sleep_cmd()
12062
191ccece2f5d patch 8.0.0911: terminal test takes too long
Christian Brabandt <cb@256bit.org>
parents: 12060
diff changeset
404
13476
d130044d4f1f patch 8.0.1612: need to close terminal after shell stopped
Christian Brabandt <cb@256bit.org>
parents: 13462
diff changeset
405 " shell terminal closes automatically
d130044d4f1f patch 8.0.1612: need to close terminal after shell stopped
Christian Brabandt <cb@256bit.org>
parents: 13462
diff changeset
406 terminal
d130044d4f1f patch 8.0.1612: need to close terminal after shell stopped
Christian Brabandt <cb@256bit.org>
parents: 13462
diff changeset
407 let buf = bufnr('%')
d130044d4f1f patch 8.0.1612: need to close terminal after shell stopped
Christian Brabandt <cb@256bit.org>
parents: 13462
diff changeset
408 call assert_equal(2, winnr('$'))
d130044d4f1f patch 8.0.1612: need to close terminal after shell stopped
Christian Brabandt <cb@256bit.org>
parents: 13462
diff changeset
409 " Wait for the shell to display a prompt
13808
16a062cf08c2 patch 8.0.1776: in tests, when WaitFor() fails it doesn't say why
Christian Brabandt <cb@256bit.org>
parents: 13798
diff changeset
410 call WaitForAssert({-> assert_notequal('', term_getline(buf, 1))})
13476
d130044d4f1f patch 8.0.1612: need to close terminal after shell stopped
Christian Brabandt <cb@256bit.org>
parents: 13462
diff changeset
411 call Stop_shell_in_terminal(buf)
13808
16a062cf08c2 patch 8.0.1776: in tests, when WaitFor() fails it doesn't say why
Christian Brabandt <cb@256bit.org>
parents: 13798
diff changeset
412 call WaitForAssert({-> assert_equal(1, winnr('$'))}, waittime)
13476
d130044d4f1f patch 8.0.1612: need to close terminal after shell stopped
Christian Brabandt <cb@256bit.org>
parents: 13462
diff changeset
413
d130044d4f1f patch 8.0.1612: need to close terminal after shell stopped
Christian Brabandt <cb@256bit.org>
parents: 13462
diff changeset
414 " shell terminal that does not close automatically
d130044d4f1f patch 8.0.1612: need to close terminal after shell stopped
Christian Brabandt <cb@256bit.org>
parents: 13462
diff changeset
415 terminal ++noclose
d130044d4f1f patch 8.0.1612: need to close terminal after shell stopped
Christian Brabandt <cb@256bit.org>
parents: 13462
diff changeset
416 let buf = bufnr('%')
d130044d4f1f patch 8.0.1612: need to close terminal after shell stopped
Christian Brabandt <cb@256bit.org>
parents: 13462
diff changeset
417 call assert_equal(2, winnr('$'))
d130044d4f1f patch 8.0.1612: need to close terminal after shell stopped
Christian Brabandt <cb@256bit.org>
parents: 13462
diff changeset
418 " Wait for the shell to display a prompt
13808
16a062cf08c2 patch 8.0.1776: in tests, when WaitFor() fails it doesn't say why
Christian Brabandt <cb@256bit.org>
parents: 13798
diff changeset
419 call WaitForAssert({-> assert_notequal('', term_getline(buf, 1))})
13476
d130044d4f1f patch 8.0.1612: need to close terminal after shell stopped
Christian Brabandt <cb@256bit.org>
parents: 13462
diff changeset
420 call Stop_shell_in_terminal(buf)
d130044d4f1f patch 8.0.1612: need to close terminal after shell stopped
Christian Brabandt <cb@256bit.org>
parents: 13462
diff changeset
421 call assert_equal(2, winnr('$'))
d130044d4f1f patch 8.0.1612: need to close terminal after shell stopped
Christian Brabandt <cb@256bit.org>
parents: 13462
diff changeset
422 quit
d130044d4f1f patch 8.0.1612: need to close terminal after shell stopped
Christian Brabandt <cb@256bit.org>
parents: 13462
diff changeset
423 call assert_equal(1, winnr('$'))
d130044d4f1f patch 8.0.1612: need to close terminal after shell stopped
Christian Brabandt <cb@256bit.org>
parents: 13462
diff changeset
424
12031
9897241c08b5 patch 8.0.0896: cannot close a terminal window when the job ends
Christian Brabandt <cb@256bit.org>
parents: 12025
diff changeset
425 exe 'terminal ++close ' . cmd
9897241c08b5 patch 8.0.0896: cannot close a terminal window when the job ends
Christian Brabandt <cb@256bit.org>
parents: 12025
diff changeset
426 call assert_equal(2, winnr('$'))
9897241c08b5 patch 8.0.0896: cannot close a terminal window when the job ends
Christian Brabandt <cb@256bit.org>
parents: 12025
diff changeset
427 wincmd p
13808
16a062cf08c2 patch 8.0.1776: in tests, when WaitFor() fails it doesn't say why
Christian Brabandt <cb@256bit.org>
parents: 13798
diff changeset
428 call WaitForAssert({-> assert_equal(1, winnr('$'))}, waittime)
12031
9897241c08b5 patch 8.0.0896: cannot close a terminal window when the job ends
Christian Brabandt <cb@256bit.org>
parents: 12025
diff changeset
429
9897241c08b5 patch 8.0.0896: cannot close a terminal window when the job ends
Christian Brabandt <cb@256bit.org>
parents: 12025
diff changeset
430 call term_start(cmd, {'term_finish': 'close'})
9897241c08b5 patch 8.0.0896: cannot close a terminal window when the job ends
Christian Brabandt <cb@256bit.org>
parents: 12025
diff changeset
431 call assert_equal(2, winnr('$'))
9897241c08b5 patch 8.0.0896: cannot close a terminal window when the job ends
Christian Brabandt <cb@256bit.org>
parents: 12025
diff changeset
432 wincmd p
13808
16a062cf08c2 patch 8.0.1776: in tests, when WaitFor() fails it doesn't say why
Christian Brabandt <cb@256bit.org>
parents: 13798
diff changeset
433 call WaitForAssert({-> assert_equal(1, winnr('$'))}, waittime)
12031
9897241c08b5 patch 8.0.0896: cannot close a terminal window when the job ends
Christian Brabandt <cb@256bit.org>
parents: 12025
diff changeset
434 call assert_equal(1, winnr('$'))
9897241c08b5 patch 8.0.0896: cannot close a terminal window when the job ends
Christian Brabandt <cb@256bit.org>
parents: 12025
diff changeset
435
9897241c08b5 patch 8.0.0896: cannot close a terminal window when the job ends
Christian Brabandt <cb@256bit.org>
parents: 12025
diff changeset
436 exe 'terminal ++open ' . cmd
12271
e4aa68825575 patch 8.0.1015: missing update to terminal test
Christian Brabandt <cb@256bit.org>
parents: 12263
diff changeset
437 close!
13808
16a062cf08c2 patch 8.0.1776: in tests, when WaitFor() fails it doesn't say why
Christian Brabandt <cb@256bit.org>
parents: 13798
diff changeset
438 call WaitForAssert({-> assert_equal(2, winnr('$'))}, waittime)
12031
9897241c08b5 patch 8.0.0896: cannot close a terminal window when the job ends
Christian Brabandt <cb@256bit.org>
parents: 12025
diff changeset
439 bwipe
9897241c08b5 patch 8.0.0896: cannot close a terminal window when the job ends
Christian Brabandt <cb@256bit.org>
parents: 12025
diff changeset
440
9897241c08b5 patch 8.0.0896: cannot close a terminal window when the job ends
Christian Brabandt <cb@256bit.org>
parents: 12025
diff changeset
441 call term_start(cmd, {'term_finish': 'open'})
12271
e4aa68825575 patch 8.0.1015: missing update to terminal test
Christian Brabandt <cb@256bit.org>
parents: 12263
diff changeset
442 close!
13808
16a062cf08c2 patch 8.0.1776: in tests, when WaitFor() fails it doesn't say why
Christian Brabandt <cb@256bit.org>
parents: 13798
diff changeset
443 call WaitForAssert({-> assert_equal(2, winnr('$'))}, waittime)
12064
407a475c67fd patch 8.0.0912: cannot run a job in a hidden terminal
Christian Brabandt <cb@256bit.org>
parents: 12062
diff changeset
444 bwipe
12031
9897241c08b5 patch 8.0.0896: cannot close a terminal window when the job ends
Christian Brabandt <cb@256bit.org>
parents: 12025
diff changeset
445
12064
407a475c67fd patch 8.0.0912: cannot run a job in a hidden terminal
Christian Brabandt <cb@256bit.org>
parents: 12062
diff changeset
446 exe 'terminal ++hidden ++open ' . cmd
407a475c67fd patch 8.0.0912: cannot run a job in a hidden terminal
Christian Brabandt <cb@256bit.org>
parents: 12062
diff changeset
447 call assert_equal(1, winnr('$'))
13808
16a062cf08c2 patch 8.0.1776: in tests, when WaitFor() fails it doesn't say why
Christian Brabandt <cb@256bit.org>
parents: 13798
diff changeset
448 call WaitForAssert({-> assert_equal(2, winnr('$'))}, waittime)
12064
407a475c67fd patch 8.0.0912: cannot run a job in a hidden terminal
Christian Brabandt <cb@256bit.org>
parents: 12062
diff changeset
449 bwipe
407a475c67fd patch 8.0.0912: cannot run a job in a hidden terminal
Christian Brabandt <cb@256bit.org>
parents: 12062
diff changeset
450
407a475c67fd patch 8.0.0912: cannot run a job in a hidden terminal
Christian Brabandt <cb@256bit.org>
parents: 12062
diff changeset
451 call term_start(cmd, {'term_finish': 'open', 'hidden': 1})
407a475c67fd patch 8.0.0912: cannot run a job in a hidden terminal
Christian Brabandt <cb@256bit.org>
parents: 12062
diff changeset
452 call assert_equal(1, winnr('$'))
13808
16a062cf08c2 patch 8.0.1776: in tests, when WaitFor() fails it doesn't say why
Christian Brabandt <cb@256bit.org>
parents: 13798
diff changeset
453 call WaitForAssert({-> assert_equal(2, winnr('$'))}, waittime)
12031
9897241c08b5 patch 8.0.0896: cannot close a terminal window when the job ends
Christian Brabandt <cb@256bit.org>
parents: 12025
diff changeset
454 bwipe
12072
f4e1e1e6886b patch 8.0.0916: cannot specify properties of window for terminal open
Christian Brabandt <cb@256bit.org>
parents: 12064
diff changeset
455
f4e1e1e6886b patch 8.0.0916: cannot specify properties of window for terminal open
Christian Brabandt <cb@256bit.org>
parents: 12064
diff changeset
456 call assert_fails("call term_start(cmd, {'term_opencmd': 'open'})", 'E475:')
f4e1e1e6886b patch 8.0.0916: cannot specify properties of window for terminal open
Christian Brabandt <cb@256bit.org>
parents: 12064
diff changeset
457 call assert_fails("call term_start(cmd, {'term_opencmd': 'split %x'})", 'E475:')
f4e1e1e6886b patch 8.0.0916: cannot specify properties of window for terminal open
Christian Brabandt <cb@256bit.org>
parents: 12064
diff changeset
458 call assert_fails("call term_start(cmd, {'term_opencmd': 'split %d and %s'})", 'E475:')
f4e1e1e6886b patch 8.0.0916: cannot specify properties of window for terminal open
Christian Brabandt <cb@256bit.org>
parents: 12064
diff changeset
459 call assert_fails("call term_start(cmd, {'term_opencmd': 'split % and %d'})", 'E475:')
f4e1e1e6886b patch 8.0.0916: cannot specify properties of window for terminal open
Christian Brabandt <cb@256bit.org>
parents: 12064
diff changeset
460
f4e1e1e6886b patch 8.0.0916: cannot specify properties of window for terminal open
Christian Brabandt <cb@256bit.org>
parents: 12064
diff changeset
461 call term_start(cmd, {'term_finish': 'open', 'term_opencmd': '4split | buffer %d'})
12271
e4aa68825575 patch 8.0.1015: missing update to terminal test
Christian Brabandt <cb@256bit.org>
parents: 12263
diff changeset
462 close!
13808
16a062cf08c2 patch 8.0.1776: in tests, when WaitFor() fails it doesn't say why
Christian Brabandt <cb@256bit.org>
parents: 13798
diff changeset
463 call WaitForAssert({-> assert_equal(2, winnr('$'))}, waittime)
12072
f4e1e1e6886b patch 8.0.0916: cannot specify properties of window for terminal open
Christian Brabandt <cb@256bit.org>
parents: 12064
diff changeset
464 call assert_equal(4, winheight(0))
f4e1e1e6886b patch 8.0.0916: cannot specify properties of window for terminal open
Christian Brabandt <cb@256bit.org>
parents: 12064
diff changeset
465 bwipe
12031
9897241c08b5 patch 8.0.0896: cannot close a terminal window when the job ends
Christian Brabandt <cb@256bit.org>
parents: 12025
diff changeset
466 endfunc
12043
2796a2c9fc17 patch 8.0.0902: cannot specify directory or environment for a job
Christian Brabandt <cb@256bit.org>
parents: 12031
diff changeset
467
2796a2c9fc17 patch 8.0.0902: cannot specify directory or environment for a job
Christian Brabandt <cb@256bit.org>
parents: 12031
diff changeset
468 func Test_terminal_cwd()
12415
cd66083e371e patch 8.0.1087: Test_terminal_cwd is flaky
Christian Brabandt <cb@256bit.org>
parents: 12407
diff changeset
469 if !executable('pwd')
12043
2796a2c9fc17 patch 8.0.0902: cannot specify directory or environment for a job
Christian Brabandt <cb@256bit.org>
parents: 12031
diff changeset
470 return
2796a2c9fc17 patch 8.0.0902: cannot specify directory or environment for a job
Christian Brabandt <cb@256bit.org>
parents: 12031
diff changeset
471 endif
2796a2c9fc17 patch 8.0.0902: cannot specify directory or environment for a job
Christian Brabandt <cb@256bit.org>
parents: 12031
diff changeset
472 call mkdir('Xdir')
2796a2c9fc17 patch 8.0.0902: cannot specify directory or environment for a job
Christian Brabandt <cb@256bit.org>
parents: 12031
diff changeset
473 let buf = term_start('pwd', {'cwd': 'Xdir'})
13808
16a062cf08c2 patch 8.0.1776: in tests, when WaitFor() fails it doesn't say why
Christian Brabandt <cb@256bit.org>
parents: 13798
diff changeset
474 call WaitForAssert({-> assert_equal('Xdir', fnamemodify(getline(1), ":t"))})
12043
2796a2c9fc17 patch 8.0.0902: cannot specify directory or environment for a job
Christian Brabandt <cb@256bit.org>
parents: 12031
diff changeset
475
2796a2c9fc17 patch 8.0.0902: cannot specify directory or environment for a job
Christian Brabandt <cb@256bit.org>
parents: 12031
diff changeset
476 exe buf . 'bwipe'
2796a2c9fc17 patch 8.0.0902: cannot specify directory or environment for a job
Christian Brabandt <cb@256bit.org>
parents: 12031
diff changeset
477 call delete('Xdir', 'rf')
2796a2c9fc17 patch 8.0.0902: cannot specify directory or environment for a job
Christian Brabandt <cb@256bit.org>
parents: 12031
diff changeset
478 endfunc
2796a2c9fc17 patch 8.0.0902: cannot specify directory or environment for a job
Christian Brabandt <cb@256bit.org>
parents: 12031
diff changeset
479
12907
32531a3eab1f patch 8.0.1330: MS-Windows: job in terminal can't get back to Vim
Christian Brabandt <cb@256bit.org>
parents: 12903
diff changeset
480 func Test_terminal_servername()
32531a3eab1f patch 8.0.1330: MS-Windows: job in terminal can't get back to Vim
Christian Brabandt <cb@256bit.org>
parents: 12903
diff changeset
481 if !has('clientserver')
32531a3eab1f patch 8.0.1330: MS-Windows: job in terminal can't get back to Vim
Christian Brabandt <cb@256bit.org>
parents: 12903
diff changeset
482 return
32531a3eab1f patch 8.0.1330: MS-Windows: job in terminal can't get back to Vim
Christian Brabandt <cb@256bit.org>
parents: 12903
diff changeset
483 endif
13462
568dcfac9daf patch 8.0.1605: terminal test is a bit flaky
Christian Brabandt <cb@256bit.org>
parents: 13444
diff changeset
484 let buf = Run_shell_in_terminal({})
12907
32531a3eab1f patch 8.0.1330: MS-Windows: job in terminal can't get back to Vim
Christian Brabandt <cb@256bit.org>
parents: 12903
diff changeset
485 " Wait for the shell to display a prompt
13808
16a062cf08c2 patch 8.0.1776: in tests, when WaitFor() fails it doesn't say why
Christian Brabandt <cb@256bit.org>
parents: 13798
diff changeset
486 call WaitForAssert({-> assert_notequal('', term_getline(buf, 1))})
12907
32531a3eab1f patch 8.0.1330: MS-Windows: job in terminal can't get back to Vim
Christian Brabandt <cb@256bit.org>
parents: 12903
diff changeset
487 if has('win32')
13462
568dcfac9daf patch 8.0.1605: terminal test is a bit flaky
Christian Brabandt <cb@256bit.org>
parents: 13444
diff changeset
488 call term_sendkeys(buf, "echo %VIM_SERVERNAME%\r")
12907
32531a3eab1f patch 8.0.1330: MS-Windows: job in terminal can't get back to Vim
Christian Brabandt <cb@256bit.org>
parents: 12903
diff changeset
489 else
13462
568dcfac9daf patch 8.0.1605: terminal test is a bit flaky
Christian Brabandt <cb@256bit.org>
parents: 13444
diff changeset
490 call term_sendkeys(buf, "echo $VIM_SERVERNAME\r")
12907
32531a3eab1f patch 8.0.1330: MS-Windows: job in terminal can't get back to Vim
Christian Brabandt <cb@256bit.org>
parents: 12903
diff changeset
491 endif
13462
568dcfac9daf patch 8.0.1605: terminal test is a bit flaky
Christian Brabandt <cb@256bit.org>
parents: 13444
diff changeset
492 call term_wait(buf)
568dcfac9daf patch 8.0.1605: terminal test is a bit flaky
Christian Brabandt <cb@256bit.org>
parents: 13444
diff changeset
493 call Stop_shell_in_terminal(buf)
12907
32531a3eab1f patch 8.0.1330: MS-Windows: job in terminal can't get back to Vim
Christian Brabandt <cb@256bit.org>
parents: 12903
diff changeset
494 call WaitFor('getline(2) == v:servername')
32531a3eab1f patch 8.0.1330: MS-Windows: job in terminal can't get back to Vim
Christian Brabandt <cb@256bit.org>
parents: 12903
diff changeset
495 call assert_equal(v:servername, getline(2))
32531a3eab1f patch 8.0.1330: MS-Windows: job in terminal can't get back to Vim
Christian Brabandt <cb@256bit.org>
parents: 12903
diff changeset
496
13462
568dcfac9daf patch 8.0.1605: terminal test is a bit flaky
Christian Brabandt <cb@256bit.org>
parents: 13444
diff changeset
497 exe buf . 'bwipe'
568dcfac9daf patch 8.0.1605: terminal test is a bit flaky
Christian Brabandt <cb@256bit.org>
parents: 13444
diff changeset
498 unlet buf
12907
32531a3eab1f patch 8.0.1330: MS-Windows: job in terminal can't get back to Vim
Christian Brabandt <cb@256bit.org>
parents: 12903
diff changeset
499 endfunc
32531a3eab1f patch 8.0.1330: MS-Windows: job in terminal can't get back to Vim
Christian Brabandt <cb@256bit.org>
parents: 12903
diff changeset
500
12043
2796a2c9fc17 patch 8.0.0902: cannot specify directory or environment for a job
Christian Brabandt <cb@256bit.org>
parents: 12031
diff changeset
501 func Test_terminal_env()
13462
568dcfac9daf patch 8.0.1605: terminal test is a bit flaky
Christian Brabandt <cb@256bit.org>
parents: 13444
diff changeset
502 let buf = Run_shell_in_terminal({'env': {'TESTENV': 'correct'}})
12118
bf53df1f17ba patch 8.0.0939: Test_terminal_env is flaky
Christian Brabandt <cb@256bit.org>
parents: 12112
diff changeset
503 " Wait for the shell to display a prompt
13808
16a062cf08c2 patch 8.0.1776: in tests, when WaitFor() fails it doesn't say why
Christian Brabandt <cb@256bit.org>
parents: 13798
diff changeset
504 call WaitForAssert({-> assert_notequal('', term_getline(buf, 1))})
12724
17c257dd2438 patch 8.0.1240: MS-Windows: term_start() does not support environment
Christian Brabandt <cb@256bit.org>
parents: 12650
diff changeset
505 if has('win32')
13462
568dcfac9daf patch 8.0.1605: terminal test is a bit flaky
Christian Brabandt <cb@256bit.org>
parents: 13444
diff changeset
506 call term_sendkeys(buf, "echo %TESTENV%\r")
12724
17c257dd2438 patch 8.0.1240: MS-Windows: term_start() does not support environment
Christian Brabandt <cb@256bit.org>
parents: 12650
diff changeset
507 else
13462
568dcfac9daf patch 8.0.1605: terminal test is a bit flaky
Christian Brabandt <cb@256bit.org>
parents: 13444
diff changeset
508 call term_sendkeys(buf, "echo $TESTENV\r")
12724
17c257dd2438 patch 8.0.1240: MS-Windows: term_start() does not support environment
Christian Brabandt <cb@256bit.org>
parents: 12650
diff changeset
509 endif
13462
568dcfac9daf patch 8.0.1605: terminal test is a bit flaky
Christian Brabandt <cb@256bit.org>
parents: 13444
diff changeset
510 call term_wait(buf)
568dcfac9daf patch 8.0.1605: terminal test is a bit flaky
Christian Brabandt <cb@256bit.org>
parents: 13444
diff changeset
511 call Stop_shell_in_terminal(buf)
13808
16a062cf08c2 patch 8.0.1776: in tests, when WaitFor() fails it doesn't say why
Christian Brabandt <cb@256bit.org>
parents: 13798
diff changeset
512 call WaitForAssert({-> assert_equal('correct', getline(2))})
12043
2796a2c9fc17 patch 8.0.0902: cannot specify directory or environment for a job
Christian Brabandt <cb@256bit.org>
parents: 12031
diff changeset
513
13462
568dcfac9daf patch 8.0.1605: terminal test is a bit flaky
Christian Brabandt <cb@256bit.org>
parents: 13444
diff changeset
514 exe buf . 'bwipe'
12043
2796a2c9fc17 patch 8.0.0902: cannot specify directory or environment for a job
Christian Brabandt <cb@256bit.org>
parents: 12031
diff changeset
515 endfunc
12086
69f2392e6cfb patch 8.0.0923: crash in GUI when terminal job exits
Christian Brabandt <cb@256bit.org>
parents: 12072
diff changeset
516
69f2392e6cfb patch 8.0.0923: crash in GUI when terminal job exits
Christian Brabandt <cb@256bit.org>
parents: 12072
diff changeset
517 " must be last, we can't go back from GUI to terminal
69f2392e6cfb patch 8.0.0923: crash in GUI when terminal job exits
Christian Brabandt <cb@256bit.org>
parents: 12072
diff changeset
518 func Test_zz_terminal_in_gui()
12106
d2c20ec4b95a patch 8.0.0933: terminal test tries to start GUI when it's not possible
Christian Brabandt <cb@256bit.org>
parents: 12096
diff changeset
519 if !CanRunGui()
12086
69f2392e6cfb patch 8.0.0923: crash in GUI when terminal job exits
Christian Brabandt <cb@256bit.org>
parents: 12072
diff changeset
520 return
69f2392e6cfb patch 8.0.0923: crash in GUI when terminal job exits
Christian Brabandt <cb@256bit.org>
parents: 12072
diff changeset
521 endif
12263
eddd5ea01116 patch 8.0.1011: terminal test fails with Athena and Motif
Christian Brabandt <cb@256bit.org>
parents: 12240
diff changeset
522
eddd5ea01116 patch 8.0.1011: terminal test fails with Athena and Motif
Christian Brabandt <cb@256bit.org>
parents: 12240
diff changeset
523 " Ignore the "failed to create input context" error.
eddd5ea01116 patch 8.0.1011: terminal test fails with Athena and Motif
Christian Brabandt <cb@256bit.org>
parents: 12240
diff changeset
524 call test_ignore_error('E285:')
eddd5ea01116 patch 8.0.1011: terminal test fails with Athena and Motif
Christian Brabandt <cb@256bit.org>
parents: 12240
diff changeset
525
12086
69f2392e6cfb patch 8.0.0923: crash in GUI when terminal job exits
Christian Brabandt <cb@256bit.org>
parents: 12072
diff changeset
526 gui -f
69f2392e6cfb patch 8.0.0923: crash in GUI when terminal job exits
Christian Brabandt <cb@256bit.org>
parents: 12072
diff changeset
527
69f2392e6cfb patch 8.0.0923: crash in GUI when terminal job exits
Christian Brabandt <cb@256bit.org>
parents: 12072
diff changeset
528 call assert_equal(1, winnr('$'))
69f2392e6cfb patch 8.0.0923: crash in GUI when terminal job exits
Christian Brabandt <cb@256bit.org>
parents: 12072
diff changeset
529 let buf = Run_shell_in_terminal({'term_finish': 'close'})
69f2392e6cfb patch 8.0.0923: crash in GUI when terminal job exits
Christian Brabandt <cb@256bit.org>
parents: 12072
diff changeset
530 call Stop_shell_in_terminal(buf)
69f2392e6cfb patch 8.0.0923: crash in GUI when terminal job exits
Christian Brabandt <cb@256bit.org>
parents: 12072
diff changeset
531 call term_wait(buf)
69f2392e6cfb patch 8.0.0923: crash in GUI when terminal job exits
Christian Brabandt <cb@256bit.org>
parents: 12072
diff changeset
532
69f2392e6cfb patch 8.0.0923: crash in GUI when terminal job exits
Christian Brabandt <cb@256bit.org>
parents: 12072
diff changeset
533 " closing window wipes out the terminal buffer a with finished job
13808
16a062cf08c2 patch 8.0.1776: in tests, when WaitFor() fails it doesn't say why
Christian Brabandt <cb@256bit.org>
parents: 13798
diff changeset
534 call WaitForAssert({-> assert_equal(1, winnr('$'))})
12086
69f2392e6cfb patch 8.0.0923: crash in GUI when terminal job exits
Christian Brabandt <cb@256bit.org>
parents: 12072
diff changeset
535 call assert_equal("", bufname(buf))
69f2392e6cfb patch 8.0.0923: crash in GUI when terminal job exits
Christian Brabandt <cb@256bit.org>
parents: 12072
diff changeset
536
69f2392e6cfb patch 8.0.0923: crash in GUI when terminal job exits
Christian Brabandt <cb@256bit.org>
parents: 12072
diff changeset
537 unlet g:job
69f2392e6cfb patch 8.0.0923: crash in GUI when terminal job exits
Christian Brabandt <cb@256bit.org>
parents: 12072
diff changeset
538 endfunc
12096
0a61213afdd2 patch 8.0.0928: MS-Windows: passing arglist to job has escaping problems
Christian Brabandt <cb@256bit.org>
parents: 12086
diff changeset
539
0a61213afdd2 patch 8.0.0928: MS-Windows: passing arglist to job has escaping problems
Christian Brabandt <cb@256bit.org>
parents: 12086
diff changeset
540 func Test_terminal_list_args()
0a61213afdd2 patch 8.0.0928: MS-Windows: passing arglist to job has escaping problems
Christian Brabandt <cb@256bit.org>
parents: 12086
diff changeset
541 let buf = term_start([&shell, &shellcmdflag, 'echo "123"'])
0a61213afdd2 patch 8.0.0928: MS-Windows: passing arglist to job has escaping problems
Christian Brabandt <cb@256bit.org>
parents: 12086
diff changeset
542 call assert_fails(buf . 'bwipe', 'E517')
0a61213afdd2 patch 8.0.0928: MS-Windows: passing arglist to job has escaping problems
Christian Brabandt <cb@256bit.org>
parents: 12086
diff changeset
543 exe buf . 'bwipe!'
0a61213afdd2 patch 8.0.0928: MS-Windows: passing arglist to job has escaping problems
Christian Brabandt <cb@256bit.org>
parents: 12086
diff changeset
544 call assert_equal("", bufname(buf))
0a61213afdd2 patch 8.0.0928: MS-Windows: passing arglist to job has escaping problems
Christian Brabandt <cb@256bit.org>
parents: 12086
diff changeset
545 endfunction
12154
71e10b81226d patch 8.0.0957: a terminal job can deadlock when sending many keys
Christian Brabandt <cb@256bit.org>
parents: 12126
diff changeset
546
71e10b81226d patch 8.0.0957: a terminal job can deadlock when sending many keys
Christian Brabandt <cb@256bit.org>
parents: 12126
diff changeset
547 func Test_terminal_noblock()
12765
c1347c968d31 patch 8.0.1260: using global variables for WaitFor()
Christian Brabandt <cb@256bit.org>
parents: 12734
diff changeset
548 let buf = term_start(&shell)
12339
040ec95b8647 patch 8.0.1049: shell on Mac can't handle long text
Christian Brabandt <cb@256bit.org>
parents: 12313
diff changeset
549 if has('mac')
040ec95b8647 patch 8.0.1049: shell on Mac can't handle long text
Christian Brabandt <cb@256bit.org>
parents: 12313
diff changeset
550 " The shell or something else has a problem dealing with more than 1000
040ec95b8647 patch 8.0.1049: shell on Mac can't handle long text
Christian Brabandt <cb@256bit.org>
parents: 12313
diff changeset
551 " characters at the same time.
040ec95b8647 patch 8.0.1049: shell on Mac can't handle long text
Christian Brabandt <cb@256bit.org>
parents: 12313
diff changeset
552 let len = 1000
040ec95b8647 patch 8.0.1049: shell on Mac can't handle long text
Christian Brabandt <cb@256bit.org>
parents: 12313
diff changeset
553 else
040ec95b8647 patch 8.0.1049: shell on Mac can't handle long text
Christian Brabandt <cb@256bit.org>
parents: 12313
diff changeset
554 let len = 5000
040ec95b8647 patch 8.0.1049: shell on Mac can't handle long text
Christian Brabandt <cb@256bit.org>
parents: 12313
diff changeset
555 endif
12154
71e10b81226d patch 8.0.0957: a terminal job can deadlock when sending many keys
Christian Brabandt <cb@256bit.org>
parents: 12126
diff changeset
556
71e10b81226d patch 8.0.0957: a terminal job can deadlock when sending many keys
Christian Brabandt <cb@256bit.org>
parents: 12126
diff changeset
557 for c in ['a','b','c','d','e','f','g','h','i','j','k']
12765
c1347c968d31 patch 8.0.1260: using global variables for WaitFor()
Christian Brabandt <cb@256bit.org>
parents: 12734
diff changeset
558 call term_sendkeys(buf, 'echo ' . repeat(c, len) . "\<cr>")
12154
71e10b81226d patch 8.0.0957: a terminal job can deadlock when sending many keys
Christian Brabandt <cb@256bit.org>
parents: 12126
diff changeset
559 endfor
12765
c1347c968d31 patch 8.0.1260: using global variables for WaitFor()
Christian Brabandt <cb@256bit.org>
parents: 12734
diff changeset
560 call term_sendkeys(buf, "echo done\<cr>")
12198
65cff399750b patch 8.0.0979: terminal noblock test fails on MS-Windows
Christian Brabandt <cb@256bit.org>
parents: 12196
diff changeset
561
65cff399750b patch 8.0.0979: terminal noblock test fails on MS-Windows
Christian Brabandt <cb@256bit.org>
parents: 12196
diff changeset
562 " On MS-Windows there is an extra empty line below "done". Find "done" in
65cff399750b patch 8.0.0979: terminal noblock test fails on MS-Windows
Christian Brabandt <cb@256bit.org>
parents: 12196
diff changeset
563 " the last-but-one or the last-but-two line.
12765
c1347c968d31 patch 8.0.1260: using global variables for WaitFor()
Christian Brabandt <cb@256bit.org>
parents: 12734
diff changeset
564 let lnum = term_getsize(buf)[0] - 1
13158
43bd8bad22b6 patch 8.0.1453: terminal test fails on some slow terminals
Christian Brabandt <cb@256bit.org>
parents: 13156
diff changeset
565 call WaitFor({-> term_getline(buf, lnum) =~ "done" || term_getline(buf, lnum - 1) =~ "done"}, 10000)
12765
c1347c968d31 patch 8.0.1260: using global variables for WaitFor()
Christian Brabandt <cb@256bit.org>
parents: 12734
diff changeset
566 let line = term_getline(buf, lnum)
12198
65cff399750b patch 8.0.0979: terminal noblock test fails on MS-Windows
Christian Brabandt <cb@256bit.org>
parents: 12196
diff changeset
567 if line !~ 'done'
12765
c1347c968d31 patch 8.0.1260: using global variables for WaitFor()
Christian Brabandt <cb@256bit.org>
parents: 12734
diff changeset
568 let line = term_getline(buf, lnum - 1)
12198
65cff399750b patch 8.0.0979: terminal noblock test fails on MS-Windows
Christian Brabandt <cb@256bit.org>
parents: 12196
diff changeset
569 endif
65cff399750b patch 8.0.0979: terminal noblock test fails on MS-Windows
Christian Brabandt <cb@256bit.org>
parents: 12196
diff changeset
570 call assert_match('done', line)
12154
71e10b81226d patch 8.0.0957: a terminal job can deadlock when sending many keys
Christian Brabandt <cb@256bit.org>
parents: 12126
diff changeset
571
12765
c1347c968d31 patch 8.0.1260: using global variables for WaitFor()
Christian Brabandt <cb@256bit.org>
parents: 12734
diff changeset
572 let g:job = term_getjob(buf)
c1347c968d31 patch 8.0.1260: using global variables for WaitFor()
Christian Brabandt <cb@256bit.org>
parents: 12734
diff changeset
573 call Stop_shell_in_terminal(buf)
c1347c968d31 patch 8.0.1260: using global variables for WaitFor()
Christian Brabandt <cb@256bit.org>
parents: 12734
diff changeset
574 call term_wait(buf)
12166
f512c507b061 patch 8.0.0963: terminal test fails on MacOS
Christian Brabandt <cb@256bit.org>
parents: 12156
diff changeset
575 unlet g:job
12154
71e10b81226d patch 8.0.0957: a terminal job can deadlock when sending many keys
Christian Brabandt <cb@256bit.org>
parents: 12126
diff changeset
576 bwipe
71e10b81226d patch 8.0.0957: a terminal job can deadlock when sending many keys
Christian Brabandt <cb@256bit.org>
parents: 12126
diff changeset
577 endfunc
12196
9237b087583c patch 8.0.0978: writing to terminal job is not tested
Christian Brabandt <cb@256bit.org>
parents: 12192
diff changeset
578
9237b087583c patch 8.0.0978: writing to terminal job is not tested
Christian Brabandt <cb@256bit.org>
parents: 12192
diff changeset
579 func Test_terminal_write_stdin()
12309
e1f44e4afe67 patch 8.0.1034: sending buffer lines to terminal doesn't work on MS-Windows
Christian Brabandt <cb@256bit.org>
parents: 12271
diff changeset
580 if !executable('wc')
12313
44f3c9b7eec4 patch 8.0.1036: ++eof argument for terminal only available on MS-Windows
Christian Brabandt <cb@256bit.org>
parents: 12309
diff changeset
581 throw 'skipped: wc command not available'
12196
9237b087583c patch 8.0.0978: writing to terminal job is not tested
Christian Brabandt <cb@256bit.org>
parents: 12192
diff changeset
582 endif
9237b087583c patch 8.0.0978: writing to terminal job is not tested
Christian Brabandt <cb@256bit.org>
parents: 12192
diff changeset
583 new
9237b087583c patch 8.0.0978: writing to terminal job is not tested
Christian Brabandt <cb@256bit.org>
parents: 12192
diff changeset
584 call setline(1, ['one', 'two', 'three'])
9237b087583c patch 8.0.0978: writing to terminal job is not tested
Christian Brabandt <cb@256bit.org>
parents: 12192
diff changeset
585 %term wc
13808
16a062cf08c2 patch 8.0.1776: in tests, when WaitFor() fails it doesn't say why
Christian Brabandt <cb@256bit.org>
parents: 13798
diff changeset
586 call WaitForAssert({-> assert_match('3', getline("$"))})
12309
e1f44e4afe67 patch 8.0.1034: sending buffer lines to terminal doesn't work on MS-Windows
Christian Brabandt <cb@256bit.org>
parents: 12271
diff changeset
587 let nrs = split(getline('$'))
12196
9237b087583c patch 8.0.0978: writing to terminal job is not tested
Christian Brabandt <cb@256bit.org>
parents: 12192
diff changeset
588 call assert_equal(['3', '3', '14'], nrs)
9237b087583c patch 8.0.0978: writing to terminal job is not tested
Christian Brabandt <cb@256bit.org>
parents: 12192
diff changeset
589 bwipe
9237b087583c patch 8.0.0978: writing to terminal job is not tested
Christian Brabandt <cb@256bit.org>
parents: 12192
diff changeset
590
12313
44f3c9b7eec4 patch 8.0.1036: ++eof argument for terminal only available on MS-Windows
Christian Brabandt <cb@256bit.org>
parents: 12309
diff changeset
591 new
12196
9237b087583c patch 8.0.0978: writing to terminal job is not tested
Christian Brabandt <cb@256bit.org>
parents: 12192
diff changeset
592 call setline(1, ['one', 'two', 'three', 'four'])
9237b087583c patch 8.0.0978: writing to terminal job is not tested
Christian Brabandt <cb@256bit.org>
parents: 12192
diff changeset
593 2,3term wc
13808
16a062cf08c2 patch 8.0.1776: in tests, when WaitFor() fails it doesn't say why
Christian Brabandt <cb@256bit.org>
parents: 13798
diff changeset
594 call WaitForAssert({-> assert_match('2', getline("$"))})
12309
e1f44e4afe67 patch 8.0.1034: sending buffer lines to terminal doesn't work on MS-Windows
Christian Brabandt <cb@256bit.org>
parents: 12271
diff changeset
595 let nrs = split(getline('$'))
12196
9237b087583c patch 8.0.0978: writing to terminal job is not tested
Christian Brabandt <cb@256bit.org>
parents: 12192
diff changeset
596 call assert_equal(['2', '2', '10'], nrs)
9237b087583c patch 8.0.0978: writing to terminal job is not tested
Christian Brabandt <cb@256bit.org>
parents: 12192
diff changeset
597 bwipe
9237b087583c patch 8.0.0978: writing to terminal job is not tested
Christian Brabandt <cb@256bit.org>
parents: 12192
diff changeset
598
12313
44f3c9b7eec4 patch 8.0.1036: ++eof argument for terminal only available on MS-Windows
Christian Brabandt <cb@256bit.org>
parents: 12309
diff changeset
599 if executable('python')
44f3c9b7eec4 patch 8.0.1036: ++eof argument for terminal only available on MS-Windows
Christian Brabandt <cb@256bit.org>
parents: 12309
diff changeset
600 new
44f3c9b7eec4 patch 8.0.1036: ++eof argument for terminal only available on MS-Windows
Christian Brabandt <cb@256bit.org>
parents: 12309
diff changeset
601 call setline(1, ['print("hello")'])
44f3c9b7eec4 patch 8.0.1036: ++eof argument for terminal only available on MS-Windows
Christian Brabandt <cb@256bit.org>
parents: 12309
diff changeset
602 1term ++eof=exit() python
44f3c9b7eec4 patch 8.0.1036: ++eof argument for terminal only available on MS-Windows
Christian Brabandt <cb@256bit.org>
parents: 12309
diff changeset
603 " MS-Windows echoes the input, Unix doesn't.
44f3c9b7eec4 patch 8.0.1036: ++eof argument for terminal only available on MS-Windows
Christian Brabandt <cb@256bit.org>
parents: 12309
diff changeset
604 call WaitFor('getline("$") =~ "exit" || getline(1) =~ "hello"')
44f3c9b7eec4 patch 8.0.1036: ++eof argument for terminal only available on MS-Windows
Christian Brabandt <cb@256bit.org>
parents: 12309
diff changeset
605 if getline(1) =~ 'hello'
44f3c9b7eec4 patch 8.0.1036: ++eof argument for terminal only available on MS-Windows
Christian Brabandt <cb@256bit.org>
parents: 12309
diff changeset
606 call assert_equal('hello', getline(1))
44f3c9b7eec4 patch 8.0.1036: ++eof argument for terminal only available on MS-Windows
Christian Brabandt <cb@256bit.org>
parents: 12309
diff changeset
607 else
44f3c9b7eec4 patch 8.0.1036: ++eof argument for terminal only available on MS-Windows
Christian Brabandt <cb@256bit.org>
parents: 12309
diff changeset
608 call assert_equal('hello', getline(line('$') - 1))
44f3c9b7eec4 patch 8.0.1036: ++eof argument for terminal only available on MS-Windows
Christian Brabandt <cb@256bit.org>
parents: 12309
diff changeset
609 endif
44f3c9b7eec4 patch 8.0.1036: ++eof argument for terminal only available on MS-Windows
Christian Brabandt <cb@256bit.org>
parents: 12309
diff changeset
610 bwipe
44f3c9b7eec4 patch 8.0.1036: ++eof argument for terminal only available on MS-Windows
Christian Brabandt <cb@256bit.org>
parents: 12309
diff changeset
611
44f3c9b7eec4 patch 8.0.1036: ++eof argument for terminal only available on MS-Windows
Christian Brabandt <cb@256bit.org>
parents: 12309
diff changeset
612 if has('win32')
44f3c9b7eec4 patch 8.0.1036: ++eof argument for terminal only available on MS-Windows
Christian Brabandt <cb@256bit.org>
parents: 12309
diff changeset
613 new
44f3c9b7eec4 patch 8.0.1036: ++eof argument for terminal only available on MS-Windows
Christian Brabandt <cb@256bit.org>
parents: 12309
diff changeset
614 call setline(1, ['print("hello")'])
44f3c9b7eec4 patch 8.0.1036: ++eof argument for terminal only available on MS-Windows
Christian Brabandt <cb@256bit.org>
parents: 12309
diff changeset
615 1term ++eof=<C-Z> python
13808
16a062cf08c2 patch 8.0.1776: in tests, when WaitFor() fails it doesn't say why
Christian Brabandt <cb@256bit.org>
parents: 13798
diff changeset
616 call WaitForAssert({-> assert_match('Z', getline("$"))})
12313
44f3c9b7eec4 patch 8.0.1036: ++eof argument for terminal only available on MS-Windows
Christian Brabandt <cb@256bit.org>
parents: 12309
diff changeset
617 call assert_equal('hello', getline(line('$') - 1))
44f3c9b7eec4 patch 8.0.1036: ++eof argument for terminal only available on MS-Windows
Christian Brabandt <cb@256bit.org>
parents: 12309
diff changeset
618 bwipe
44f3c9b7eec4 patch 8.0.1036: ++eof argument for terminal only available on MS-Windows
Christian Brabandt <cb@256bit.org>
parents: 12309
diff changeset
619 endif
44f3c9b7eec4 patch 8.0.1036: ++eof argument for terminal only available on MS-Windows
Christian Brabandt <cb@256bit.org>
parents: 12309
diff changeset
620 endif
44f3c9b7eec4 patch 8.0.1036: ++eof argument for terminal only available on MS-Windows
Christian Brabandt <cb@256bit.org>
parents: 12309
diff changeset
621
12196
9237b087583c patch 8.0.0978: writing to terminal job is not tested
Christian Brabandt <cb@256bit.org>
parents: 12192
diff changeset
622 bwipe!
9237b087583c patch 8.0.0978: writing to terminal job is not tested
Christian Brabandt <cb@256bit.org>
parents: 12192
diff changeset
623 endfunc
12240
24abce52ad20 patch 8.0.1000: cannot open a terminal without running a job in it
Christian Brabandt <cb@256bit.org>
parents: 12230
diff changeset
624
24abce52ad20 patch 8.0.1000: cannot open a terminal without running a job in it
Christian Brabandt <cb@256bit.org>
parents: 12230
diff changeset
625 func Test_terminal_no_cmd()
24abce52ad20 patch 8.0.1000: cannot open a terminal without running a job in it
Christian Brabandt <cb@256bit.org>
parents: 12230
diff changeset
626 " Todo: make this work in the GUI
24abce52ad20 patch 8.0.1000: cannot open a terminal without running a job in it
Christian Brabandt <cb@256bit.org>
parents: 12230
diff changeset
627 if !has('gui_running')
24abce52ad20 patch 8.0.1000: cannot open a terminal without running a job in it
Christian Brabandt <cb@256bit.org>
parents: 12230
diff changeset
628 return
24abce52ad20 patch 8.0.1000: cannot open a terminal without running a job in it
Christian Brabandt <cb@256bit.org>
parents: 12230
diff changeset
629 endif
24abce52ad20 patch 8.0.1000: cannot open a terminal without running a job in it
Christian Brabandt <cb@256bit.org>
parents: 12230
diff changeset
630 let buf = term_start('NONE', {})
24abce52ad20 patch 8.0.1000: cannot open a terminal without running a job in it
Christian Brabandt <cb@256bit.org>
parents: 12230
diff changeset
631 call assert_notequal(0, buf)
24abce52ad20 patch 8.0.1000: cannot open a terminal without running a job in it
Christian Brabandt <cb@256bit.org>
parents: 12230
diff changeset
632
12389
d0cf7f71b95b patch 8.0.1074: ":term NONE" does not work on MS-Windows
Christian Brabandt <cb@256bit.org>
parents: 12357
diff changeset
633 let pty = job_info(term_getjob(buf))['tty_out']
12240
24abce52ad20 patch 8.0.1000: cannot open a terminal without running a job in it
Christian Brabandt <cb@256bit.org>
parents: 12230
diff changeset
634 call assert_notequal('', pty)
12389
d0cf7f71b95b patch 8.0.1074: ":term NONE" does not work on MS-Windows
Christian Brabandt <cb@256bit.org>
parents: 12357
diff changeset
635 if has('win32')
12475
827ad6758d33 patch 8.0.1117: Test_terminal_no_cmd hangs on MS-Windows with GUI
Christian Brabandt <cb@256bit.org>
parents: 12473
diff changeset
636 silent exe '!start cmd /c "echo look here > ' . pty . '"'
12389
d0cf7f71b95b patch 8.0.1074: ":term NONE" does not work on MS-Windows
Christian Brabandt <cb@256bit.org>
parents: 12357
diff changeset
637 else
d0cf7f71b95b patch 8.0.1074: ":term NONE" does not work on MS-Windows
Christian Brabandt <cb@256bit.org>
parents: 12357
diff changeset
638 call system('echo "look here" > ' . pty)
d0cf7f71b95b patch 8.0.1074: ":term NONE" does not work on MS-Windows
Christian Brabandt <cb@256bit.org>
parents: 12357
diff changeset
639 endif
13808
16a062cf08c2 patch 8.0.1776: in tests, when WaitFor() fails it doesn't say why
Christian Brabandt <cb@256bit.org>
parents: 13798
diff changeset
640 call WaitForAssert({-> assert_match('look here', term_getline(buf, 1))})
12389
d0cf7f71b95b patch 8.0.1074: ":term NONE" does not work on MS-Windows
Christian Brabandt <cb@256bit.org>
parents: 12357
diff changeset
641
12240
24abce52ad20 patch 8.0.1000: cannot open a terminal without running a job in it
Christian Brabandt <cb@256bit.org>
parents: 12230
diff changeset
642 bwipe!
24abce52ad20 patch 8.0.1000: cannot open a terminal without running a job in it
Christian Brabandt <cb@256bit.org>
parents: 12230
diff changeset
643 endfunc
12343
72046661f6d0 patch 8.0.1051: cannot run terminal with spaces in argument
Christian Brabandt <cb@256bit.org>
parents: 12339
diff changeset
644
72046661f6d0 patch 8.0.1051: cannot run terminal with spaces in argument
Christian Brabandt <cb@256bit.org>
parents: 12339
diff changeset
645 func Test_terminal_special_chars()
72046661f6d0 patch 8.0.1051: cannot run terminal with spaces in argument
Christian Brabandt <cb@256bit.org>
parents: 12339
diff changeset
646 " this file name only works on Unix
72046661f6d0 patch 8.0.1051: cannot run terminal with spaces in argument
Christian Brabandt <cb@256bit.org>
parents: 12339
diff changeset
647 if !has('unix')
72046661f6d0 patch 8.0.1051: cannot run terminal with spaces in argument
Christian Brabandt <cb@256bit.org>
parents: 12339
diff changeset
648 return
72046661f6d0 patch 8.0.1051: cannot run terminal with spaces in argument
Christian Brabandt <cb@256bit.org>
parents: 12339
diff changeset
649 endif
72046661f6d0 patch 8.0.1051: cannot run terminal with spaces in argument
Christian Brabandt <cb@256bit.org>
parents: 12339
diff changeset
650 call mkdir('Xdir with spaces')
72046661f6d0 patch 8.0.1051: cannot run terminal with spaces in argument
Christian Brabandt <cb@256bit.org>
parents: 12339
diff changeset
651 call writefile(['x'], 'Xdir with spaces/quoted"file')
72046661f6d0 patch 8.0.1051: cannot run terminal with spaces in argument
Christian Brabandt <cb@256bit.org>
parents: 12339
diff changeset
652 term ls Xdir\ with\ spaces/quoted\"file
13808
16a062cf08c2 patch 8.0.1776: in tests, when WaitFor() fails it doesn't say why
Christian Brabandt <cb@256bit.org>
parents: 13798
diff changeset
653 call WaitForAssert({-> assert_match('quoted"file', term_getline('', 1))})
12343
72046661f6d0 patch 8.0.1051: cannot run terminal with spaces in argument
Christian Brabandt <cb@256bit.org>
parents: 12339
diff changeset
654 call term_wait('')
72046661f6d0 patch 8.0.1051: cannot run terminal with spaces in argument
Christian Brabandt <cb@256bit.org>
parents: 12339
diff changeset
655
72046661f6d0 patch 8.0.1051: cannot run terminal with spaces in argument
Christian Brabandt <cb@256bit.org>
parents: 12339
diff changeset
656 call delete('Xdir with spaces', 'rf')
72046661f6d0 patch 8.0.1051: cannot run terminal with spaces in argument
Christian Brabandt <cb@256bit.org>
parents: 12339
diff changeset
657 bwipe
72046661f6d0 patch 8.0.1051: cannot run terminal with spaces in argument
Christian Brabandt <cb@256bit.org>
parents: 12339
diff changeset
658 endfunc
12345
76ab57a79183 patch 8.0.1052: term_start() does not allow in_io, out_io and err_io options
Christian Brabandt <cb@256bit.org>
parents: 12343
diff changeset
659
76ab57a79183 patch 8.0.1052: term_start() does not allow in_io, out_io and err_io options
Christian Brabandt <cb@256bit.org>
parents: 12343
diff changeset
660 func Test_terminal_wrong_options()
76ab57a79183 patch 8.0.1052: term_start() does not allow in_io, out_io and err_io options
Christian Brabandt <cb@256bit.org>
parents: 12343
diff changeset
661 call assert_fails('call term_start(&shell, {
76ab57a79183 patch 8.0.1052: term_start() does not allow in_io, out_io and err_io options
Christian Brabandt <cb@256bit.org>
parents: 12343
diff changeset
662 \ "in_io": "file",
76ab57a79183 patch 8.0.1052: term_start() does not allow in_io, out_io and err_io options
Christian Brabandt <cb@256bit.org>
parents: 12343
diff changeset
663 \ "in_name": "xxx",
76ab57a79183 patch 8.0.1052: term_start() does not allow in_io, out_io and err_io options
Christian Brabandt <cb@256bit.org>
parents: 12343
diff changeset
664 \ "out_io": "file",
76ab57a79183 patch 8.0.1052: term_start() does not allow in_io, out_io and err_io options
Christian Brabandt <cb@256bit.org>
parents: 12343
diff changeset
665 \ "out_name": "xxx",
76ab57a79183 patch 8.0.1052: term_start() does not allow in_io, out_io and err_io options
Christian Brabandt <cb@256bit.org>
parents: 12343
diff changeset
666 \ "err_io": "file",
76ab57a79183 patch 8.0.1052: term_start() does not allow in_io, out_io and err_io options
Christian Brabandt <cb@256bit.org>
parents: 12343
diff changeset
667 \ "err_name": "xxx"
76ab57a79183 patch 8.0.1052: term_start() does not allow in_io, out_io and err_io options
Christian Brabandt <cb@256bit.org>
parents: 12343
diff changeset
668 \ })', 'E474:')
76ab57a79183 patch 8.0.1052: term_start() does not allow in_io, out_io and err_io options
Christian Brabandt <cb@256bit.org>
parents: 12343
diff changeset
669 call assert_fails('call term_start(&shell, {
76ab57a79183 patch 8.0.1052: term_start() does not allow in_io, out_io and err_io options
Christian Brabandt <cb@256bit.org>
parents: 12343
diff changeset
670 \ "out_buf": bufnr("%")
76ab57a79183 patch 8.0.1052: term_start() does not allow in_io, out_io and err_io options
Christian Brabandt <cb@256bit.org>
parents: 12343
diff changeset
671 \ })', 'E474:')
76ab57a79183 patch 8.0.1052: term_start() does not allow in_io, out_io and err_io options
Christian Brabandt <cb@256bit.org>
parents: 12343
diff changeset
672 call assert_fails('call term_start(&shell, {
76ab57a79183 patch 8.0.1052: term_start() does not allow in_io, out_io and err_io options
Christian Brabandt <cb@256bit.org>
parents: 12343
diff changeset
673 \ "err_buf": bufnr("%")
76ab57a79183 patch 8.0.1052: term_start() does not allow in_io, out_io and err_io options
Christian Brabandt <cb@256bit.org>
parents: 12343
diff changeset
674 \ })', 'E474:')
76ab57a79183 patch 8.0.1052: term_start() does not allow in_io, out_io and err_io options
Christian Brabandt <cb@256bit.org>
parents: 12343
diff changeset
675 endfunc
76ab57a79183 patch 8.0.1052: term_start() does not allow in_io, out_io and err_io options
Christian Brabandt <cb@256bit.org>
parents: 12343
diff changeset
676
76ab57a79183 patch 8.0.1052: term_start() does not allow in_io, out_io and err_io options
Christian Brabandt <cb@256bit.org>
parents: 12343
diff changeset
677 func Test_terminal_redir_file()
13860
7f892e37b017 patch 8.0.1801: MS-Windows: redirecting terminal output does not work
Christian Brabandt <cb@256bit.org>
parents: 13835
diff changeset
678 let cmd = Get_cat_123_cmd()
7f892e37b017 patch 8.0.1801: MS-Windows: redirecting terminal output does not work
Christian Brabandt <cb@256bit.org>
parents: 13835
diff changeset
679 let buf = term_start(cmd, {'out_io': 'file', 'out_name': 'Xfile'})
7f892e37b017 patch 8.0.1801: MS-Windows: redirecting terminal output does not work
Christian Brabandt <cb@256bit.org>
parents: 13835
diff changeset
680 call term_wait(buf)
7f892e37b017 patch 8.0.1801: MS-Windows: redirecting terminal output does not work
Christian Brabandt <cb@256bit.org>
parents: 13835
diff changeset
681 call WaitForAssert({-> assert_notequal(0, len(readfile("Xfile")))})
7f892e37b017 patch 8.0.1801: MS-Windows: redirecting terminal output does not work
Christian Brabandt <cb@256bit.org>
parents: 13835
diff changeset
682 call assert_match('123', readfile('Xfile')[0])
7f892e37b017 patch 8.0.1801: MS-Windows: redirecting terminal output does not work
Christian Brabandt <cb@256bit.org>
parents: 13835
diff changeset
683 let g:job = term_getjob(buf)
7f892e37b017 patch 8.0.1801: MS-Windows: redirecting terminal output does not work
Christian Brabandt <cb@256bit.org>
parents: 13835
diff changeset
684 call WaitForAssert({-> assert_equal("dead", job_status(g:job))})
7f892e37b017 patch 8.0.1801: MS-Windows: redirecting terminal output does not work
Christian Brabandt <cb@256bit.org>
parents: 13835
diff changeset
685 call delete('Xfile')
7f892e37b017 patch 8.0.1801: MS-Windows: redirecting terminal output does not work
Christian Brabandt <cb@256bit.org>
parents: 13835
diff changeset
686 bwipe
12345
76ab57a79183 patch 8.0.1052: term_start() does not allow in_io, out_io and err_io options
Christian Brabandt <cb@256bit.org>
parents: 12343
diff changeset
687
76ab57a79183 patch 8.0.1052: term_start() does not allow in_io, out_io and err_io options
Christian Brabandt <cb@256bit.org>
parents: 12343
diff changeset
688 if has('unix')
76ab57a79183 patch 8.0.1052: term_start() does not allow in_io, out_io and err_io options
Christian Brabandt <cb@256bit.org>
parents: 12343
diff changeset
689 call writefile(['one line'], 'Xfile')
76ab57a79183 patch 8.0.1052: term_start() does not allow in_io, out_io and err_io options
Christian Brabandt <cb@256bit.org>
parents: 12343
diff changeset
690 let buf = term_start('cat', {'in_io': 'file', 'in_name': 'Xfile'})
76ab57a79183 patch 8.0.1052: term_start() does not allow in_io, out_io and err_io options
Christian Brabandt <cb@256bit.org>
parents: 12343
diff changeset
691 call term_wait(buf)
13808
16a062cf08c2 patch 8.0.1776: in tests, when WaitFor() fails it doesn't say why
Christian Brabandt <cb@256bit.org>
parents: 13798
diff changeset
692 call WaitForAssert({-> assert_equal('one line', term_getline(buf, 1))})
12357
9a7fb1d01137 patch 8.0.1058: terminal redirection test is flaky
Christian Brabandt <cb@256bit.org>
parents: 12355
diff changeset
693 let g:job = term_getjob(buf)
13808
16a062cf08c2 patch 8.0.1776: in tests, when WaitFor() fails it doesn't say why
Christian Brabandt <cb@256bit.org>
parents: 13798
diff changeset
694 call WaitForAssert({-> assert_equal('dead', job_status(g:job))})
12345
76ab57a79183 patch 8.0.1052: term_start() does not allow in_io, out_io and err_io options
Christian Brabandt <cb@256bit.org>
parents: 12343
diff changeset
695 bwipe
76ab57a79183 patch 8.0.1052: term_start() does not allow in_io, out_io and err_io options
Christian Brabandt <cb@256bit.org>
parents: 12343
diff changeset
696 call delete('Xfile')
76ab57a79183 patch 8.0.1052: term_start() does not allow in_io, out_io and err_io options
Christian Brabandt <cb@256bit.org>
parents: 12343
diff changeset
697 endif
76ab57a79183 patch 8.0.1052: term_start() does not allow in_io, out_io and err_io options
Christian Brabandt <cb@256bit.org>
parents: 12343
diff changeset
698 endfunc
12457
dfb8254aa735 patch 8.0.1108: cannot specify mappings for the terminal window
Christian Brabandt <cb@256bit.org>
parents: 12431
diff changeset
699
dfb8254aa735 patch 8.0.1108: cannot specify mappings for the terminal window
Christian Brabandt <cb@256bit.org>
parents: 12431
diff changeset
700 func TerminalTmap(remap)
dfb8254aa735 patch 8.0.1108: cannot specify mappings for the terminal window
Christian Brabandt <cb@256bit.org>
parents: 12431
diff changeset
701 let buf = Run_shell_in_terminal({})
dfb8254aa735 patch 8.0.1108: cannot specify mappings for the terminal window
Christian Brabandt <cb@256bit.org>
parents: 12431
diff changeset
702 call assert_equal('t', mode())
dfb8254aa735 patch 8.0.1108: cannot specify mappings for the terminal window
Christian Brabandt <cb@256bit.org>
parents: 12431
diff changeset
703
dfb8254aa735 patch 8.0.1108: cannot specify mappings for the terminal window
Christian Brabandt <cb@256bit.org>
parents: 12431
diff changeset
704 if a:remap
dfb8254aa735 patch 8.0.1108: cannot specify mappings for the terminal window
Christian Brabandt <cb@256bit.org>
parents: 12431
diff changeset
705 tmap 123 456
dfb8254aa735 patch 8.0.1108: cannot specify mappings for the terminal window
Christian Brabandt <cb@256bit.org>
parents: 12431
diff changeset
706 else
dfb8254aa735 patch 8.0.1108: cannot specify mappings for the terminal window
Christian Brabandt <cb@256bit.org>
parents: 12431
diff changeset
707 tnoremap 123 456
dfb8254aa735 patch 8.0.1108: cannot specify mappings for the terminal window
Christian Brabandt <cb@256bit.org>
parents: 12431
diff changeset
708 endif
12983
7a9c4a8b1ceb patch 8.0.1367: terminal test hangs, executing abcde
Christian Brabandt <cb@256bit.org>
parents: 12907
diff changeset
709 " don't use abcde, it's an existing command
7a9c4a8b1ceb patch 8.0.1367: terminal test hangs, executing abcde
Christian Brabandt <cb@256bit.org>
parents: 12907
diff changeset
710 tmap 456 abxde
12457
dfb8254aa735 patch 8.0.1108: cannot specify mappings for the terminal window
Christian Brabandt <cb@256bit.org>
parents: 12431
diff changeset
711 call assert_equal('456', maparg('123', 't'))
12983
7a9c4a8b1ceb patch 8.0.1367: terminal test hangs, executing abcde
Christian Brabandt <cb@256bit.org>
parents: 12907
diff changeset
712 call assert_equal('abxde', maparg('456', 't'))
12457
dfb8254aa735 patch 8.0.1108: cannot specify mappings for the terminal window
Christian Brabandt <cb@256bit.org>
parents: 12431
diff changeset
713 call feedkeys("123", 'tx')
13808
16a062cf08c2 patch 8.0.1776: in tests, when WaitFor() fails it doesn't say why
Christian Brabandt <cb@256bit.org>
parents: 13798
diff changeset
714 call WaitForAssert({-> assert_match('abxde\|456', term_getline(buf, term_getcursor(buf)[0]))})
12457
dfb8254aa735 patch 8.0.1108: cannot specify mappings for the terminal window
Christian Brabandt <cb@256bit.org>
parents: 12431
diff changeset
715 let lnum = term_getcursor(buf)[0]
dfb8254aa735 patch 8.0.1108: cannot specify mappings for the terminal window
Christian Brabandt <cb@256bit.org>
parents: 12431
diff changeset
716 if a:remap
12983
7a9c4a8b1ceb patch 8.0.1367: terminal test hangs, executing abcde
Christian Brabandt <cb@256bit.org>
parents: 12907
diff changeset
717 call assert_match('abxde', term_getline(buf, lnum))
12457
dfb8254aa735 patch 8.0.1108: cannot specify mappings for the terminal window
Christian Brabandt <cb@256bit.org>
parents: 12431
diff changeset
718 else
dfb8254aa735 patch 8.0.1108: cannot specify mappings for the terminal window
Christian Brabandt <cb@256bit.org>
parents: 12431
diff changeset
719 call assert_match('456', term_getline(buf, lnum))
dfb8254aa735 patch 8.0.1108: cannot specify mappings for the terminal window
Christian Brabandt <cb@256bit.org>
parents: 12431
diff changeset
720 endif
dfb8254aa735 patch 8.0.1108: cannot specify mappings for the terminal window
Christian Brabandt <cb@256bit.org>
parents: 12431
diff changeset
721
dfb8254aa735 patch 8.0.1108: cannot specify mappings for the terminal window
Christian Brabandt <cb@256bit.org>
parents: 12431
diff changeset
722 call term_sendkeys(buf, "\r")
dfb8254aa735 patch 8.0.1108: cannot specify mappings for the terminal window
Christian Brabandt <cb@256bit.org>
parents: 12431
diff changeset
723 call Stop_shell_in_terminal(buf)
dfb8254aa735 patch 8.0.1108: cannot specify mappings for the terminal window
Christian Brabandt <cb@256bit.org>
parents: 12431
diff changeset
724 call term_wait(buf)
dfb8254aa735 patch 8.0.1108: cannot specify mappings for the terminal window
Christian Brabandt <cb@256bit.org>
parents: 12431
diff changeset
725
dfb8254aa735 patch 8.0.1108: cannot specify mappings for the terminal window
Christian Brabandt <cb@256bit.org>
parents: 12431
diff changeset
726 tunmap 123
dfb8254aa735 patch 8.0.1108: cannot specify mappings for the terminal window
Christian Brabandt <cb@256bit.org>
parents: 12431
diff changeset
727 tunmap 456
dfb8254aa735 patch 8.0.1108: cannot specify mappings for the terminal window
Christian Brabandt <cb@256bit.org>
parents: 12431
diff changeset
728 call assert_equal('', maparg('123', 't'))
dfb8254aa735 patch 8.0.1108: cannot specify mappings for the terminal window
Christian Brabandt <cb@256bit.org>
parents: 12431
diff changeset
729 close
dfb8254aa735 patch 8.0.1108: cannot specify mappings for the terminal window
Christian Brabandt <cb@256bit.org>
parents: 12431
diff changeset
730 unlet g:job
dfb8254aa735 patch 8.0.1108: cannot specify mappings for the terminal window
Christian Brabandt <cb@256bit.org>
parents: 12431
diff changeset
731 endfunc
dfb8254aa735 patch 8.0.1108: cannot specify mappings for the terminal window
Christian Brabandt <cb@256bit.org>
parents: 12431
diff changeset
732
dfb8254aa735 patch 8.0.1108: cannot specify mappings for the terminal window
Christian Brabandt <cb@256bit.org>
parents: 12431
diff changeset
733 func Test_terminal_tmap()
dfb8254aa735 patch 8.0.1108: cannot specify mappings for the terminal window
Christian Brabandt <cb@256bit.org>
parents: 12431
diff changeset
734 call TerminalTmap(1)
dfb8254aa735 patch 8.0.1108: cannot specify mappings for the terminal window
Christian Brabandt <cb@256bit.org>
parents: 12431
diff changeset
735 call TerminalTmap(0)
dfb8254aa735 patch 8.0.1108: cannot specify mappings for the terminal window
Christian Brabandt <cb@256bit.org>
parents: 12431
diff changeset
736 endfunc
12648
cdfd6eb8bb80 patch 8.0.1202: :wall gives an errof for a terminal window
Christian Brabandt <cb@256bit.org>
parents: 12505
diff changeset
737
cdfd6eb8bb80 patch 8.0.1202: :wall gives an errof for a terminal window
Christian Brabandt <cb@256bit.org>
parents: 12505
diff changeset
738 func Test_terminal_wall()
cdfd6eb8bb80 patch 8.0.1202: :wall gives an errof for a terminal window
Christian Brabandt <cb@256bit.org>
parents: 12505
diff changeset
739 let buf = Run_shell_in_terminal({})
cdfd6eb8bb80 patch 8.0.1202: :wall gives an errof for a terminal window
Christian Brabandt <cb@256bit.org>
parents: 12505
diff changeset
740 wall
cdfd6eb8bb80 patch 8.0.1202: :wall gives an errof for a terminal window
Christian Brabandt <cb@256bit.org>
parents: 12505
diff changeset
741 call Stop_shell_in_terminal(buf)
cdfd6eb8bb80 patch 8.0.1202: :wall gives an errof for a terminal window
Christian Brabandt <cb@256bit.org>
parents: 12505
diff changeset
742 call term_wait(buf)
cdfd6eb8bb80 patch 8.0.1202: :wall gives an errof for a terminal window
Christian Brabandt <cb@256bit.org>
parents: 12505
diff changeset
743 exe buf . 'bwipe'
cdfd6eb8bb80 patch 8.0.1202: :wall gives an errof for a terminal window
Christian Brabandt <cb@256bit.org>
parents: 12505
diff changeset
744 unlet g:job
cdfd6eb8bb80 patch 8.0.1202: :wall gives an errof for a terminal window
Christian Brabandt <cb@256bit.org>
parents: 12505
diff changeset
745 endfunc
12650
f58755eb453e patch 8.0.1203: terminal window mistreats composing characters
Christian Brabandt <cb@256bit.org>
parents: 12648
diff changeset
746
13302
b5806be0b36d patch 8.0.1525: using :wqa exits even if a job runs in a terminal window
Christian Brabandt <cb@256bit.org>
parents: 13158
diff changeset
747 func Test_terminal_wqall()
b5806be0b36d patch 8.0.1525: using :wqa exits even if a job runs in a terminal window
Christian Brabandt <cb@256bit.org>
parents: 13158
diff changeset
748 let buf = Run_shell_in_terminal({})
b5806be0b36d patch 8.0.1525: using :wqa exits even if a job runs in a terminal window
Christian Brabandt <cb@256bit.org>
parents: 13158
diff changeset
749 call assert_fails('wqall', 'E948')
b5806be0b36d patch 8.0.1525: using :wqa exits even if a job runs in a terminal window
Christian Brabandt <cb@256bit.org>
parents: 13158
diff changeset
750 call Stop_shell_in_terminal(buf)
b5806be0b36d patch 8.0.1525: using :wqa exits even if a job runs in a terminal window
Christian Brabandt <cb@256bit.org>
parents: 13158
diff changeset
751 call term_wait(buf)
b5806be0b36d patch 8.0.1525: using :wqa exits even if a job runs in a terminal window
Christian Brabandt <cb@256bit.org>
parents: 13158
diff changeset
752 exe buf . 'bwipe'
b5806be0b36d patch 8.0.1525: using :wqa exits even if a job runs in a terminal window
Christian Brabandt <cb@256bit.org>
parents: 13158
diff changeset
753 unlet g:job
b5806be0b36d patch 8.0.1525: using :wqa exits even if a job runs in a terminal window
Christian Brabandt <cb@256bit.org>
parents: 13158
diff changeset
754 endfunc
b5806be0b36d patch 8.0.1525: using :wqa exits even if a job runs in a terminal window
Christian Brabandt <cb@256bit.org>
parents: 13158
diff changeset
755
12650
f58755eb453e patch 8.0.1203: terminal window mistreats composing characters
Christian Brabandt <cb@256bit.org>
parents: 12648
diff changeset
756 func Test_terminal_composing_unicode()
f58755eb453e patch 8.0.1203: terminal window mistreats composing characters
Christian Brabandt <cb@256bit.org>
parents: 12648
diff changeset
757 let save_enc = &encoding
f58755eb453e patch 8.0.1203: terminal window mistreats composing characters
Christian Brabandt <cb@256bit.org>
parents: 12648
diff changeset
758 set encoding=utf-8
f58755eb453e patch 8.0.1203: terminal window mistreats composing characters
Christian Brabandt <cb@256bit.org>
parents: 12648
diff changeset
759
f58755eb453e patch 8.0.1203: terminal window mistreats composing characters
Christian Brabandt <cb@256bit.org>
parents: 12648
diff changeset
760 if has('win32')
f58755eb453e patch 8.0.1203: terminal window mistreats composing characters
Christian Brabandt <cb@256bit.org>
parents: 12648
diff changeset
761 let cmd = "cmd /K chcp 65001"
f58755eb453e patch 8.0.1203: terminal window mistreats composing characters
Christian Brabandt <cb@256bit.org>
parents: 12648
diff changeset
762 let lnum = [3, 6, 9]
f58755eb453e patch 8.0.1203: terminal window mistreats composing characters
Christian Brabandt <cb@256bit.org>
parents: 12648
diff changeset
763 else
f58755eb453e patch 8.0.1203: terminal window mistreats composing characters
Christian Brabandt <cb@256bit.org>
parents: 12648
diff changeset
764 let cmd = &shell
f58755eb453e patch 8.0.1203: terminal window mistreats composing characters
Christian Brabandt <cb@256bit.org>
parents: 12648
diff changeset
765 let lnum = [1, 3, 5]
f58755eb453e patch 8.0.1203: terminal window mistreats composing characters
Christian Brabandt <cb@256bit.org>
parents: 12648
diff changeset
766 endif
f58755eb453e patch 8.0.1203: terminal window mistreats composing characters
Christian Brabandt <cb@256bit.org>
parents: 12648
diff changeset
767
f58755eb453e patch 8.0.1203: terminal window mistreats composing characters
Christian Brabandt <cb@256bit.org>
parents: 12648
diff changeset
768 enew
f58755eb453e patch 8.0.1203: terminal window mistreats composing characters
Christian Brabandt <cb@256bit.org>
parents: 12648
diff changeset
769 let buf = term_start(cmd, {'curwin': bufnr('')})
12734
810a4c3d4f7e patch 8.0.1245: when WaitFor() has a wrong expression it just waits a second
Christian Brabandt <cb@256bit.org>
parents: 12724
diff changeset
770 let g:job = term_getjob(buf)
12650
f58755eb453e patch 8.0.1203: terminal window mistreats composing characters
Christian Brabandt <cb@256bit.org>
parents: 12648
diff changeset
771 call term_wait(buf, 50)
f58755eb453e patch 8.0.1203: terminal window mistreats composing characters
Christian Brabandt <cb@256bit.org>
parents: 12648
diff changeset
772
13750
3ab6198c1f9a patch 8.0.1747: MS-Windows: term_start() does not set job_info() cmd
Christian Brabandt <cb@256bit.org>
parents: 13742
diff changeset
773 if has('win32')
3ab6198c1f9a patch 8.0.1747: MS-Windows: term_start() does not set job_info() cmd
Christian Brabandt <cb@256bit.org>
parents: 13742
diff changeset
774 call assert_equal('cmd', job_info(g:job).cmd[0])
3ab6198c1f9a patch 8.0.1747: MS-Windows: term_start() does not set job_info() cmd
Christian Brabandt <cb@256bit.org>
parents: 13742
diff changeset
775 else
3ab6198c1f9a patch 8.0.1747: MS-Windows: term_start() does not set job_info() cmd
Christian Brabandt <cb@256bit.org>
parents: 13742
diff changeset
776 call assert_equal(&shell, job_info(g:job).cmd[0])
3ab6198c1f9a patch 8.0.1747: MS-Windows: term_start() does not set job_info() cmd
Christian Brabandt <cb@256bit.org>
parents: 13742
diff changeset
777 endif
3ab6198c1f9a patch 8.0.1747: MS-Windows: term_start() does not set job_info() cmd
Christian Brabandt <cb@256bit.org>
parents: 13742
diff changeset
778
12650
f58755eb453e patch 8.0.1203: terminal window mistreats composing characters
Christian Brabandt <cb@256bit.org>
parents: 12648
diff changeset
779 " ascii + composing
f58755eb453e patch 8.0.1203: terminal window mistreats composing characters
Christian Brabandt <cb@256bit.org>
parents: 12648
diff changeset
780 let txt = "a\u0308bc"
f58755eb453e patch 8.0.1203: terminal window mistreats composing characters
Christian Brabandt <cb@256bit.org>
parents: 12648
diff changeset
781 call term_sendkeys(buf, "echo " . txt . "\r")
f58755eb453e patch 8.0.1203: terminal window mistreats composing characters
Christian Brabandt <cb@256bit.org>
parents: 12648
diff changeset
782 call term_wait(buf, 50)
f58755eb453e patch 8.0.1203: terminal window mistreats composing characters
Christian Brabandt <cb@256bit.org>
parents: 12648
diff changeset
783 call assert_match("echo " . txt, term_getline(buf, lnum[0]))
f58755eb453e patch 8.0.1203: terminal window mistreats composing characters
Christian Brabandt <cb@256bit.org>
parents: 12648
diff changeset
784 call assert_equal(txt, term_getline(buf, lnum[0] + 1))
f58755eb453e patch 8.0.1203: terminal window mistreats composing characters
Christian Brabandt <cb@256bit.org>
parents: 12648
diff changeset
785 let l = term_scrape(buf, lnum[0] + 1)
f58755eb453e patch 8.0.1203: terminal window mistreats composing characters
Christian Brabandt <cb@256bit.org>
parents: 12648
diff changeset
786 call assert_equal("a\u0308", l[0].chars)
f58755eb453e patch 8.0.1203: terminal window mistreats composing characters
Christian Brabandt <cb@256bit.org>
parents: 12648
diff changeset
787 call assert_equal("b", l[1].chars)
f58755eb453e patch 8.0.1203: terminal window mistreats composing characters
Christian Brabandt <cb@256bit.org>
parents: 12648
diff changeset
788 call assert_equal("c", l[2].chars)
f58755eb453e patch 8.0.1203: terminal window mistreats composing characters
Christian Brabandt <cb@256bit.org>
parents: 12648
diff changeset
789
f58755eb453e patch 8.0.1203: terminal window mistreats composing characters
Christian Brabandt <cb@256bit.org>
parents: 12648
diff changeset
790 " multibyte + composing
f58755eb453e patch 8.0.1203: terminal window mistreats composing characters
Christian Brabandt <cb@256bit.org>
parents: 12648
diff changeset
791 let txt = "\u304b\u3099\u304e\u304f\u3099\u3052\u3053\u3099"
f58755eb453e patch 8.0.1203: terminal window mistreats composing characters
Christian Brabandt <cb@256bit.org>
parents: 12648
diff changeset
792 call term_sendkeys(buf, "echo " . txt . "\r")
f58755eb453e patch 8.0.1203: terminal window mistreats composing characters
Christian Brabandt <cb@256bit.org>
parents: 12648
diff changeset
793 call term_wait(buf, 50)
f58755eb453e patch 8.0.1203: terminal window mistreats composing characters
Christian Brabandt <cb@256bit.org>
parents: 12648
diff changeset
794 call assert_match("echo " . txt, term_getline(buf, lnum[1]))
f58755eb453e patch 8.0.1203: terminal window mistreats composing characters
Christian Brabandt <cb@256bit.org>
parents: 12648
diff changeset
795 call assert_equal(txt, term_getline(buf, lnum[1] + 1))
f58755eb453e patch 8.0.1203: terminal window mistreats composing characters
Christian Brabandt <cb@256bit.org>
parents: 12648
diff changeset
796 let l = term_scrape(buf, lnum[1] + 1)
f58755eb453e patch 8.0.1203: terminal window mistreats composing characters
Christian Brabandt <cb@256bit.org>
parents: 12648
diff changeset
797 call assert_equal("\u304b\u3099", l[0].chars)
f58755eb453e patch 8.0.1203: terminal window mistreats composing characters
Christian Brabandt <cb@256bit.org>
parents: 12648
diff changeset
798 call assert_equal("\u304e", l[1].chars)
f58755eb453e patch 8.0.1203: terminal window mistreats composing characters
Christian Brabandt <cb@256bit.org>
parents: 12648
diff changeset
799 call assert_equal("\u304f\u3099", l[2].chars)
f58755eb453e patch 8.0.1203: terminal window mistreats composing characters
Christian Brabandt <cb@256bit.org>
parents: 12648
diff changeset
800 call assert_equal("\u3052", l[3].chars)
f58755eb453e patch 8.0.1203: terminal window mistreats composing characters
Christian Brabandt <cb@256bit.org>
parents: 12648
diff changeset
801 call assert_equal("\u3053\u3099", l[4].chars)
f58755eb453e patch 8.0.1203: terminal window mistreats composing characters
Christian Brabandt <cb@256bit.org>
parents: 12648
diff changeset
802
f58755eb453e patch 8.0.1203: terminal window mistreats composing characters
Christian Brabandt <cb@256bit.org>
parents: 12648
diff changeset
803 " \u00a0 + composing
f58755eb453e patch 8.0.1203: terminal window mistreats composing characters
Christian Brabandt <cb@256bit.org>
parents: 12648
diff changeset
804 let txt = "abc\u00a0\u0308"
f58755eb453e patch 8.0.1203: terminal window mistreats composing characters
Christian Brabandt <cb@256bit.org>
parents: 12648
diff changeset
805 call term_sendkeys(buf, "echo " . txt . "\r")
f58755eb453e patch 8.0.1203: terminal window mistreats composing characters
Christian Brabandt <cb@256bit.org>
parents: 12648
diff changeset
806 call term_wait(buf, 50)
f58755eb453e patch 8.0.1203: terminal window mistreats composing characters
Christian Brabandt <cb@256bit.org>
parents: 12648
diff changeset
807 call assert_match("echo " . txt, term_getline(buf, lnum[2]))
f58755eb453e patch 8.0.1203: terminal window mistreats composing characters
Christian Brabandt <cb@256bit.org>
parents: 12648
diff changeset
808 call assert_equal(txt, term_getline(buf, lnum[2] + 1))
f58755eb453e patch 8.0.1203: terminal window mistreats composing characters
Christian Brabandt <cb@256bit.org>
parents: 12648
diff changeset
809 let l = term_scrape(buf, lnum[2] + 1)
f58755eb453e patch 8.0.1203: terminal window mistreats composing characters
Christian Brabandt <cb@256bit.org>
parents: 12648
diff changeset
810 call assert_equal("\u00a0\u0308", l[3].chars)
f58755eb453e patch 8.0.1203: terminal window mistreats composing characters
Christian Brabandt <cb@256bit.org>
parents: 12648
diff changeset
811
f58755eb453e patch 8.0.1203: terminal window mistreats composing characters
Christian Brabandt <cb@256bit.org>
parents: 12648
diff changeset
812 call term_sendkeys(buf, "exit\r")
13808
16a062cf08c2 patch 8.0.1776: in tests, when WaitFor() fails it doesn't say why
Christian Brabandt <cb@256bit.org>
parents: 13798
diff changeset
813 call WaitForAssert({-> assert_equal('dead', job_status(g:job))})
12650
f58755eb453e patch 8.0.1203: terminal window mistreats composing characters
Christian Brabandt <cb@256bit.org>
parents: 12648
diff changeset
814 bwipe!
12734
810a4c3d4f7e patch 8.0.1245: when WaitFor() has a wrong expression it just waits a second
Christian Brabandt <cb@256bit.org>
parents: 12724
diff changeset
815 unlet g:job
12650
f58755eb453e patch 8.0.1203: terminal window mistreats composing characters
Christian Brabandt <cb@256bit.org>
parents: 12648
diff changeset
816 let &encoding = save_enc
f58755eb453e patch 8.0.1203: terminal window mistreats composing characters
Christian Brabandt <cb@256bit.org>
parents: 12648
diff changeset
817 endfunc
12903
411a30bd7e8a patch 8.0.1328: trouble when using ":term ++close" with autocmd
Christian Brabandt <cb@256bit.org>
parents: 12765
diff changeset
818
411a30bd7e8a patch 8.0.1328: trouble when using ":term ++close" with autocmd
Christian Brabandt <cb@256bit.org>
parents: 12765
diff changeset
819 func Test_terminal_aucmd_on_close()
411a30bd7e8a patch 8.0.1328: trouble when using ":term ++close" with autocmd
Christian Brabandt <cb@256bit.org>
parents: 12765
diff changeset
820 fun Nop()
411a30bd7e8a patch 8.0.1328: trouble when using ":term ++close" with autocmd
Christian Brabandt <cb@256bit.org>
parents: 12765
diff changeset
821 let s:called = 1
411a30bd7e8a patch 8.0.1328: trouble when using ":term ++close" with autocmd
Christian Brabandt <cb@256bit.org>
parents: 12765
diff changeset
822 endfun
411a30bd7e8a patch 8.0.1328: trouble when using ":term ++close" with autocmd
Christian Brabandt <cb@256bit.org>
parents: 12765
diff changeset
823
411a30bd7e8a patch 8.0.1328: trouble when using ":term ++close" with autocmd
Christian Brabandt <cb@256bit.org>
parents: 12765
diff changeset
824 aug repro
411a30bd7e8a patch 8.0.1328: trouble when using ":term ++close" with autocmd
Christian Brabandt <cb@256bit.org>
parents: 12765
diff changeset
825 au!
411a30bd7e8a patch 8.0.1328: trouble when using ":term ++close" with autocmd
Christian Brabandt <cb@256bit.org>
parents: 12765
diff changeset
826 au BufWinLeave * call Nop()
411a30bd7e8a patch 8.0.1328: trouble when using ":term ++close" with autocmd
Christian Brabandt <cb@256bit.org>
parents: 12765
diff changeset
827 aug END
411a30bd7e8a patch 8.0.1328: trouble when using ":term ++close" with autocmd
Christian Brabandt <cb@256bit.org>
parents: 12765
diff changeset
828
411a30bd7e8a patch 8.0.1328: trouble when using ":term ++close" with autocmd
Christian Brabandt <cb@256bit.org>
parents: 12765
diff changeset
829 let [cmd, waittime] = s:get_sleep_cmd()
411a30bd7e8a patch 8.0.1328: trouble when using ":term ++close" with autocmd
Christian Brabandt <cb@256bit.org>
parents: 12765
diff changeset
830
411a30bd7e8a patch 8.0.1328: trouble when using ":term ++close" with autocmd
Christian Brabandt <cb@256bit.org>
parents: 12765
diff changeset
831 call assert_equal(1, winnr('$'))
411a30bd7e8a patch 8.0.1328: trouble when using ":term ++close" with autocmd
Christian Brabandt <cb@256bit.org>
parents: 12765
diff changeset
832 new
411a30bd7e8a patch 8.0.1328: trouble when using ":term ++close" with autocmd
Christian Brabandt <cb@256bit.org>
parents: 12765
diff changeset
833 call setline(1, ['one', 'two'])
411a30bd7e8a patch 8.0.1328: trouble when using ":term ++close" with autocmd
Christian Brabandt <cb@256bit.org>
parents: 12765
diff changeset
834 exe 'term ++close ' . cmd
411a30bd7e8a patch 8.0.1328: trouble when using ":term ++close" with autocmd
Christian Brabandt <cb@256bit.org>
parents: 12765
diff changeset
835 wincmd p
13808
16a062cf08c2 patch 8.0.1776: in tests, when WaitFor() fails it doesn't say why
Christian Brabandt <cb@256bit.org>
parents: 13798
diff changeset
836 call WaitForAssert({-> assert_equal(2, winnr('$'))}, waittime)
12903
411a30bd7e8a patch 8.0.1328: trouble when using ":term ++close" with autocmd
Christian Brabandt <cb@256bit.org>
parents: 12765
diff changeset
837 call assert_equal(1, s:called)
411a30bd7e8a patch 8.0.1328: trouble when using ":term ++close" with autocmd
Christian Brabandt <cb@256bit.org>
parents: 12765
diff changeset
838 bwipe!
411a30bd7e8a patch 8.0.1328: trouble when using ":term ++close" with autocmd
Christian Brabandt <cb@256bit.org>
parents: 12765
diff changeset
839
411a30bd7e8a patch 8.0.1328: trouble when using ":term ++close" with autocmd
Christian Brabandt <cb@256bit.org>
parents: 12765
diff changeset
840 unlet s:called
411a30bd7e8a patch 8.0.1328: trouble when using ":term ++close" with autocmd
Christian Brabandt <cb@256bit.org>
parents: 12765
diff changeset
841 au! repro
411a30bd7e8a patch 8.0.1328: trouble when using ":term ++close" with autocmd
Christian Brabandt <cb@256bit.org>
parents: 12765
diff changeset
842 delfunc Nop
411a30bd7e8a patch 8.0.1328: trouble when using ":term ++close" with autocmd
Christian Brabandt <cb@256bit.org>
parents: 12765
diff changeset
843 endfunc
13109
fb1b162cdcf6 patch 8.0.1429: crash when calling term_start() with empty argument
Christian Brabandt <cb@256bit.org>
parents: 12983
diff changeset
844
fb1b162cdcf6 patch 8.0.1429: crash when calling term_start() with empty argument
Christian Brabandt <cb@256bit.org>
parents: 12983
diff changeset
845 func Test_terminal_term_start_empty_command()
fb1b162cdcf6 patch 8.0.1429: crash when calling term_start() with empty argument
Christian Brabandt <cb@256bit.org>
parents: 12983
diff changeset
846 let cmd = "call term_start('', {'curwin' : 1, 'term_finish' : 'close'})"
fb1b162cdcf6 patch 8.0.1429: crash when calling term_start() with empty argument
Christian Brabandt <cb@256bit.org>
parents: 12983
diff changeset
847 call assert_fails(cmd, 'E474')
fb1b162cdcf6 patch 8.0.1429: crash when calling term_start() with empty argument
Christian Brabandt <cb@256bit.org>
parents: 12983
diff changeset
848 let cmd = "call term_start('', {'curwin' : 1, 'term_finish' : 'close'})"
fb1b162cdcf6 patch 8.0.1429: crash when calling term_start() with empty argument
Christian Brabandt <cb@256bit.org>
parents: 12983
diff changeset
849 call assert_fails(cmd, 'E474')
fb1b162cdcf6 patch 8.0.1429: crash when calling term_start() with empty argument
Christian Brabandt <cb@256bit.org>
parents: 12983
diff changeset
850 let cmd = "call term_start({}, {'curwin' : 1, 'term_finish' : 'close'})"
fb1b162cdcf6 patch 8.0.1429: crash when calling term_start() with empty argument
Christian Brabandt <cb@256bit.org>
parents: 12983
diff changeset
851 call assert_fails(cmd, 'E474')
fb1b162cdcf6 patch 8.0.1429: crash when calling term_start() with empty argument
Christian Brabandt <cb@256bit.org>
parents: 12983
diff changeset
852 let cmd = "call term_start(0, {'curwin' : 1, 'term_finish' : 'close'})"
fb1b162cdcf6 patch 8.0.1429: crash when calling term_start() with empty argument
Christian Brabandt <cb@256bit.org>
parents: 12983
diff changeset
853 call assert_fails(cmd, 'E474')
fb1b162cdcf6 patch 8.0.1429: crash when calling term_start() with empty argument
Christian Brabandt <cb@256bit.org>
parents: 12983
diff changeset
854 endfunc
13132
fe0cec169589 patch 8.0.1440: terminal window: some vterm responses are delayed
Christian Brabandt <cb@256bit.org>
parents: 13109
diff changeset
855
fe0cec169589 patch 8.0.1440: terminal window: some vterm responses are delayed
Christian Brabandt <cb@256bit.org>
parents: 13109
diff changeset
856 func Test_terminal_response_to_control_sequence()
fe0cec169589 patch 8.0.1440: terminal window: some vterm responses are delayed
Christian Brabandt <cb@256bit.org>
parents: 13109
diff changeset
857 if !has('unix')
fe0cec169589 patch 8.0.1440: terminal window: some vterm responses are delayed
Christian Brabandt <cb@256bit.org>
parents: 13109
diff changeset
858 return
fe0cec169589 patch 8.0.1440: terminal window: some vterm responses are delayed
Christian Brabandt <cb@256bit.org>
parents: 13109
diff changeset
859 endif
fe0cec169589 patch 8.0.1440: terminal window: some vterm responses are delayed
Christian Brabandt <cb@256bit.org>
parents: 13109
diff changeset
860
fe0cec169589 patch 8.0.1440: terminal window: some vterm responses are delayed
Christian Brabandt <cb@256bit.org>
parents: 13109
diff changeset
861 let buf = Run_shell_in_terminal({})
13808
16a062cf08c2 patch 8.0.1776: in tests, when WaitFor() fails it doesn't say why
Christian Brabandt <cb@256bit.org>
parents: 13798
diff changeset
862 call WaitForAssert({-> assert_notequal('', term_getline(buf, 1))})
13132
fe0cec169589 patch 8.0.1440: terminal window: some vterm responses are delayed
Christian Brabandt <cb@256bit.org>
parents: 13109
diff changeset
863
13543
98d832e4e394 patch 8.0.1645: test for terminal response to escape sequence may fail
Christian Brabandt <cb@256bit.org>
parents: 13541
diff changeset
864 call term_sendkeys(buf, "cat\<CR>")
13808
16a062cf08c2 patch 8.0.1776: in tests, when WaitFor() fails it doesn't say why
Christian Brabandt <cb@256bit.org>
parents: 13798
diff changeset
865 call WaitForAssert({-> assert_match('cat', term_getline(buf, 1))})
13156
36c503100cb3 patch 8.0.1452: terminal test fails on some systems
Christian Brabandt <cb@256bit.org>
parents: 13132
diff changeset
866
13543
98d832e4e394 patch 8.0.1645: test for terminal response to escape sequence may fail
Christian Brabandt <cb@256bit.org>
parents: 13541
diff changeset
867 " Request the cursor position.
98d832e4e394 patch 8.0.1645: test for terminal response to escape sequence may fail
Christian Brabandt <cb@256bit.org>
parents: 13541
diff changeset
868 call term_sendkeys(buf, "\x1b[6n\<CR>")
13156
36c503100cb3 patch 8.0.1452: terminal test fails on some systems
Christian Brabandt <cb@256bit.org>
parents: 13132
diff changeset
869
36c503100cb3 patch 8.0.1452: terminal test fails on some systems
Christian Brabandt <cb@256bit.org>
parents: 13132
diff changeset
870 " Wait for output from tty to display, below an empty line.
13808
16a062cf08c2 patch 8.0.1776: in tests, when WaitFor() fails it doesn't say why
Christian Brabandt <cb@256bit.org>
parents: 13798
diff changeset
871 call WaitForAssert({-> assert_match('3;1R', term_getline(buf, 4))})
13132
fe0cec169589 patch 8.0.1440: terminal window: some vterm responses are delayed
Christian Brabandt <cb@256bit.org>
parents: 13109
diff changeset
872
13543
98d832e4e394 patch 8.0.1645: test for terminal response to escape sequence may fail
Christian Brabandt <cb@256bit.org>
parents: 13541
diff changeset
873 " End "cat" gently.
98d832e4e394 patch 8.0.1645: test for terminal response to escape sequence may fail
Christian Brabandt <cb@256bit.org>
parents: 13541
diff changeset
874 call term_sendkeys(buf, "\<CR>\<C-D>")
98d832e4e394 patch 8.0.1645: test for terminal response to escape sequence may fail
Christian Brabandt <cb@256bit.org>
parents: 13541
diff changeset
875
13132
fe0cec169589 patch 8.0.1440: terminal window: some vterm responses are delayed
Christian Brabandt <cb@256bit.org>
parents: 13109
diff changeset
876 call Stop_shell_in_terminal(buf)
fe0cec169589 patch 8.0.1440: terminal window: some vterm responses are delayed
Christian Brabandt <cb@256bit.org>
parents: 13109
diff changeset
877 exe buf . 'bwipe'
fe0cec169589 patch 8.0.1440: terminal window: some vterm responses are delayed
Christian Brabandt <cb@256bit.org>
parents: 13109
diff changeset
878 unlet g:job
fe0cec169589 patch 8.0.1440: terminal window: some vterm responses are delayed
Christian Brabandt <cb@256bit.org>
parents: 13109
diff changeset
879 endfunc
13438
33eea5ce5415 patch 8.0.1593: :qall never exits with an active terminal window
Christian Brabandt <cb@256bit.org>
parents: 13435
diff changeset
880
13499
661394686fd8 patch 8.0.1623: terminal kill tests are flaky
Christian Brabandt <cb@256bit.org>
parents: 13476
diff changeset
881 " Run Vim, start a terminal in that Vim with the kill argument,
661394686fd8 patch 8.0.1623: terminal kill tests are flaky
Christian Brabandt <cb@256bit.org>
parents: 13476
diff changeset
882 " :qall works.
661394686fd8 patch 8.0.1623: terminal kill tests are flaky
Christian Brabandt <cb@256bit.org>
parents: 13476
diff changeset
883 func Run_terminal_qall_kill(line1, line2)
661394686fd8 patch 8.0.1623: terminal kill tests are flaky
Christian Brabandt <cb@256bit.org>
parents: 13476
diff changeset
884 " 1. Open a terminal window and wait for the prompt to appear
661394686fd8 patch 8.0.1623: terminal kill tests are flaky
Christian Brabandt <cb@256bit.org>
parents: 13476
diff changeset
885 " 2. set kill using term_setkill()
661394686fd8 patch 8.0.1623: terminal kill tests are flaky
Christian Brabandt <cb@256bit.org>
parents: 13476
diff changeset
886 " 3. make Vim exit, it will kill the shell
661394686fd8 patch 8.0.1623: terminal kill tests are flaky
Christian Brabandt <cb@256bit.org>
parents: 13476
diff changeset
887 let after = [
661394686fd8 patch 8.0.1623: terminal kill tests are flaky
Christian Brabandt <cb@256bit.org>
parents: 13476
diff changeset
888 \ a:line1,
661394686fd8 patch 8.0.1623: terminal kill tests are flaky
Christian Brabandt <cb@256bit.org>
parents: 13476
diff changeset
889 \ 'let buf = bufnr("%")',
661394686fd8 patch 8.0.1623: terminal kill tests are flaky
Christian Brabandt <cb@256bit.org>
parents: 13476
diff changeset
890 \ 'while term_getline(buf, 1) =~ "^\\s*$"',
661394686fd8 patch 8.0.1623: terminal kill tests are flaky
Christian Brabandt <cb@256bit.org>
parents: 13476
diff changeset
891 \ ' sleep 10m',
661394686fd8 patch 8.0.1623: terminal kill tests are flaky
Christian Brabandt <cb@256bit.org>
parents: 13476
diff changeset
892 \ 'endwhile',
661394686fd8 patch 8.0.1623: terminal kill tests are flaky
Christian Brabandt <cb@256bit.org>
parents: 13476
diff changeset
893 \ a:line2,
661394686fd8 patch 8.0.1623: terminal kill tests are flaky
Christian Brabandt <cb@256bit.org>
parents: 13476
diff changeset
894 \ 'au VimLeavePre * call writefile(["done"], "Xdone")',
661394686fd8 patch 8.0.1623: terminal kill tests are flaky
Christian Brabandt <cb@256bit.org>
parents: 13476
diff changeset
895 \ 'qall',
661394686fd8 patch 8.0.1623: terminal kill tests are flaky
Christian Brabandt <cb@256bit.org>
parents: 13476
diff changeset
896 \ ]
661394686fd8 patch 8.0.1623: terminal kill tests are flaky
Christian Brabandt <cb@256bit.org>
parents: 13476
diff changeset
897 if !RunVim([], after, '')
13438
33eea5ce5415 patch 8.0.1593: :qall never exits with an active terminal window
Christian Brabandt <cb@256bit.org>
parents: 13435
diff changeset
898 return
33eea5ce5415 patch 8.0.1593: :qall never exits with an active terminal window
Christian Brabandt <cb@256bit.org>
parents: 13435
diff changeset
899 endif
13499
661394686fd8 patch 8.0.1623: terminal kill tests are flaky
Christian Brabandt <cb@256bit.org>
parents: 13476
diff changeset
900 call assert_equal("done", readfile("Xdone")[0])
661394686fd8 patch 8.0.1623: terminal kill tests are flaky
Christian Brabandt <cb@256bit.org>
parents: 13476
diff changeset
901 call delete("Xdone")
13438
33eea5ce5415 patch 8.0.1593: :qall never exits with an active terminal window
Christian Brabandt <cb@256bit.org>
parents: 13435
diff changeset
902 endfunc
33eea5ce5415 patch 8.0.1593: :qall never exits with an active terminal window
Christian Brabandt <cb@256bit.org>
parents: 13435
diff changeset
903
33eea5ce5415 patch 8.0.1593: :qall never exits with an active terminal window
Christian Brabandt <cb@256bit.org>
parents: 13435
diff changeset
904 " Run Vim in a terminal, then start a terminal in that Vim with a kill
33eea5ce5415 patch 8.0.1593: :qall never exits with an active terminal window
Christian Brabandt <cb@256bit.org>
parents: 13435
diff changeset
905 " argument, check that :qall works.
13499
661394686fd8 patch 8.0.1623: terminal kill tests are flaky
Christian Brabandt <cb@256bit.org>
parents: 13476
diff changeset
906 func Test_terminal_qall_kill_arg()
661394686fd8 patch 8.0.1623: terminal kill tests are flaky
Christian Brabandt <cb@256bit.org>
parents: 13476
diff changeset
907 call Run_terminal_qall_kill('term ++kill=kill', '')
661394686fd8 patch 8.0.1623: terminal kill tests are flaky
Christian Brabandt <cb@256bit.org>
parents: 13476
diff changeset
908 endfunc
661394686fd8 patch 8.0.1623: terminal kill tests are flaky
Christian Brabandt <cb@256bit.org>
parents: 13476
diff changeset
909
661394686fd8 patch 8.0.1623: terminal kill tests are flaky
Christian Brabandt <cb@256bit.org>
parents: 13476
diff changeset
910 " Run Vim, start a terminal in that Vim, set the kill argument with
661394686fd8 patch 8.0.1623: terminal kill tests are flaky
Christian Brabandt <cb@256bit.org>
parents: 13476
diff changeset
911 " term_setkill(), check that :qall works.
13438
33eea5ce5415 patch 8.0.1593: :qall never exits with an active terminal window
Christian Brabandt <cb@256bit.org>
parents: 13435
diff changeset
912 func Test_terminal_qall_kill_func()
13499
661394686fd8 patch 8.0.1623: terminal kill tests are flaky
Christian Brabandt <cb@256bit.org>
parents: 13476
diff changeset
913 call Run_terminal_qall_kill('term', 'call term_setkill(buf, "kill")')
661394686fd8 patch 8.0.1623: terminal kill tests are flaky
Christian Brabandt <cb@256bit.org>
parents: 13476
diff changeset
914 endfunc
661394686fd8 patch 8.0.1623: terminal kill tests are flaky
Christian Brabandt <cb@256bit.org>
parents: 13476
diff changeset
915
661394686fd8 patch 8.0.1623: terminal kill tests are flaky
Christian Brabandt <cb@256bit.org>
parents: 13476
diff changeset
916 " Run Vim, start a terminal in that Vim without the kill argument,
661394686fd8 patch 8.0.1623: terminal kill tests are flaky
Christian Brabandt <cb@256bit.org>
parents: 13476
diff changeset
917 " check that :qall does not exit, :qall! does.
661394686fd8 patch 8.0.1623: terminal kill tests are flaky
Christian Brabandt <cb@256bit.org>
parents: 13476
diff changeset
918 func Test_terminal_qall_exit()
661394686fd8 patch 8.0.1623: terminal kill tests are flaky
Christian Brabandt <cb@256bit.org>
parents: 13476
diff changeset
919 let after = [
661394686fd8 patch 8.0.1623: terminal kill tests are flaky
Christian Brabandt <cb@256bit.org>
parents: 13476
diff changeset
920 \ 'term',
661394686fd8 patch 8.0.1623: terminal kill tests are flaky
Christian Brabandt <cb@256bit.org>
parents: 13476
diff changeset
921 \ 'let buf = bufnr("%")',
661394686fd8 patch 8.0.1623: terminal kill tests are flaky
Christian Brabandt <cb@256bit.org>
parents: 13476
diff changeset
922 \ 'while term_getline(buf, 1) =~ "^\\s*$"',
661394686fd8 patch 8.0.1623: terminal kill tests are flaky
Christian Brabandt <cb@256bit.org>
parents: 13476
diff changeset
923 \ ' sleep 10m',
661394686fd8 patch 8.0.1623: terminal kill tests are flaky
Christian Brabandt <cb@256bit.org>
parents: 13476
diff changeset
924 \ 'endwhile',
661394686fd8 patch 8.0.1623: terminal kill tests are flaky
Christian Brabandt <cb@256bit.org>
parents: 13476
diff changeset
925 \ 'set nomore',
661394686fd8 patch 8.0.1623: terminal kill tests are flaky
Christian Brabandt <cb@256bit.org>
parents: 13476
diff changeset
926 \ 'au VimLeavePre * call writefile(["too early"], "Xdone")',
661394686fd8 patch 8.0.1623: terminal kill tests are flaky
Christian Brabandt <cb@256bit.org>
parents: 13476
diff changeset
927 \ 'qall',
661394686fd8 patch 8.0.1623: terminal kill tests are flaky
Christian Brabandt <cb@256bit.org>
parents: 13476
diff changeset
928 \ 'au! VimLeavePre * exe buf . "bwipe!" | call writefile(["done"], "Xdone")',
661394686fd8 patch 8.0.1623: terminal kill tests are flaky
Christian Brabandt <cb@256bit.org>
parents: 13476
diff changeset
929 \ 'cquit',
661394686fd8 patch 8.0.1623: terminal kill tests are flaky
Christian Brabandt <cb@256bit.org>
parents: 13476
diff changeset
930 \ ]
661394686fd8 patch 8.0.1623: terminal kill tests are flaky
Christian Brabandt <cb@256bit.org>
parents: 13476
diff changeset
931 if !RunVim([], after, '')
13438
33eea5ce5415 patch 8.0.1593: :qall never exits with an active terminal window
Christian Brabandt <cb@256bit.org>
parents: 13435
diff changeset
932 return
33eea5ce5415 patch 8.0.1593: :qall never exits with an active terminal window
Christian Brabandt <cb@256bit.org>
parents: 13435
diff changeset
933 endif
13499
661394686fd8 patch 8.0.1623: terminal kill tests are flaky
Christian Brabandt <cb@256bit.org>
parents: 13476
diff changeset
934 call assert_equal("done", readfile("Xdone")[0])
661394686fd8 patch 8.0.1623: terminal kill tests are flaky
Christian Brabandt <cb@256bit.org>
parents: 13476
diff changeset
935 call delete("Xdone")
13438
33eea5ce5415 patch 8.0.1593: :qall never exits with an active terminal window
Christian Brabandt <cb@256bit.org>
parents: 13435
diff changeset
936 endfunc
13440
22439cdda382 patch 8.0.1594: :conform qall not tested with active terminal window
Christian Brabandt <cb@256bit.org>
parents: 13438
diff changeset
937
22439cdda382 patch 8.0.1594: :conform qall not tested with active terminal window
Christian Brabandt <cb@256bit.org>
parents: 13438
diff changeset
938 " Run Vim in a terminal, then start a terminal in that Vim without a kill
22439cdda382 patch 8.0.1594: :conform qall not tested with active terminal window
Christian Brabandt <cb@256bit.org>
parents: 13438
diff changeset
939 " argument, check that :confirm qall works.
22439cdda382 patch 8.0.1594: :conform qall not tested with active terminal window
Christian Brabandt <cb@256bit.org>
parents: 13438
diff changeset
940 func Test_terminal_qall_prompt()
22439cdda382 patch 8.0.1594: :conform qall not tested with active terminal window
Christian Brabandt <cb@256bit.org>
parents: 13438
diff changeset
941 if !CanRunVimInTerminal()
22439cdda382 patch 8.0.1594: :conform qall not tested with active terminal window
Christian Brabandt <cb@256bit.org>
parents: 13438
diff changeset
942 return
22439cdda382 patch 8.0.1594: :conform qall not tested with active terminal window
Christian Brabandt <cb@256bit.org>
parents: 13438
diff changeset
943 endif
22439cdda382 patch 8.0.1594: :conform qall not tested with active terminal window
Christian Brabandt <cb@256bit.org>
parents: 13438
diff changeset
944 let buf = RunVimInTerminal('', {})
22439cdda382 patch 8.0.1594: :conform qall not tested with active terminal window
Christian Brabandt <cb@256bit.org>
parents: 13438
diff changeset
945
22439cdda382 patch 8.0.1594: :conform qall not tested with active terminal window
Christian Brabandt <cb@256bit.org>
parents: 13438
diff changeset
946 " Open a terminal window and wait for the prompt to appear
22439cdda382 patch 8.0.1594: :conform qall not tested with active terminal window
Christian Brabandt <cb@256bit.org>
parents: 13438
diff changeset
947 call term_sendkeys(buf, ":term\<CR>")
13808
16a062cf08c2 patch 8.0.1776: in tests, when WaitFor() fails it doesn't say why
Christian Brabandt <cb@256bit.org>
parents: 13798
diff changeset
948 call WaitForAssert({-> assert_match('\[running]', term_getline(buf, 10))})
16a062cf08c2 patch 8.0.1776: in tests, when WaitFor() fails it doesn't say why
Christian Brabandt <cb@256bit.org>
parents: 13798
diff changeset
949 call WaitForAssert({-> assert_notmatch('^\s*$', term_getline(buf, 1))})
13440
22439cdda382 patch 8.0.1594: :conform qall not tested with active terminal window
Christian Brabandt <cb@256bit.org>
parents: 13438
diff changeset
950
22439cdda382 patch 8.0.1594: :conform qall not tested with active terminal window
Christian Brabandt <cb@256bit.org>
parents: 13438
diff changeset
951 " make Vim exit, it will prompt to kill the shell
22439cdda382 patch 8.0.1594: :conform qall not tested with active terminal window
Christian Brabandt <cb@256bit.org>
parents: 13438
diff changeset
952 call term_sendkeys(buf, "\<C-W>:confirm qall\<CR>")
13808
16a062cf08c2 patch 8.0.1776: in tests, when WaitFor() fails it doesn't say why
Christian Brabandt <cb@256bit.org>
parents: 13798
diff changeset
953 call WaitForAssert({-> assert_match('ancel:', term_getline(buf, 20))})
13440
22439cdda382 patch 8.0.1594: :conform qall not tested with active terminal window
Christian Brabandt <cb@256bit.org>
parents: 13438
diff changeset
954 call term_sendkeys(buf, "y")
13808
16a062cf08c2 patch 8.0.1776: in tests, when WaitFor() fails it doesn't say why
Christian Brabandt <cb@256bit.org>
parents: 13798
diff changeset
955 call WaitForAssert({-> assert_equal('finished', term_getstatus(buf))})
13440
22439cdda382 patch 8.0.1594: :conform qall not tested with active terminal window
Christian Brabandt <cb@256bit.org>
parents: 13438
diff changeset
956
22439cdda382 patch 8.0.1594: :conform qall not tested with active terminal window
Christian Brabandt <cb@256bit.org>
parents: 13438
diff changeset
957 " close the terminal window where Vim was running
22439cdda382 patch 8.0.1594: :conform qall not tested with active terminal window
Christian Brabandt <cb@256bit.org>
parents: 13438
diff changeset
958 quit
22439cdda382 patch 8.0.1594: :conform qall not tested with active terminal window
Christian Brabandt <cb@256bit.org>
parents: 13438
diff changeset
959 endfunc
13444
9f06f7aca74c patch 8.0.1596: no autocommand specifically for opening a terminal window
Christian Brabandt <cb@256bit.org>
parents: 13440
diff changeset
960
13462
568dcfac9daf patch 8.0.1605: terminal test is a bit flaky
Christian Brabandt <cb@256bit.org>
parents: 13444
diff changeset
961 func Test_terminal_open_autocmd()
13444
9f06f7aca74c patch 8.0.1596: no autocommand specifically for opening a terminal window
Christian Brabandt <cb@256bit.org>
parents: 13440
diff changeset
962 augroup repro
9f06f7aca74c patch 8.0.1596: no autocommand specifically for opening a terminal window
Christian Brabandt <cb@256bit.org>
parents: 13440
diff changeset
963 au!
9f06f7aca74c patch 8.0.1596: no autocommand specifically for opening a terminal window
Christian Brabandt <cb@256bit.org>
parents: 13440
diff changeset
964 au TerminalOpen * let s:called += 1
9f06f7aca74c patch 8.0.1596: no autocommand specifically for opening a terminal window
Christian Brabandt <cb@256bit.org>
parents: 13440
diff changeset
965 augroup END
9f06f7aca74c patch 8.0.1596: no autocommand specifically for opening a terminal window
Christian Brabandt <cb@256bit.org>
parents: 13440
diff changeset
966
9f06f7aca74c patch 8.0.1596: no autocommand specifically for opening a terminal window
Christian Brabandt <cb@256bit.org>
parents: 13440
diff changeset
967 let s:called = 0
9f06f7aca74c patch 8.0.1596: no autocommand specifically for opening a terminal window
Christian Brabandt <cb@256bit.org>
parents: 13440
diff changeset
968
9f06f7aca74c patch 8.0.1596: no autocommand specifically for opening a terminal window
Christian Brabandt <cb@256bit.org>
parents: 13440
diff changeset
969 " Open a terminal window with :terminal
9f06f7aca74c patch 8.0.1596: no autocommand specifically for opening a terminal window
Christian Brabandt <cb@256bit.org>
parents: 13440
diff changeset
970 terminal
9f06f7aca74c patch 8.0.1596: no autocommand specifically for opening a terminal window
Christian Brabandt <cb@256bit.org>
parents: 13440
diff changeset
971 call assert_equal(1, s:called)
9f06f7aca74c patch 8.0.1596: no autocommand specifically for opening a terminal window
Christian Brabandt <cb@256bit.org>
parents: 13440
diff changeset
972 bwipe!
9f06f7aca74c patch 8.0.1596: no autocommand specifically for opening a terminal window
Christian Brabandt <cb@256bit.org>
parents: 13440
diff changeset
973
9f06f7aca74c patch 8.0.1596: no autocommand specifically for opening a terminal window
Christian Brabandt <cb@256bit.org>
parents: 13440
diff changeset
974 " Open a terminal window with term_start()
9f06f7aca74c patch 8.0.1596: no autocommand specifically for opening a terminal window
Christian Brabandt <cb@256bit.org>
parents: 13440
diff changeset
975 call term_start(&shell)
9f06f7aca74c patch 8.0.1596: no autocommand specifically for opening a terminal window
Christian Brabandt <cb@256bit.org>
parents: 13440
diff changeset
976 call assert_equal(2, s:called)
9f06f7aca74c patch 8.0.1596: no autocommand specifically for opening a terminal window
Christian Brabandt <cb@256bit.org>
parents: 13440
diff changeset
977 bwipe!
9f06f7aca74c patch 8.0.1596: no autocommand specifically for opening a terminal window
Christian Brabandt <cb@256bit.org>
parents: 13440
diff changeset
978
9f06f7aca74c patch 8.0.1596: no autocommand specifically for opening a terminal window
Christian Brabandt <cb@256bit.org>
parents: 13440
diff changeset
979 " Open a hidden terminal buffer with :terminal
9f06f7aca74c patch 8.0.1596: no autocommand specifically for opening a terminal window
Christian Brabandt <cb@256bit.org>
parents: 13440
diff changeset
980 terminal ++hidden
9f06f7aca74c patch 8.0.1596: no autocommand specifically for opening a terminal window
Christian Brabandt <cb@256bit.org>
parents: 13440
diff changeset
981 call assert_equal(3, s:called)
9f06f7aca74c patch 8.0.1596: no autocommand specifically for opening a terminal window
Christian Brabandt <cb@256bit.org>
parents: 13440
diff changeset
982 for buf in term_list()
9f06f7aca74c patch 8.0.1596: no autocommand specifically for opening a terminal window
Christian Brabandt <cb@256bit.org>
parents: 13440
diff changeset
983 exe buf . "bwipe!"
9f06f7aca74c patch 8.0.1596: no autocommand specifically for opening a terminal window
Christian Brabandt <cb@256bit.org>
parents: 13440
diff changeset
984 endfor
9f06f7aca74c patch 8.0.1596: no autocommand specifically for opening a terminal window
Christian Brabandt <cb@256bit.org>
parents: 13440
diff changeset
985
9f06f7aca74c patch 8.0.1596: no autocommand specifically for opening a terminal window
Christian Brabandt <cb@256bit.org>
parents: 13440
diff changeset
986 " Open a hidden terminal buffer with term_start()
9f06f7aca74c patch 8.0.1596: no autocommand specifically for opening a terminal window
Christian Brabandt <cb@256bit.org>
parents: 13440
diff changeset
987 let buf = term_start(&shell, {'hidden': 1})
9f06f7aca74c patch 8.0.1596: no autocommand specifically for opening a terminal window
Christian Brabandt <cb@256bit.org>
parents: 13440
diff changeset
988 call assert_equal(4, s:called)
9f06f7aca74c patch 8.0.1596: no autocommand specifically for opening a terminal window
Christian Brabandt <cb@256bit.org>
parents: 13440
diff changeset
989 exe buf . "bwipe!"
9f06f7aca74c patch 8.0.1596: no autocommand specifically for opening a terminal window
Christian Brabandt <cb@256bit.org>
parents: 13440
diff changeset
990
9f06f7aca74c patch 8.0.1596: no autocommand specifically for opening a terminal window
Christian Brabandt <cb@256bit.org>
parents: 13440
diff changeset
991 unlet s:called
9f06f7aca74c patch 8.0.1596: no autocommand specifically for opening a terminal window
Christian Brabandt <cb@256bit.org>
parents: 13440
diff changeset
992 au! repro
9f06f7aca74c patch 8.0.1596: no autocommand specifically for opening a terminal window
Christian Brabandt <cb@256bit.org>
parents: 13440
diff changeset
993 endfunction
13525
7d0a8ca17f30 patch 8.0.1636: no test for term_dumpload() and term_dumpdiff()
Christian Brabandt <cb@256bit.org>
parents: 13499
diff changeset
994
7d0a8ca17f30 patch 8.0.1636: no test for term_dumpload() and term_dumpdiff()
Christian Brabandt <cb@256bit.org>
parents: 13499
diff changeset
995 func Check_dump01(off)
7d0a8ca17f30 patch 8.0.1636: no test for term_dumpload() and term_dumpdiff()
Christian Brabandt <cb@256bit.org>
parents: 13499
diff changeset
996 call assert_equal('one two three four five', trim(getline(a:off + 1)))
7d0a8ca17f30 patch 8.0.1636: no test for term_dumpload() and term_dumpdiff()
Christian Brabandt <cb@256bit.org>
parents: 13499
diff changeset
997 call assert_equal('~ Select Word', trim(getline(a:off + 7)))
13559
af68603e213d patch 8.0.1653: screen dump is made too soon
Christian Brabandt <cb@256bit.org>
parents: 13557
diff changeset
998 call assert_equal(':popup PopUp', trim(getline(a:off + 20)))
13525
7d0a8ca17f30 patch 8.0.1636: no test for term_dumpload() and term_dumpdiff()
Christian Brabandt <cb@256bit.org>
parents: 13499
diff changeset
999 endfunc
7d0a8ca17f30 patch 8.0.1636: no test for term_dumpload() and term_dumpdiff()
Christian Brabandt <cb@256bit.org>
parents: 13499
diff changeset
1000
13557
4911058c43eb patch 8.0.1652: term_dumpwrite() does not output composing characters
Christian Brabandt <cb@256bit.org>
parents: 13555
diff changeset
1001 func Test_terminal_dumpwrite_composing()
4911058c43eb patch 8.0.1652: term_dumpwrite() does not output composing characters
Christian Brabandt <cb@256bit.org>
parents: 13555
diff changeset
1002 if !CanRunVimInTerminal()
4911058c43eb patch 8.0.1652: term_dumpwrite() does not output composing characters
Christian Brabandt <cb@256bit.org>
parents: 13555
diff changeset
1003 return
4911058c43eb patch 8.0.1652: term_dumpwrite() does not output composing characters
Christian Brabandt <cb@256bit.org>
parents: 13555
diff changeset
1004 endif
4911058c43eb patch 8.0.1652: term_dumpwrite() does not output composing characters
Christian Brabandt <cb@256bit.org>
parents: 13555
diff changeset
1005 let save_enc = &encoding
4911058c43eb patch 8.0.1652: term_dumpwrite() does not output composing characters
Christian Brabandt <cb@256bit.org>
parents: 13555
diff changeset
1006 set encoding=utf-8
4911058c43eb patch 8.0.1652: term_dumpwrite() does not output composing characters
Christian Brabandt <cb@256bit.org>
parents: 13555
diff changeset
1007 call assert_equal(1, winnr('$'))
4911058c43eb patch 8.0.1652: term_dumpwrite() does not output composing characters
Christian Brabandt <cb@256bit.org>
parents: 13555
diff changeset
1008
4911058c43eb patch 8.0.1652: term_dumpwrite() does not output composing characters
Christian Brabandt <cb@256bit.org>
parents: 13555
diff changeset
1009 let text = " a\u0300 e\u0302 o\u0308"
4911058c43eb patch 8.0.1652: term_dumpwrite() does not output composing characters
Christian Brabandt <cb@256bit.org>
parents: 13555
diff changeset
1010 call writefile([text], 'Xcomposing')
13816
9b0e4976dac6 patch 8.0.1780: test fails because Vim in a terminal uses wrong 'encoding'
Christian Brabandt <cb@256bit.org>
parents: 13808
diff changeset
1011 let buf = RunVimInTerminal('--cmd "set encoding=utf-8" Xcomposing', {})
13808
16a062cf08c2 patch 8.0.1776: in tests, when WaitFor() fails it doesn't say why
Christian Brabandt <cb@256bit.org>
parents: 13798
diff changeset
1012 call WaitForAssert({-> assert_match(text, term_getline(buf, 1))})
13557
4911058c43eb patch 8.0.1652: term_dumpwrite() does not output composing characters
Christian Brabandt <cb@256bit.org>
parents: 13555
diff changeset
1013 call term_dumpwrite(buf, 'Xdump')
4911058c43eb patch 8.0.1652: term_dumpwrite() does not output composing characters
Christian Brabandt <cb@256bit.org>
parents: 13555
diff changeset
1014 let dumpline = readfile('Xdump')[0]
4911058c43eb patch 8.0.1652: term_dumpwrite() does not output composing characters
Christian Brabandt <cb@256bit.org>
parents: 13555
diff changeset
1015 call assert_match('|à| |ê| |ö', dumpline)
4911058c43eb patch 8.0.1652: term_dumpwrite() does not output composing characters
Christian Brabandt <cb@256bit.org>
parents: 13555
diff changeset
1016
4911058c43eb patch 8.0.1652: term_dumpwrite() does not output composing characters
Christian Brabandt <cb@256bit.org>
parents: 13555
diff changeset
1017 call StopVimInTerminal(buf)
4911058c43eb patch 8.0.1652: term_dumpwrite() does not output composing characters
Christian Brabandt <cb@256bit.org>
parents: 13555
diff changeset
1018 call delete('Xcomposing')
4911058c43eb patch 8.0.1652: term_dumpwrite() does not output composing characters
Christian Brabandt <cb@256bit.org>
parents: 13555
diff changeset
1019 call delete('Xdump')
4911058c43eb patch 8.0.1652: term_dumpwrite() does not output composing characters
Christian Brabandt <cb@256bit.org>
parents: 13555
diff changeset
1020 let &encoding = save_enc
4911058c43eb patch 8.0.1652: term_dumpwrite() does not output composing characters
Christian Brabandt <cb@256bit.org>
parents: 13555
diff changeset
1021 endfunc
4911058c43eb patch 8.0.1652: term_dumpwrite() does not output composing characters
Christian Brabandt <cb@256bit.org>
parents: 13555
diff changeset
1022
13525
7d0a8ca17f30 patch 8.0.1636: no test for term_dumpload() and term_dumpdiff()
Christian Brabandt <cb@256bit.org>
parents: 13499
diff changeset
1023 " just testing basic functionality.
7d0a8ca17f30 patch 8.0.1636: no test for term_dumpload() and term_dumpdiff()
Christian Brabandt <cb@256bit.org>
parents: 13499
diff changeset
1024 func Test_terminal_dumpload()
7d0a8ca17f30 patch 8.0.1636: no test for term_dumpload() and term_dumpdiff()
Christian Brabandt <cb@256bit.org>
parents: 13499
diff changeset
1025 call assert_equal(1, winnr('$'))
7d0a8ca17f30 patch 8.0.1636: no test for term_dumpload() and term_dumpdiff()
Christian Brabandt <cb@256bit.org>
parents: 13499
diff changeset
1026 call term_dumpload('dumps/Test_popup_command_01.dump')
7d0a8ca17f30 patch 8.0.1636: no test for term_dumpload() and term_dumpdiff()
Christian Brabandt <cb@256bit.org>
parents: 13499
diff changeset
1027 call assert_equal(2, winnr('$'))
7d0a8ca17f30 patch 8.0.1636: no test for term_dumpload() and term_dumpdiff()
Christian Brabandt <cb@256bit.org>
parents: 13499
diff changeset
1028 call assert_equal(20, line('$'))
7d0a8ca17f30 patch 8.0.1636: no test for term_dumpload() and term_dumpdiff()
Christian Brabandt <cb@256bit.org>
parents: 13499
diff changeset
1029 call Check_dump01(0)
7d0a8ca17f30 patch 8.0.1636: no test for term_dumpload() and term_dumpdiff()
Christian Brabandt <cb@256bit.org>
parents: 13499
diff changeset
1030 quit
7d0a8ca17f30 patch 8.0.1636: no test for term_dumpload() and term_dumpdiff()
Christian Brabandt <cb@256bit.org>
parents: 13499
diff changeset
1031 endfunc
7d0a8ca17f30 patch 8.0.1636: no test for term_dumpload() and term_dumpdiff()
Christian Brabandt <cb@256bit.org>
parents: 13499
diff changeset
1032
7d0a8ca17f30 patch 8.0.1636: no test for term_dumpload() and term_dumpdiff()
Christian Brabandt <cb@256bit.org>
parents: 13499
diff changeset
1033 func Test_terminal_dumpdiff()
7d0a8ca17f30 patch 8.0.1636: no test for term_dumpload() and term_dumpdiff()
Christian Brabandt <cb@256bit.org>
parents: 13499
diff changeset
1034 call assert_equal(1, winnr('$'))
7d0a8ca17f30 patch 8.0.1636: no test for term_dumpload() and term_dumpdiff()
Christian Brabandt <cb@256bit.org>
parents: 13499
diff changeset
1035 call term_dumpdiff('dumps/Test_popup_command_01.dump', 'dumps/Test_popup_command_02.dump')
7d0a8ca17f30 patch 8.0.1636: no test for term_dumpload() and term_dumpdiff()
Christian Brabandt <cb@256bit.org>
parents: 13499
diff changeset
1036 call assert_equal(2, winnr('$'))
7d0a8ca17f30 patch 8.0.1636: no test for term_dumpload() and term_dumpdiff()
Christian Brabandt <cb@256bit.org>
parents: 13499
diff changeset
1037 call assert_equal(62, line('$'))
7d0a8ca17f30 patch 8.0.1636: no test for term_dumpload() and term_dumpdiff()
Christian Brabandt <cb@256bit.org>
parents: 13499
diff changeset
1038 call Check_dump01(0)
7d0a8ca17f30 patch 8.0.1636: no test for term_dumpload() and term_dumpdiff()
Christian Brabandt <cb@256bit.org>
parents: 13499
diff changeset
1039 call Check_dump01(42)
7d0a8ca17f30 patch 8.0.1636: no test for term_dumpload() and term_dumpdiff()
Christian Brabandt <cb@256bit.org>
parents: 13499
diff changeset
1040 call assert_equal(' bbbbbbbbbbbbbbbbbb ', getline(26)[0:29])
7d0a8ca17f30 patch 8.0.1636: no test for term_dumpload() and term_dumpdiff()
Christian Brabandt <cb@256bit.org>
parents: 13499
diff changeset
1041 quit
7d0a8ca17f30 patch 8.0.1636: no test for term_dumpload() and term_dumpdiff()
Christian Brabandt <cb@256bit.org>
parents: 13499
diff changeset
1042 endfunc
13527
b2b99d01321b patch 8.0.1637: no test for term_dumpdiff() options argument
Christian Brabandt <cb@256bit.org>
parents: 13525
diff changeset
1043
b2b99d01321b patch 8.0.1637: no test for term_dumpdiff() options argument
Christian Brabandt <cb@256bit.org>
parents: 13525
diff changeset
1044 func Test_terminal_dumpdiff_options()
b2b99d01321b patch 8.0.1637: no test for term_dumpdiff() options argument
Christian Brabandt <cb@256bit.org>
parents: 13525
diff changeset
1045 set laststatus=0
b2b99d01321b patch 8.0.1637: no test for term_dumpdiff() options argument
Christian Brabandt <cb@256bit.org>
parents: 13525
diff changeset
1046 call assert_equal(1, winnr('$'))
b2b99d01321b patch 8.0.1637: no test for term_dumpdiff() options argument
Christian Brabandt <cb@256bit.org>
parents: 13525
diff changeset
1047 let height = winheight(0)
b2b99d01321b patch 8.0.1637: no test for term_dumpdiff() options argument
Christian Brabandt <cb@256bit.org>
parents: 13525
diff changeset
1048 call term_dumpdiff('dumps/Test_popup_command_01.dump', 'dumps/Test_popup_command_02.dump', {'vertical': 1, 'term_cols': 33})
b2b99d01321b patch 8.0.1637: no test for term_dumpdiff() options argument
Christian Brabandt <cb@256bit.org>
parents: 13525
diff changeset
1049 call assert_equal(2, winnr('$'))
b2b99d01321b patch 8.0.1637: no test for term_dumpdiff() options argument
Christian Brabandt <cb@256bit.org>
parents: 13525
diff changeset
1050 call assert_equal(height, winheight(winnr()))
b2b99d01321b patch 8.0.1637: no test for term_dumpdiff() options argument
Christian Brabandt <cb@256bit.org>
parents: 13525
diff changeset
1051 call assert_equal(33, winwidth(winnr()))
b2b99d01321b patch 8.0.1637: no test for term_dumpdiff() options argument
Christian Brabandt <cb@256bit.org>
parents: 13525
diff changeset
1052 call assert_equal('dump diff dumps/Test_popup_command_01.dump', bufname('%'))
b2b99d01321b patch 8.0.1637: no test for term_dumpdiff() options argument
Christian Brabandt <cb@256bit.org>
parents: 13525
diff changeset
1053 quit
b2b99d01321b patch 8.0.1637: no test for term_dumpdiff() options argument
Christian Brabandt <cb@256bit.org>
parents: 13525
diff changeset
1054
b2b99d01321b patch 8.0.1637: no test for term_dumpdiff() options argument
Christian Brabandt <cb@256bit.org>
parents: 13525
diff changeset
1055 call assert_equal(1, winnr('$'))
b2b99d01321b patch 8.0.1637: no test for term_dumpdiff() options argument
Christian Brabandt <cb@256bit.org>
parents: 13525
diff changeset
1056 let width = winwidth(0)
b2b99d01321b patch 8.0.1637: no test for term_dumpdiff() options argument
Christian Brabandt <cb@256bit.org>
parents: 13525
diff changeset
1057 call term_dumpdiff('dumps/Test_popup_command_01.dump', 'dumps/Test_popup_command_02.dump', {'vertical': 0, 'term_rows': 13, 'term_name': 'something else'})
b2b99d01321b patch 8.0.1637: no test for term_dumpdiff() options argument
Christian Brabandt <cb@256bit.org>
parents: 13525
diff changeset
1058 call assert_equal(2, winnr('$'))
b2b99d01321b patch 8.0.1637: no test for term_dumpdiff() options argument
Christian Brabandt <cb@256bit.org>
parents: 13525
diff changeset
1059 call assert_equal(width, winwidth(winnr()))
b2b99d01321b patch 8.0.1637: no test for term_dumpdiff() options argument
Christian Brabandt <cb@256bit.org>
parents: 13525
diff changeset
1060 call assert_equal(13, winheight(winnr()))
b2b99d01321b patch 8.0.1637: no test for term_dumpdiff() options argument
Christian Brabandt <cb@256bit.org>
parents: 13525
diff changeset
1061 call assert_equal('something else', bufname('%'))
b2b99d01321b patch 8.0.1637: no test for term_dumpdiff() options argument
Christian Brabandt <cb@256bit.org>
parents: 13525
diff changeset
1062 quit
b2b99d01321b patch 8.0.1637: no test for term_dumpdiff() options argument
Christian Brabandt <cb@256bit.org>
parents: 13525
diff changeset
1063
b2b99d01321b patch 8.0.1637: no test for term_dumpdiff() options argument
Christian Brabandt <cb@256bit.org>
parents: 13525
diff changeset
1064 call assert_equal(1, winnr('$'))
b2b99d01321b patch 8.0.1637: no test for term_dumpdiff() options argument
Christian Brabandt <cb@256bit.org>
parents: 13525
diff changeset
1065 call term_dumpdiff('dumps/Test_popup_command_01.dump', 'dumps/Test_popup_command_02.dump', {'curwin': 1})
b2b99d01321b patch 8.0.1637: no test for term_dumpdiff() options argument
Christian Brabandt <cb@256bit.org>
parents: 13525
diff changeset
1066 call assert_equal(1, winnr('$'))
b2b99d01321b patch 8.0.1637: no test for term_dumpdiff() options argument
Christian Brabandt <cb@256bit.org>
parents: 13525
diff changeset
1067 bwipe
b2b99d01321b patch 8.0.1637: no test for term_dumpdiff() options argument
Christian Brabandt <cb@256bit.org>
parents: 13525
diff changeset
1068
b2b99d01321b patch 8.0.1637: no test for term_dumpdiff() options argument
Christian Brabandt <cb@256bit.org>
parents: 13525
diff changeset
1069 set laststatus&
b2b99d01321b patch 8.0.1637: no test for term_dumpdiff() options argument
Christian Brabandt <cb@256bit.org>
parents: 13525
diff changeset
1070 endfunc
13535
e9ffb5b35266 patch 8.0.1641: job in terminal can't communicate with Vim
Christian Brabandt <cb@256bit.org>
parents: 13527
diff changeset
1071
13575
4df23d9bad47 patch 8.0.1660: the terminal API "drop" command doesn't support options
Christian Brabandt <cb@256bit.org>
parents: 13559
diff changeset
1072 func Api_drop_common(options)
13535
e9ffb5b35266 patch 8.0.1641: job in terminal can't communicate with Vim
Christian Brabandt <cb@256bit.org>
parents: 13527
diff changeset
1073 call assert_equal(1, winnr('$'))
e9ffb5b35266 patch 8.0.1641: job in terminal can't communicate with Vim
Christian Brabandt <cb@256bit.org>
parents: 13527
diff changeset
1074
e9ffb5b35266 patch 8.0.1641: job in terminal can't communicate with Vim
Christian Brabandt <cb@256bit.org>
parents: 13527
diff changeset
1075 " Use the title termcap entries to output the escape sequence.
e9ffb5b35266 patch 8.0.1641: job in terminal can't communicate with Vim
Christian Brabandt <cb@256bit.org>
parents: 13527
diff changeset
1076 call writefile([
13541
296d02b0637f patch 8.0.1644: terminal API tests still fail
Christian Brabandt <cb@256bit.org>
parents: 13539
diff changeset
1077 \ 'set title',
13535
e9ffb5b35266 patch 8.0.1641: job in terminal can't communicate with Vim
Christian Brabandt <cb@256bit.org>
parents: 13527
diff changeset
1078 \ 'exe "set t_ts=\<Esc>]51; t_fs=\x07"',
13575
4df23d9bad47 patch 8.0.1660: the terminal API "drop" command doesn't support options
Christian Brabandt <cb@256bit.org>
parents: 13559
diff changeset
1079 \ 'let &titlestring = ''["drop","Xtextfile"' . a:options . ']''',
13535
e9ffb5b35266 patch 8.0.1641: job in terminal can't communicate with Vim
Christian Brabandt <cb@256bit.org>
parents: 13527
diff changeset
1080 \ 'redraw',
e9ffb5b35266 patch 8.0.1641: job in terminal can't communicate with Vim
Christian Brabandt <cb@256bit.org>
parents: 13527
diff changeset
1081 \ "set t_ts=",
e9ffb5b35266 patch 8.0.1641: job in terminal can't communicate with Vim
Christian Brabandt <cb@256bit.org>
parents: 13527
diff changeset
1082 \ ], 'Xscript')
e9ffb5b35266 patch 8.0.1641: job in terminal can't communicate with Vim
Christian Brabandt <cb@256bit.org>
parents: 13527
diff changeset
1083 let buf = RunVimInTerminal('-S Xscript', {})
13650
87ffb7f85b28 patch 8.0.1697: various tests are still a bit flaky
Christian Brabandt <cb@256bit.org>
parents: 13626
diff changeset
1084 call WaitFor({-> bufnr('Xtextfile') > 0})
13535
e9ffb5b35266 patch 8.0.1641: job in terminal can't communicate with Vim
Christian Brabandt <cb@256bit.org>
parents: 13527
diff changeset
1085 call assert_equal('Xtextfile', expand('%:t'))
e9ffb5b35266 patch 8.0.1641: job in terminal can't communicate with Vim
Christian Brabandt <cb@256bit.org>
parents: 13527
diff changeset
1086 call assert_true(winnr('$') >= 3)
13575
4df23d9bad47 patch 8.0.1660: the terminal API "drop" command doesn't support options
Christian Brabandt <cb@256bit.org>
parents: 13559
diff changeset
1087 return buf
4df23d9bad47 patch 8.0.1660: the terminal API "drop" command doesn't support options
Christian Brabandt <cb@256bit.org>
parents: 13559
diff changeset
1088 endfunc
4df23d9bad47 patch 8.0.1660: the terminal API "drop" command doesn't support options
Christian Brabandt <cb@256bit.org>
parents: 13559
diff changeset
1089
4df23d9bad47 patch 8.0.1660: the terminal API "drop" command doesn't support options
Christian Brabandt <cb@256bit.org>
parents: 13559
diff changeset
1090 func Test_terminal_api_drop_newwin()
4df23d9bad47 patch 8.0.1660: the terminal API "drop" command doesn't support options
Christian Brabandt <cb@256bit.org>
parents: 13559
diff changeset
1091 if !CanRunVimInTerminal()
4df23d9bad47 patch 8.0.1660: the terminal API "drop" command doesn't support options
Christian Brabandt <cb@256bit.org>
parents: 13559
diff changeset
1092 return
4df23d9bad47 patch 8.0.1660: the terminal API "drop" command doesn't support options
Christian Brabandt <cb@256bit.org>
parents: 13559
diff changeset
1093 endif
4df23d9bad47 patch 8.0.1660: the terminal API "drop" command doesn't support options
Christian Brabandt <cb@256bit.org>
parents: 13559
diff changeset
1094 let buf = Api_drop_common('')
4df23d9bad47 patch 8.0.1660: the terminal API "drop" command doesn't support options
Christian Brabandt <cb@256bit.org>
parents: 13559
diff changeset
1095 call assert_equal(0, &bin)
4df23d9bad47 patch 8.0.1660: the terminal API "drop" command doesn't support options
Christian Brabandt <cb@256bit.org>
parents: 13559
diff changeset
1096 call assert_equal('', &fenc)
4df23d9bad47 patch 8.0.1660: the terminal API "drop" command doesn't support options
Christian Brabandt <cb@256bit.org>
parents: 13559
diff changeset
1097
4df23d9bad47 patch 8.0.1660: the terminal API "drop" command doesn't support options
Christian Brabandt <cb@256bit.org>
parents: 13559
diff changeset
1098 call StopVimInTerminal(buf)
4df23d9bad47 patch 8.0.1660: the terminal API "drop" command doesn't support options
Christian Brabandt <cb@256bit.org>
parents: 13559
diff changeset
1099 call delete('Xscript')
4df23d9bad47 patch 8.0.1660: the terminal API "drop" command doesn't support options
Christian Brabandt <cb@256bit.org>
parents: 13559
diff changeset
1100 bwipe Xtextfile
4df23d9bad47 patch 8.0.1660: the terminal API "drop" command doesn't support options
Christian Brabandt <cb@256bit.org>
parents: 13559
diff changeset
1101 endfunc
4df23d9bad47 patch 8.0.1660: the terminal API "drop" command doesn't support options
Christian Brabandt <cb@256bit.org>
parents: 13559
diff changeset
1102
4df23d9bad47 patch 8.0.1660: the terminal API "drop" command doesn't support options
Christian Brabandt <cb@256bit.org>
parents: 13559
diff changeset
1103 func Test_terminal_api_drop_newwin_bin()
4df23d9bad47 patch 8.0.1660: the terminal API "drop" command doesn't support options
Christian Brabandt <cb@256bit.org>
parents: 13559
diff changeset
1104 if !CanRunVimInTerminal()
4df23d9bad47 patch 8.0.1660: the terminal API "drop" command doesn't support options
Christian Brabandt <cb@256bit.org>
parents: 13559
diff changeset
1105 return
4df23d9bad47 patch 8.0.1660: the terminal API "drop" command doesn't support options
Christian Brabandt <cb@256bit.org>
parents: 13559
diff changeset
1106 endif
4df23d9bad47 patch 8.0.1660: the terminal API "drop" command doesn't support options
Christian Brabandt <cb@256bit.org>
parents: 13559
diff changeset
1107 let buf = Api_drop_common(',{"bin":1}')
4df23d9bad47 patch 8.0.1660: the terminal API "drop" command doesn't support options
Christian Brabandt <cb@256bit.org>
parents: 13559
diff changeset
1108 call assert_equal(1, &bin)
4df23d9bad47 patch 8.0.1660: the terminal API "drop" command doesn't support options
Christian Brabandt <cb@256bit.org>
parents: 13559
diff changeset
1109
4df23d9bad47 patch 8.0.1660: the terminal API "drop" command doesn't support options
Christian Brabandt <cb@256bit.org>
parents: 13559
diff changeset
1110 call StopVimInTerminal(buf)
4df23d9bad47 patch 8.0.1660: the terminal API "drop" command doesn't support options
Christian Brabandt <cb@256bit.org>
parents: 13559
diff changeset
1111 call delete('Xscript')
4df23d9bad47 patch 8.0.1660: the terminal API "drop" command doesn't support options
Christian Brabandt <cb@256bit.org>
parents: 13559
diff changeset
1112 bwipe Xtextfile
4df23d9bad47 patch 8.0.1660: the terminal API "drop" command doesn't support options
Christian Brabandt <cb@256bit.org>
parents: 13559
diff changeset
1113 endfunc
4df23d9bad47 patch 8.0.1660: the terminal API "drop" command doesn't support options
Christian Brabandt <cb@256bit.org>
parents: 13559
diff changeset
1114
4df23d9bad47 patch 8.0.1660: the terminal API "drop" command doesn't support options
Christian Brabandt <cb@256bit.org>
parents: 13559
diff changeset
1115 func Test_terminal_api_drop_newwin_binary()
4df23d9bad47 patch 8.0.1660: the terminal API "drop" command doesn't support options
Christian Brabandt <cb@256bit.org>
parents: 13559
diff changeset
1116 if !CanRunVimInTerminal()
4df23d9bad47 patch 8.0.1660: the terminal API "drop" command doesn't support options
Christian Brabandt <cb@256bit.org>
parents: 13559
diff changeset
1117 return
4df23d9bad47 patch 8.0.1660: the terminal API "drop" command doesn't support options
Christian Brabandt <cb@256bit.org>
parents: 13559
diff changeset
1118 endif
4df23d9bad47 patch 8.0.1660: the terminal API "drop" command doesn't support options
Christian Brabandt <cb@256bit.org>
parents: 13559
diff changeset
1119 let buf = Api_drop_common(',{"binary":1}')
4df23d9bad47 patch 8.0.1660: the terminal API "drop" command doesn't support options
Christian Brabandt <cb@256bit.org>
parents: 13559
diff changeset
1120 call assert_equal(1, &bin)
4df23d9bad47 patch 8.0.1660: the terminal API "drop" command doesn't support options
Christian Brabandt <cb@256bit.org>
parents: 13559
diff changeset
1121
4df23d9bad47 patch 8.0.1660: the terminal API "drop" command doesn't support options
Christian Brabandt <cb@256bit.org>
parents: 13559
diff changeset
1122 call StopVimInTerminal(buf)
4df23d9bad47 patch 8.0.1660: the terminal API "drop" command doesn't support options
Christian Brabandt <cb@256bit.org>
parents: 13559
diff changeset
1123 call delete('Xscript')
4df23d9bad47 patch 8.0.1660: the terminal API "drop" command doesn't support options
Christian Brabandt <cb@256bit.org>
parents: 13559
diff changeset
1124 bwipe Xtextfile
4df23d9bad47 patch 8.0.1660: the terminal API "drop" command doesn't support options
Christian Brabandt <cb@256bit.org>
parents: 13559
diff changeset
1125 endfunc
4df23d9bad47 patch 8.0.1660: the terminal API "drop" command doesn't support options
Christian Brabandt <cb@256bit.org>
parents: 13559
diff changeset
1126
4df23d9bad47 patch 8.0.1660: the terminal API "drop" command doesn't support options
Christian Brabandt <cb@256bit.org>
parents: 13559
diff changeset
1127 func Test_terminal_api_drop_newwin_nobin()
4df23d9bad47 patch 8.0.1660: the terminal API "drop" command doesn't support options
Christian Brabandt <cb@256bit.org>
parents: 13559
diff changeset
1128 if !CanRunVimInTerminal()
4df23d9bad47 patch 8.0.1660: the terminal API "drop" command doesn't support options
Christian Brabandt <cb@256bit.org>
parents: 13559
diff changeset
1129 return
4df23d9bad47 patch 8.0.1660: the terminal API "drop" command doesn't support options
Christian Brabandt <cb@256bit.org>
parents: 13559
diff changeset
1130 endif
4df23d9bad47 patch 8.0.1660: the terminal API "drop" command doesn't support options
Christian Brabandt <cb@256bit.org>
parents: 13559
diff changeset
1131 set binary
4df23d9bad47 patch 8.0.1660: the terminal API "drop" command doesn't support options
Christian Brabandt <cb@256bit.org>
parents: 13559
diff changeset
1132 let buf = Api_drop_common(',{"nobin":1}')
4df23d9bad47 patch 8.0.1660: the terminal API "drop" command doesn't support options
Christian Brabandt <cb@256bit.org>
parents: 13559
diff changeset
1133 call assert_equal(0, &bin)
4df23d9bad47 patch 8.0.1660: the terminal API "drop" command doesn't support options
Christian Brabandt <cb@256bit.org>
parents: 13559
diff changeset
1134
4df23d9bad47 patch 8.0.1660: the terminal API "drop" command doesn't support options
Christian Brabandt <cb@256bit.org>
parents: 13559
diff changeset
1135 call StopVimInTerminal(buf)
4df23d9bad47 patch 8.0.1660: the terminal API "drop" command doesn't support options
Christian Brabandt <cb@256bit.org>
parents: 13559
diff changeset
1136 call delete('Xscript')
4df23d9bad47 patch 8.0.1660: the terminal API "drop" command doesn't support options
Christian Brabandt <cb@256bit.org>
parents: 13559
diff changeset
1137 bwipe Xtextfile
4df23d9bad47 patch 8.0.1660: the terminal API "drop" command doesn't support options
Christian Brabandt <cb@256bit.org>
parents: 13559
diff changeset
1138 set nobinary
4df23d9bad47 patch 8.0.1660: the terminal API "drop" command doesn't support options
Christian Brabandt <cb@256bit.org>
parents: 13559
diff changeset
1139 endfunc
4df23d9bad47 patch 8.0.1660: the terminal API "drop" command doesn't support options
Christian Brabandt <cb@256bit.org>
parents: 13559
diff changeset
1140
4df23d9bad47 patch 8.0.1660: the terminal API "drop" command doesn't support options
Christian Brabandt <cb@256bit.org>
parents: 13559
diff changeset
1141 func Test_terminal_api_drop_newwin_nobinary()
4df23d9bad47 patch 8.0.1660: the terminal API "drop" command doesn't support options
Christian Brabandt <cb@256bit.org>
parents: 13559
diff changeset
1142 if !CanRunVimInTerminal()
4df23d9bad47 patch 8.0.1660: the terminal API "drop" command doesn't support options
Christian Brabandt <cb@256bit.org>
parents: 13559
diff changeset
1143 return
4df23d9bad47 patch 8.0.1660: the terminal API "drop" command doesn't support options
Christian Brabandt <cb@256bit.org>
parents: 13559
diff changeset
1144 endif
4df23d9bad47 patch 8.0.1660: the terminal API "drop" command doesn't support options
Christian Brabandt <cb@256bit.org>
parents: 13559
diff changeset
1145 set binary
4df23d9bad47 patch 8.0.1660: the terminal API "drop" command doesn't support options
Christian Brabandt <cb@256bit.org>
parents: 13559
diff changeset
1146 let buf = Api_drop_common(',{"nobinary":1}')
4df23d9bad47 patch 8.0.1660: the terminal API "drop" command doesn't support options
Christian Brabandt <cb@256bit.org>
parents: 13559
diff changeset
1147 call assert_equal(0, &bin)
4df23d9bad47 patch 8.0.1660: the terminal API "drop" command doesn't support options
Christian Brabandt <cb@256bit.org>
parents: 13559
diff changeset
1148
4df23d9bad47 patch 8.0.1660: the terminal API "drop" command doesn't support options
Christian Brabandt <cb@256bit.org>
parents: 13559
diff changeset
1149 call StopVimInTerminal(buf)
4df23d9bad47 patch 8.0.1660: the terminal API "drop" command doesn't support options
Christian Brabandt <cb@256bit.org>
parents: 13559
diff changeset
1150 call delete('Xscript')
4df23d9bad47 patch 8.0.1660: the terminal API "drop" command doesn't support options
Christian Brabandt <cb@256bit.org>
parents: 13559
diff changeset
1151 bwipe Xtextfile
4df23d9bad47 patch 8.0.1660: the terminal API "drop" command doesn't support options
Christian Brabandt <cb@256bit.org>
parents: 13559
diff changeset
1152 set nobinary
4df23d9bad47 patch 8.0.1660: the terminal API "drop" command doesn't support options
Christian Brabandt <cb@256bit.org>
parents: 13559
diff changeset
1153 endfunc
4df23d9bad47 patch 8.0.1660: the terminal API "drop" command doesn't support options
Christian Brabandt <cb@256bit.org>
parents: 13559
diff changeset
1154
4df23d9bad47 patch 8.0.1660: the terminal API "drop" command doesn't support options
Christian Brabandt <cb@256bit.org>
parents: 13559
diff changeset
1155 func Test_terminal_api_drop_newwin_ff()
4df23d9bad47 patch 8.0.1660: the terminal API "drop" command doesn't support options
Christian Brabandt <cb@256bit.org>
parents: 13559
diff changeset
1156 if !CanRunVimInTerminal()
4df23d9bad47 patch 8.0.1660: the terminal API "drop" command doesn't support options
Christian Brabandt <cb@256bit.org>
parents: 13559
diff changeset
1157 return
4df23d9bad47 patch 8.0.1660: the terminal API "drop" command doesn't support options
Christian Brabandt <cb@256bit.org>
parents: 13559
diff changeset
1158 endif
4df23d9bad47 patch 8.0.1660: the terminal API "drop" command doesn't support options
Christian Brabandt <cb@256bit.org>
parents: 13559
diff changeset
1159 let buf = Api_drop_common(',{"ff":"dos"}')
4df23d9bad47 patch 8.0.1660: the terminal API "drop" command doesn't support options
Christian Brabandt <cb@256bit.org>
parents: 13559
diff changeset
1160 call assert_equal("dos", &ff)
4df23d9bad47 patch 8.0.1660: the terminal API "drop" command doesn't support options
Christian Brabandt <cb@256bit.org>
parents: 13559
diff changeset
1161
4df23d9bad47 patch 8.0.1660: the terminal API "drop" command doesn't support options
Christian Brabandt <cb@256bit.org>
parents: 13559
diff changeset
1162 call StopVimInTerminal(buf)
4df23d9bad47 patch 8.0.1660: the terminal API "drop" command doesn't support options
Christian Brabandt <cb@256bit.org>
parents: 13559
diff changeset
1163 call delete('Xscript')
4df23d9bad47 patch 8.0.1660: the terminal API "drop" command doesn't support options
Christian Brabandt <cb@256bit.org>
parents: 13559
diff changeset
1164 bwipe Xtextfile
4df23d9bad47 patch 8.0.1660: the terminal API "drop" command doesn't support options
Christian Brabandt <cb@256bit.org>
parents: 13559
diff changeset
1165 endfunc
4df23d9bad47 patch 8.0.1660: the terminal API "drop" command doesn't support options
Christian Brabandt <cb@256bit.org>
parents: 13559
diff changeset
1166
4df23d9bad47 patch 8.0.1660: the terminal API "drop" command doesn't support options
Christian Brabandt <cb@256bit.org>
parents: 13559
diff changeset
1167 func Test_terminal_api_drop_newwin_fileformat()
4df23d9bad47 patch 8.0.1660: the terminal API "drop" command doesn't support options
Christian Brabandt <cb@256bit.org>
parents: 13559
diff changeset
1168 if !CanRunVimInTerminal()
4df23d9bad47 patch 8.0.1660: the terminal API "drop" command doesn't support options
Christian Brabandt <cb@256bit.org>
parents: 13559
diff changeset
1169 return
4df23d9bad47 patch 8.0.1660: the terminal API "drop" command doesn't support options
Christian Brabandt <cb@256bit.org>
parents: 13559
diff changeset
1170 endif
4df23d9bad47 patch 8.0.1660: the terminal API "drop" command doesn't support options
Christian Brabandt <cb@256bit.org>
parents: 13559
diff changeset
1171 let buf = Api_drop_common(',{"fileformat":"dos"}')
4df23d9bad47 patch 8.0.1660: the terminal API "drop" command doesn't support options
Christian Brabandt <cb@256bit.org>
parents: 13559
diff changeset
1172 call assert_equal("dos", &ff)
4df23d9bad47 patch 8.0.1660: the terminal API "drop" command doesn't support options
Christian Brabandt <cb@256bit.org>
parents: 13559
diff changeset
1173
4df23d9bad47 patch 8.0.1660: the terminal API "drop" command doesn't support options
Christian Brabandt <cb@256bit.org>
parents: 13559
diff changeset
1174 call StopVimInTerminal(buf)
4df23d9bad47 patch 8.0.1660: the terminal API "drop" command doesn't support options
Christian Brabandt <cb@256bit.org>
parents: 13559
diff changeset
1175 call delete('Xscript')
4df23d9bad47 patch 8.0.1660: the terminal API "drop" command doesn't support options
Christian Brabandt <cb@256bit.org>
parents: 13559
diff changeset
1176 bwipe Xtextfile
4df23d9bad47 patch 8.0.1660: the terminal API "drop" command doesn't support options
Christian Brabandt <cb@256bit.org>
parents: 13559
diff changeset
1177 endfunc
4df23d9bad47 patch 8.0.1660: the terminal API "drop" command doesn't support options
Christian Brabandt <cb@256bit.org>
parents: 13559
diff changeset
1178
4df23d9bad47 patch 8.0.1660: the terminal API "drop" command doesn't support options
Christian Brabandt <cb@256bit.org>
parents: 13559
diff changeset
1179 func Test_terminal_api_drop_newwin_enc()
4df23d9bad47 patch 8.0.1660: the terminal API "drop" command doesn't support options
Christian Brabandt <cb@256bit.org>
parents: 13559
diff changeset
1180 if !CanRunVimInTerminal()
4df23d9bad47 patch 8.0.1660: the terminal API "drop" command doesn't support options
Christian Brabandt <cb@256bit.org>
parents: 13559
diff changeset
1181 return
4df23d9bad47 patch 8.0.1660: the terminal API "drop" command doesn't support options
Christian Brabandt <cb@256bit.org>
parents: 13559
diff changeset
1182 endif
4df23d9bad47 patch 8.0.1660: the terminal API "drop" command doesn't support options
Christian Brabandt <cb@256bit.org>
parents: 13559
diff changeset
1183 let buf = Api_drop_common(',{"enc":"utf-16"}')
4df23d9bad47 patch 8.0.1660: the terminal API "drop" command doesn't support options
Christian Brabandt <cb@256bit.org>
parents: 13559
diff changeset
1184 call assert_equal("utf-16", &fenc)
4df23d9bad47 patch 8.0.1660: the terminal API "drop" command doesn't support options
Christian Brabandt <cb@256bit.org>
parents: 13559
diff changeset
1185
4df23d9bad47 patch 8.0.1660: the terminal API "drop" command doesn't support options
Christian Brabandt <cb@256bit.org>
parents: 13559
diff changeset
1186 call StopVimInTerminal(buf)
4df23d9bad47 patch 8.0.1660: the terminal API "drop" command doesn't support options
Christian Brabandt <cb@256bit.org>
parents: 13559
diff changeset
1187 call delete('Xscript')
4df23d9bad47 patch 8.0.1660: the terminal API "drop" command doesn't support options
Christian Brabandt <cb@256bit.org>
parents: 13559
diff changeset
1188 bwipe Xtextfile
4df23d9bad47 patch 8.0.1660: the terminal API "drop" command doesn't support options
Christian Brabandt <cb@256bit.org>
parents: 13559
diff changeset
1189 endfunc
4df23d9bad47 patch 8.0.1660: the terminal API "drop" command doesn't support options
Christian Brabandt <cb@256bit.org>
parents: 13559
diff changeset
1190
4df23d9bad47 patch 8.0.1660: the terminal API "drop" command doesn't support options
Christian Brabandt <cb@256bit.org>
parents: 13559
diff changeset
1191 func Test_terminal_api_drop_newwin_encoding()
4df23d9bad47 patch 8.0.1660: the terminal API "drop" command doesn't support options
Christian Brabandt <cb@256bit.org>
parents: 13559
diff changeset
1192 if !CanRunVimInTerminal()
4df23d9bad47 patch 8.0.1660: the terminal API "drop" command doesn't support options
Christian Brabandt <cb@256bit.org>
parents: 13559
diff changeset
1193 return
4df23d9bad47 patch 8.0.1660: the terminal API "drop" command doesn't support options
Christian Brabandt <cb@256bit.org>
parents: 13559
diff changeset
1194 endif
4df23d9bad47 patch 8.0.1660: the terminal API "drop" command doesn't support options
Christian Brabandt <cb@256bit.org>
parents: 13559
diff changeset
1195 let buf = Api_drop_common(',{"encoding":"utf-16"}')
4df23d9bad47 patch 8.0.1660: the terminal API "drop" command doesn't support options
Christian Brabandt <cb@256bit.org>
parents: 13559
diff changeset
1196 call assert_equal("utf-16", &fenc)
13535
e9ffb5b35266 patch 8.0.1641: job in terminal can't communicate with Vim
Christian Brabandt <cb@256bit.org>
parents: 13527
diff changeset
1197
e9ffb5b35266 patch 8.0.1641: job in terminal can't communicate with Vim
Christian Brabandt <cb@256bit.org>
parents: 13527
diff changeset
1198 call StopVimInTerminal(buf)
e9ffb5b35266 patch 8.0.1641: job in terminal can't communicate with Vim
Christian Brabandt <cb@256bit.org>
parents: 13527
diff changeset
1199 call delete('Xscript')
e9ffb5b35266 patch 8.0.1641: job in terminal can't communicate with Vim
Christian Brabandt <cb@256bit.org>
parents: 13527
diff changeset
1200 bwipe Xtextfile
e9ffb5b35266 patch 8.0.1641: job in terminal can't communicate with Vim
Christian Brabandt <cb@256bit.org>
parents: 13527
diff changeset
1201 endfunc
e9ffb5b35266 patch 8.0.1641: job in terminal can't communicate with Vim
Christian Brabandt <cb@256bit.org>
parents: 13527
diff changeset
1202
e9ffb5b35266 patch 8.0.1641: job in terminal can't communicate with Vim
Christian Brabandt <cb@256bit.org>
parents: 13527
diff changeset
1203 func Test_terminal_api_drop_oldwin()
e9ffb5b35266 patch 8.0.1641: job in terminal can't communicate with Vim
Christian Brabandt <cb@256bit.org>
parents: 13527
diff changeset
1204 if !CanRunVimInTerminal()
e9ffb5b35266 patch 8.0.1641: job in terminal can't communicate with Vim
Christian Brabandt <cb@256bit.org>
parents: 13527
diff changeset
1205 return
e9ffb5b35266 patch 8.0.1641: job in terminal can't communicate with Vim
Christian Brabandt <cb@256bit.org>
parents: 13527
diff changeset
1206 endif
e9ffb5b35266 patch 8.0.1641: job in terminal can't communicate with Vim
Christian Brabandt <cb@256bit.org>
parents: 13527
diff changeset
1207 let firstwinid = win_getid()
e9ffb5b35266 patch 8.0.1641: job in terminal can't communicate with Vim
Christian Brabandt <cb@256bit.org>
parents: 13527
diff changeset
1208 split Xtextfile
e9ffb5b35266 patch 8.0.1641: job in terminal can't communicate with Vim
Christian Brabandt <cb@256bit.org>
parents: 13527
diff changeset
1209 let textfile_winid = win_getid()
e9ffb5b35266 patch 8.0.1641: job in terminal can't communicate with Vim
Christian Brabandt <cb@256bit.org>
parents: 13527
diff changeset
1210 call assert_equal(2, winnr('$'))
e9ffb5b35266 patch 8.0.1641: job in terminal can't communicate with Vim
Christian Brabandt <cb@256bit.org>
parents: 13527
diff changeset
1211 call win_gotoid(firstwinid)
e9ffb5b35266 patch 8.0.1641: job in terminal can't communicate with Vim
Christian Brabandt <cb@256bit.org>
parents: 13527
diff changeset
1212
e9ffb5b35266 patch 8.0.1641: job in terminal can't communicate with Vim
Christian Brabandt <cb@256bit.org>
parents: 13527
diff changeset
1213 " Use the title termcap entries to output the escape sequence.
e9ffb5b35266 patch 8.0.1641: job in terminal can't communicate with Vim
Christian Brabandt <cb@256bit.org>
parents: 13527
diff changeset
1214 call writefile([
13541
296d02b0637f patch 8.0.1644: terminal API tests still fail
Christian Brabandt <cb@256bit.org>
parents: 13539
diff changeset
1215 \ 'set title',
13535
e9ffb5b35266 patch 8.0.1641: job in terminal can't communicate with Vim
Christian Brabandt <cb@256bit.org>
parents: 13527
diff changeset
1216 \ 'exe "set t_ts=\<Esc>]51; t_fs=\x07"',
e9ffb5b35266 patch 8.0.1641: job in terminal can't communicate with Vim
Christian Brabandt <cb@256bit.org>
parents: 13527
diff changeset
1217 \ 'let &titlestring = ''["drop","Xtextfile"]''',
e9ffb5b35266 patch 8.0.1641: job in terminal can't communicate with Vim
Christian Brabandt <cb@256bit.org>
parents: 13527
diff changeset
1218 \ 'redraw',
e9ffb5b35266 patch 8.0.1641: job in terminal can't communicate with Vim
Christian Brabandt <cb@256bit.org>
parents: 13527
diff changeset
1219 \ "set t_ts=",
e9ffb5b35266 patch 8.0.1641: job in terminal can't communicate with Vim
Christian Brabandt <cb@256bit.org>
parents: 13527
diff changeset
1220 \ ], 'Xscript')
13537
3fa880445c99 patch 8.0.1642: running Vim in terminal fails with two windows
Christian Brabandt <cb@256bit.org>
parents: 13535
diff changeset
1221 let buf = RunVimInTerminal('-S Xscript', {'rows': 10})
13808
16a062cf08c2 patch 8.0.1776: in tests, when WaitFor() fails it doesn't say why
Christian Brabandt <cb@256bit.org>
parents: 13798
diff changeset
1222 call WaitForAssert({-> assert_equal('Xtextfile', expand('%:t'))})
13535
e9ffb5b35266 patch 8.0.1641: job in terminal can't communicate with Vim
Christian Brabandt <cb@256bit.org>
parents: 13527
diff changeset
1223 call assert_equal(textfile_winid, win_getid())
e9ffb5b35266 patch 8.0.1641: job in terminal can't communicate with Vim
Christian Brabandt <cb@256bit.org>
parents: 13527
diff changeset
1224
e9ffb5b35266 patch 8.0.1641: job in terminal can't communicate with Vim
Christian Brabandt <cb@256bit.org>
parents: 13527
diff changeset
1225 call StopVimInTerminal(buf)
e9ffb5b35266 patch 8.0.1641: job in terminal can't communicate with Vim
Christian Brabandt <cb@256bit.org>
parents: 13527
diff changeset
1226 call delete('Xscript')
e9ffb5b35266 patch 8.0.1641: job in terminal can't communicate with Vim
Christian Brabandt <cb@256bit.org>
parents: 13527
diff changeset
1227 bwipe Xtextfile
e9ffb5b35266 patch 8.0.1641: job in terminal can't communicate with Vim
Christian Brabandt <cb@256bit.org>
parents: 13527
diff changeset
1228 endfunc
e9ffb5b35266 patch 8.0.1641: job in terminal can't communicate with Vim
Christian Brabandt <cb@256bit.org>
parents: 13527
diff changeset
1229
13547
87a9c1be0ae3 patch 8.0.1647: terminal API may call any user function
Christian Brabandt <cb@256bit.org>
parents: 13543
diff changeset
1230 func Tapi_TryThis(bufnum, arg)
13535
e9ffb5b35266 patch 8.0.1641: job in terminal can't communicate with Vim
Christian Brabandt <cb@256bit.org>
parents: 13527
diff changeset
1231 let g:called_bufnum = a:bufnum
e9ffb5b35266 patch 8.0.1641: job in terminal can't communicate with Vim
Christian Brabandt <cb@256bit.org>
parents: 13527
diff changeset
1232 let g:called_arg = a:arg
e9ffb5b35266 patch 8.0.1641: job in terminal can't communicate with Vim
Christian Brabandt <cb@256bit.org>
parents: 13527
diff changeset
1233 endfunc
e9ffb5b35266 patch 8.0.1641: job in terminal can't communicate with Vim
Christian Brabandt <cb@256bit.org>
parents: 13527
diff changeset
1234
13547
87a9c1be0ae3 patch 8.0.1647: terminal API may call any user function
Christian Brabandt <cb@256bit.org>
parents: 13543
diff changeset
1235 func WriteApiCall(funcname)
87a9c1be0ae3 patch 8.0.1647: terminal API may call any user function
Christian Brabandt <cb@256bit.org>
parents: 13543
diff changeset
1236 " Use the title termcap entries to output the escape sequence.
87a9c1be0ae3 patch 8.0.1647: terminal API may call any user function
Christian Brabandt <cb@256bit.org>
parents: 13543
diff changeset
1237 call writefile([
87a9c1be0ae3 patch 8.0.1647: terminal API may call any user function
Christian Brabandt <cb@256bit.org>
parents: 13543
diff changeset
1238 \ 'set title',
87a9c1be0ae3 patch 8.0.1647: terminal API may call any user function
Christian Brabandt <cb@256bit.org>
parents: 13543
diff changeset
1239 \ 'exe "set t_ts=\<Esc>]51; t_fs=\x07"',
87a9c1be0ae3 patch 8.0.1647: terminal API may call any user function
Christian Brabandt <cb@256bit.org>
parents: 13543
diff changeset
1240 \ 'let &titlestring = ''["call","' . a:funcname . '",["hello",123]]''',
87a9c1be0ae3 patch 8.0.1647: terminal API may call any user function
Christian Brabandt <cb@256bit.org>
parents: 13543
diff changeset
1241 \ 'redraw',
87a9c1be0ae3 patch 8.0.1647: terminal API may call any user function
Christian Brabandt <cb@256bit.org>
parents: 13543
diff changeset
1242 \ "set t_ts=",
87a9c1be0ae3 patch 8.0.1647: terminal API may call any user function
Christian Brabandt <cb@256bit.org>
parents: 13543
diff changeset
1243 \ ], 'Xscript')
87a9c1be0ae3 patch 8.0.1647: terminal API may call any user function
Christian Brabandt <cb@256bit.org>
parents: 13543
diff changeset
1244 endfunc
87a9c1be0ae3 patch 8.0.1647: terminal API may call any user function
Christian Brabandt <cb@256bit.org>
parents: 13543
diff changeset
1245
13535
e9ffb5b35266 patch 8.0.1641: job in terminal can't communicate with Vim
Christian Brabandt <cb@256bit.org>
parents: 13527
diff changeset
1246 func Test_terminal_api_call()
e9ffb5b35266 patch 8.0.1641: job in terminal can't communicate with Vim
Christian Brabandt <cb@256bit.org>
parents: 13527
diff changeset
1247 if !CanRunVimInTerminal()
e9ffb5b35266 patch 8.0.1641: job in terminal can't communicate with Vim
Christian Brabandt <cb@256bit.org>
parents: 13527
diff changeset
1248 return
e9ffb5b35266 patch 8.0.1641: job in terminal can't communicate with Vim
Christian Brabandt <cb@256bit.org>
parents: 13527
diff changeset
1249 endif
13539
5f543bce50e8 patch 8.0.1643: terminal API tests fail
Christian Brabandt <cb@256bit.org>
parents: 13537
diff changeset
1250
13547
87a9c1be0ae3 patch 8.0.1647: terminal API may call any user function
Christian Brabandt <cb@256bit.org>
parents: 13543
diff changeset
1251 call WriteApiCall('Tapi_TryThis')
13535
e9ffb5b35266 patch 8.0.1641: job in terminal can't communicate with Vim
Christian Brabandt <cb@256bit.org>
parents: 13527
diff changeset
1252 let buf = RunVimInTerminal('-S Xscript', {})
e9ffb5b35266 patch 8.0.1641: job in terminal can't communicate with Vim
Christian Brabandt <cb@256bit.org>
parents: 13527
diff changeset
1253 call WaitFor({-> exists('g:called_bufnum')})
e9ffb5b35266 patch 8.0.1641: job in terminal can't communicate with Vim
Christian Brabandt <cb@256bit.org>
parents: 13527
diff changeset
1254 call assert_equal(buf, g:called_bufnum)
e9ffb5b35266 patch 8.0.1641: job in terminal can't communicate with Vim
Christian Brabandt <cb@256bit.org>
parents: 13527
diff changeset
1255 call assert_equal(['hello', 123], g:called_arg)
e9ffb5b35266 patch 8.0.1641: job in terminal can't communicate with Vim
Christian Brabandt <cb@256bit.org>
parents: 13527
diff changeset
1256
e9ffb5b35266 patch 8.0.1641: job in terminal can't communicate with Vim
Christian Brabandt <cb@256bit.org>
parents: 13527
diff changeset
1257 call StopVimInTerminal(buf)
e9ffb5b35266 patch 8.0.1641: job in terminal can't communicate with Vim
Christian Brabandt <cb@256bit.org>
parents: 13527
diff changeset
1258 call delete('Xscript')
e9ffb5b35266 patch 8.0.1641: job in terminal can't communicate with Vim
Christian Brabandt <cb@256bit.org>
parents: 13527
diff changeset
1259 unlet g:called_bufnum
e9ffb5b35266 patch 8.0.1641: job in terminal can't communicate with Vim
Christian Brabandt <cb@256bit.org>
parents: 13527
diff changeset
1260 unlet g:called_arg
e9ffb5b35266 patch 8.0.1641: job in terminal can't communicate with Vim
Christian Brabandt <cb@256bit.org>
parents: 13527
diff changeset
1261 endfunc
13547
87a9c1be0ae3 patch 8.0.1647: terminal API may call any user function
Christian Brabandt <cb@256bit.org>
parents: 13543
diff changeset
1262
87a9c1be0ae3 patch 8.0.1647: terminal API may call any user function
Christian Brabandt <cb@256bit.org>
parents: 13543
diff changeset
1263 func Test_terminal_api_call_fails()
87a9c1be0ae3 patch 8.0.1647: terminal API may call any user function
Christian Brabandt <cb@256bit.org>
parents: 13543
diff changeset
1264 if !CanRunVimInTerminal()
87a9c1be0ae3 patch 8.0.1647: terminal API may call any user function
Christian Brabandt <cb@256bit.org>
parents: 13543
diff changeset
1265 return
87a9c1be0ae3 patch 8.0.1647: terminal API may call any user function
Christian Brabandt <cb@256bit.org>
parents: 13543
diff changeset
1266 endif
87a9c1be0ae3 patch 8.0.1647: terminal API may call any user function
Christian Brabandt <cb@256bit.org>
parents: 13543
diff changeset
1267
87a9c1be0ae3 patch 8.0.1647: terminal API may call any user function
Christian Brabandt <cb@256bit.org>
parents: 13543
diff changeset
1268 call WriteApiCall('TryThis')
87a9c1be0ae3 patch 8.0.1647: terminal API may call any user function
Christian Brabandt <cb@256bit.org>
parents: 13543
diff changeset
1269 call ch_logfile('Xlog', 'w')
87a9c1be0ae3 patch 8.0.1647: terminal API may call any user function
Christian Brabandt <cb@256bit.org>
parents: 13543
diff changeset
1270 let buf = RunVimInTerminal('-S Xscript', {})
13808
16a062cf08c2 patch 8.0.1776: in tests, when WaitFor() fails it doesn't say why
Christian Brabandt <cb@256bit.org>
parents: 13798
diff changeset
1271 call WaitForAssert({-> assert_match('Invalid function name: TryThis', string(readfile('Xlog')))})
13547
87a9c1be0ae3 patch 8.0.1647: terminal API may call any user function
Christian Brabandt <cb@256bit.org>
parents: 13543
diff changeset
1272
87a9c1be0ae3 patch 8.0.1647: terminal API may call any user function
Christian Brabandt <cb@256bit.org>
parents: 13543
diff changeset
1273 call StopVimInTerminal(buf)
87a9c1be0ae3 patch 8.0.1647: terminal API may call any user function
Christian Brabandt <cb@256bit.org>
parents: 13543
diff changeset
1274 call delete('Xscript')
87a9c1be0ae3 patch 8.0.1647: terminal API may call any user function
Christian Brabandt <cb@256bit.org>
parents: 13543
diff changeset
1275 call ch_logfile('', '')
87a9c1be0ae3 patch 8.0.1647: terminal API may call any user function
Christian Brabandt <cb@256bit.org>
parents: 13543
diff changeset
1276 call delete('Xlog')
87a9c1be0ae3 patch 8.0.1647: terminal API may call any user function
Christian Brabandt <cb@256bit.org>
parents: 13543
diff changeset
1277 endfunc
13626
ab89131d30e0 patch 8.0.1685: can't set ANSI colors of a terminal window
Christian Brabandt <cb@256bit.org>
parents: 13602
diff changeset
1278
13720
7d2039b2ecc8 patch 8.0.1732: crash when terminal API call deletes the buffer
Christian Brabandt <cb@256bit.org>
parents: 13700
diff changeset
1279 let s:caught_e937 = 0
7d2039b2ecc8 patch 8.0.1732: crash when terminal API call deletes the buffer
Christian Brabandt <cb@256bit.org>
parents: 13700
diff changeset
1280
7d2039b2ecc8 patch 8.0.1732: crash when terminal API call deletes the buffer
Christian Brabandt <cb@256bit.org>
parents: 13700
diff changeset
1281 func Tapi_Delete(bufnum, arg)
7d2039b2ecc8 patch 8.0.1732: crash when terminal API call deletes the buffer
Christian Brabandt <cb@256bit.org>
parents: 13700
diff changeset
1282 try
7d2039b2ecc8 patch 8.0.1732: crash when terminal API call deletes the buffer
Christian Brabandt <cb@256bit.org>
parents: 13700
diff changeset
1283 execute 'bdelete!' a:bufnum
7d2039b2ecc8 patch 8.0.1732: crash when terminal API call deletes the buffer
Christian Brabandt <cb@256bit.org>
parents: 13700
diff changeset
1284 catch /E937:/
7d2039b2ecc8 patch 8.0.1732: crash when terminal API call deletes the buffer
Christian Brabandt <cb@256bit.org>
parents: 13700
diff changeset
1285 let s:caught_e937 = 1
7d2039b2ecc8 patch 8.0.1732: crash when terminal API call deletes the buffer
Christian Brabandt <cb@256bit.org>
parents: 13700
diff changeset
1286 endtry
7d2039b2ecc8 patch 8.0.1732: crash when terminal API call deletes the buffer
Christian Brabandt <cb@256bit.org>
parents: 13700
diff changeset
1287 endfunc
7d2039b2ecc8 patch 8.0.1732: crash when terminal API call deletes the buffer
Christian Brabandt <cb@256bit.org>
parents: 13700
diff changeset
1288
7d2039b2ecc8 patch 8.0.1732: crash when terminal API call deletes the buffer
Christian Brabandt <cb@256bit.org>
parents: 13700
diff changeset
1289 func Test_terminal_api_call_fail_delete()
7d2039b2ecc8 patch 8.0.1732: crash when terminal API call deletes the buffer
Christian Brabandt <cb@256bit.org>
parents: 13700
diff changeset
1290 if !CanRunVimInTerminal()
7d2039b2ecc8 patch 8.0.1732: crash when terminal API call deletes the buffer
Christian Brabandt <cb@256bit.org>
parents: 13700
diff changeset
1291 return
7d2039b2ecc8 patch 8.0.1732: crash when terminal API call deletes the buffer
Christian Brabandt <cb@256bit.org>
parents: 13700
diff changeset
1292 endif
7d2039b2ecc8 patch 8.0.1732: crash when terminal API call deletes the buffer
Christian Brabandt <cb@256bit.org>
parents: 13700
diff changeset
1293
7d2039b2ecc8 patch 8.0.1732: crash when terminal API call deletes the buffer
Christian Brabandt <cb@256bit.org>
parents: 13700
diff changeset
1294 call WriteApiCall('Tapi_Delete')
7d2039b2ecc8 patch 8.0.1732: crash when terminal API call deletes the buffer
Christian Brabandt <cb@256bit.org>
parents: 13700
diff changeset
1295 let buf = RunVimInTerminal('-S Xscript', {})
13808
16a062cf08c2 patch 8.0.1776: in tests, when WaitFor() fails it doesn't say why
Christian Brabandt <cb@256bit.org>
parents: 13798
diff changeset
1296 call WaitForAssert({-> assert_equal(1, s:caught_e937)})
13720
7d2039b2ecc8 patch 8.0.1732: crash when terminal API call deletes the buffer
Christian Brabandt <cb@256bit.org>
parents: 13700
diff changeset
1297
7d2039b2ecc8 patch 8.0.1732: crash when terminal API call deletes the buffer
Christian Brabandt <cb@256bit.org>
parents: 13700
diff changeset
1298 call StopVimInTerminal(buf)
7d2039b2ecc8 patch 8.0.1732: crash when terminal API call deletes the buffer
Christian Brabandt <cb@256bit.org>
parents: 13700
diff changeset
1299 call delete('Xscript')
7d2039b2ecc8 patch 8.0.1732: crash when terminal API call deletes the buffer
Christian Brabandt <cb@256bit.org>
parents: 13700
diff changeset
1300 call ch_logfile('', '')
7d2039b2ecc8 patch 8.0.1732: crash when terminal API call deletes the buffer
Christian Brabandt <cb@256bit.org>
parents: 13700
diff changeset
1301 endfunc
7d2039b2ecc8 patch 8.0.1732: crash when terminal API call deletes the buffer
Christian Brabandt <cb@256bit.org>
parents: 13700
diff changeset
1302
13626
ab89131d30e0 patch 8.0.1685: can't set ANSI colors of a terminal window
Christian Brabandt <cb@256bit.org>
parents: 13602
diff changeset
1303 func Test_terminal_ansicolors_default()
ab89131d30e0 patch 8.0.1685: can't set ANSI colors of a terminal window
Christian Brabandt <cb@256bit.org>
parents: 13602
diff changeset
1304 let colors = [
ab89131d30e0 patch 8.0.1685: can't set ANSI colors of a terminal window
Christian Brabandt <cb@256bit.org>
parents: 13602
diff changeset
1305 \ '#000000', '#e00000',
ab89131d30e0 patch 8.0.1685: can't set ANSI colors of a terminal window
Christian Brabandt <cb@256bit.org>
parents: 13602
diff changeset
1306 \ '#00e000', '#e0e000',
ab89131d30e0 patch 8.0.1685: can't set ANSI colors of a terminal window
Christian Brabandt <cb@256bit.org>
parents: 13602
diff changeset
1307 \ '#0000e0', '#e000e0',
ab89131d30e0 patch 8.0.1685: can't set ANSI colors of a terminal window
Christian Brabandt <cb@256bit.org>
parents: 13602
diff changeset
1308 \ '#00e0e0', '#e0e0e0',
ab89131d30e0 patch 8.0.1685: can't set ANSI colors of a terminal window
Christian Brabandt <cb@256bit.org>
parents: 13602
diff changeset
1309 \ '#808080', '#ff4040',
ab89131d30e0 patch 8.0.1685: can't set ANSI colors of a terminal window
Christian Brabandt <cb@256bit.org>
parents: 13602
diff changeset
1310 \ '#40ff40', '#ffff40',
ab89131d30e0 patch 8.0.1685: can't set ANSI colors of a terminal window
Christian Brabandt <cb@256bit.org>
parents: 13602
diff changeset
1311 \ '#4040ff', '#ff40ff',
ab89131d30e0 patch 8.0.1685: can't set ANSI colors of a terminal window
Christian Brabandt <cb@256bit.org>
parents: 13602
diff changeset
1312 \ '#40ffff', '#ffffff',
ab89131d30e0 patch 8.0.1685: can't set ANSI colors of a terminal window
Christian Brabandt <cb@256bit.org>
parents: 13602
diff changeset
1313 \]
ab89131d30e0 patch 8.0.1685: can't set ANSI colors of a terminal window
Christian Brabandt <cb@256bit.org>
parents: 13602
diff changeset
1314
ab89131d30e0 patch 8.0.1685: can't set ANSI colors of a terminal window
Christian Brabandt <cb@256bit.org>
parents: 13602
diff changeset
1315 let buf = Run_shell_in_terminal({})
ab89131d30e0 patch 8.0.1685: can't set ANSI colors of a terminal window
Christian Brabandt <cb@256bit.org>
parents: 13602
diff changeset
1316 call assert_equal(colors, term_getansicolors(buf))
ab89131d30e0 patch 8.0.1685: can't set ANSI colors of a terminal window
Christian Brabandt <cb@256bit.org>
parents: 13602
diff changeset
1317 call Stop_shell_in_terminal(buf)
ab89131d30e0 patch 8.0.1685: can't set ANSI colors of a terminal window
Christian Brabandt <cb@256bit.org>
parents: 13602
diff changeset
1318 call term_wait(buf)
ab89131d30e0 patch 8.0.1685: can't set ANSI colors of a terminal window
Christian Brabandt <cb@256bit.org>
parents: 13602
diff changeset
1319
ab89131d30e0 patch 8.0.1685: can't set ANSI colors of a terminal window
Christian Brabandt <cb@256bit.org>
parents: 13602
diff changeset
1320 exe buf . 'bwipe'
ab89131d30e0 patch 8.0.1685: can't set ANSI colors of a terminal window
Christian Brabandt <cb@256bit.org>
parents: 13602
diff changeset
1321 endfunc
ab89131d30e0 patch 8.0.1685: can't set ANSI colors of a terminal window
Christian Brabandt <cb@256bit.org>
parents: 13602
diff changeset
1322
ab89131d30e0 patch 8.0.1685: can't set ANSI colors of a terminal window
Christian Brabandt <cb@256bit.org>
parents: 13602
diff changeset
1323 let s:test_colors = [
ab89131d30e0 patch 8.0.1685: can't set ANSI colors of a terminal window
Christian Brabandt <cb@256bit.org>
parents: 13602
diff changeset
1324 \ '#616e64', '#0d0a79',
ab89131d30e0 patch 8.0.1685: can't set ANSI colors of a terminal window
Christian Brabandt <cb@256bit.org>
parents: 13602
diff changeset
1325 \ '#6d610d', '#0a7373',
ab89131d30e0 patch 8.0.1685: can't set ANSI colors of a terminal window
Christian Brabandt <cb@256bit.org>
parents: 13602
diff changeset
1326 \ '#690d0a', '#6d696e',
ab89131d30e0 patch 8.0.1685: can't set ANSI colors of a terminal window
Christian Brabandt <cb@256bit.org>
parents: 13602
diff changeset
1327 \ '#0d0a6f', '#616e0d',
ab89131d30e0 patch 8.0.1685: can't set ANSI colors of a terminal window
Christian Brabandt <cb@256bit.org>
parents: 13602
diff changeset
1328 \ '#0a6479', '#6d0d0a',
ab89131d30e0 patch 8.0.1685: can't set ANSI colors of a terminal window
Christian Brabandt <cb@256bit.org>
parents: 13602
diff changeset
1329 \ '#617373', '#0d0a69',
ab89131d30e0 patch 8.0.1685: can't set ANSI colors of a terminal window
Christian Brabandt <cb@256bit.org>
parents: 13602
diff changeset
1330 \ '#6d690d', '#0a6e6f',
ab89131d30e0 patch 8.0.1685: can't set ANSI colors of a terminal window
Christian Brabandt <cb@256bit.org>
parents: 13602
diff changeset
1331 \ '#610d0a', '#6e6479',
ab89131d30e0 patch 8.0.1685: can't set ANSI colors of a terminal window
Christian Brabandt <cb@256bit.org>
parents: 13602
diff changeset
1332 \]
ab89131d30e0 patch 8.0.1685: can't set ANSI colors of a terminal window
Christian Brabandt <cb@256bit.org>
parents: 13602
diff changeset
1333
ab89131d30e0 patch 8.0.1685: can't set ANSI colors of a terminal window
Christian Brabandt <cb@256bit.org>
parents: 13602
diff changeset
1334 func Test_terminal_ansicolors_global()
ab89131d30e0 patch 8.0.1685: can't set ANSI colors of a terminal window
Christian Brabandt <cb@256bit.org>
parents: 13602
diff changeset
1335 let g:terminal_ansi_colors = reverse(copy(s:test_colors))
ab89131d30e0 patch 8.0.1685: can't set ANSI colors of a terminal window
Christian Brabandt <cb@256bit.org>
parents: 13602
diff changeset
1336 let buf = Run_shell_in_terminal({})
ab89131d30e0 patch 8.0.1685: can't set ANSI colors of a terminal window
Christian Brabandt <cb@256bit.org>
parents: 13602
diff changeset
1337 call assert_equal(g:terminal_ansi_colors, term_getansicolors(buf))
ab89131d30e0 patch 8.0.1685: can't set ANSI colors of a terminal window
Christian Brabandt <cb@256bit.org>
parents: 13602
diff changeset
1338 call Stop_shell_in_terminal(buf)
ab89131d30e0 patch 8.0.1685: can't set ANSI colors of a terminal window
Christian Brabandt <cb@256bit.org>
parents: 13602
diff changeset
1339 call term_wait(buf)
ab89131d30e0 patch 8.0.1685: can't set ANSI colors of a terminal window
Christian Brabandt <cb@256bit.org>
parents: 13602
diff changeset
1340
ab89131d30e0 patch 8.0.1685: can't set ANSI colors of a terminal window
Christian Brabandt <cb@256bit.org>
parents: 13602
diff changeset
1341 exe buf . 'bwipe'
ab89131d30e0 patch 8.0.1685: can't set ANSI colors of a terminal window
Christian Brabandt <cb@256bit.org>
parents: 13602
diff changeset
1342 unlet g:terminal_ansi_colors
ab89131d30e0 patch 8.0.1685: can't set ANSI colors of a terminal window
Christian Brabandt <cb@256bit.org>
parents: 13602
diff changeset
1343 endfunc
ab89131d30e0 patch 8.0.1685: can't set ANSI colors of a terminal window
Christian Brabandt <cb@256bit.org>
parents: 13602
diff changeset
1344
ab89131d30e0 patch 8.0.1685: can't set ANSI colors of a terminal window
Christian Brabandt <cb@256bit.org>
parents: 13602
diff changeset
1345 func Test_terminal_ansicolors_func()
ab89131d30e0 patch 8.0.1685: can't set ANSI colors of a terminal window
Christian Brabandt <cb@256bit.org>
parents: 13602
diff changeset
1346 let g:terminal_ansi_colors = reverse(copy(s:test_colors))
ab89131d30e0 patch 8.0.1685: can't set ANSI colors of a terminal window
Christian Brabandt <cb@256bit.org>
parents: 13602
diff changeset
1347 let buf = Run_shell_in_terminal({'ansi_colors': s:test_colors})
ab89131d30e0 patch 8.0.1685: can't set ANSI colors of a terminal window
Christian Brabandt <cb@256bit.org>
parents: 13602
diff changeset
1348 call assert_equal(s:test_colors, term_getansicolors(buf))
ab89131d30e0 patch 8.0.1685: can't set ANSI colors of a terminal window
Christian Brabandt <cb@256bit.org>
parents: 13602
diff changeset
1349
ab89131d30e0 patch 8.0.1685: can't set ANSI colors of a terminal window
Christian Brabandt <cb@256bit.org>
parents: 13602
diff changeset
1350 call term_setansicolors(buf, g:terminal_ansi_colors)
ab89131d30e0 patch 8.0.1685: can't set ANSI colors of a terminal window
Christian Brabandt <cb@256bit.org>
parents: 13602
diff changeset
1351 call assert_equal(g:terminal_ansi_colors, term_getansicolors(buf))
ab89131d30e0 patch 8.0.1685: can't set ANSI colors of a terminal window
Christian Brabandt <cb@256bit.org>
parents: 13602
diff changeset
1352
ab89131d30e0 patch 8.0.1685: can't set ANSI colors of a terminal window
Christian Brabandt <cb@256bit.org>
parents: 13602
diff changeset
1353 let colors = [
ab89131d30e0 patch 8.0.1685: can't set ANSI colors of a terminal window
Christian Brabandt <cb@256bit.org>
parents: 13602
diff changeset
1354 \ 'ivory', 'AliceBlue',
ab89131d30e0 patch 8.0.1685: can't set ANSI colors of a terminal window
Christian Brabandt <cb@256bit.org>
parents: 13602
diff changeset
1355 \ 'grey67', 'dark goldenrod',
ab89131d30e0 patch 8.0.1685: can't set ANSI colors of a terminal window
Christian Brabandt <cb@256bit.org>
parents: 13602
diff changeset
1356 \ 'SteelBlue3', 'PaleVioletRed4',
ab89131d30e0 patch 8.0.1685: can't set ANSI colors of a terminal window
Christian Brabandt <cb@256bit.org>
parents: 13602
diff changeset
1357 \ 'MediumPurple2', 'yellow2',
ab89131d30e0 patch 8.0.1685: can't set ANSI colors of a terminal window
Christian Brabandt <cb@256bit.org>
parents: 13602
diff changeset
1358 \ 'RosyBrown3', 'OrangeRed2',
ab89131d30e0 patch 8.0.1685: can't set ANSI colors of a terminal window
Christian Brabandt <cb@256bit.org>
parents: 13602
diff changeset
1359 \ 'white smoke', 'navy blue',
ab89131d30e0 patch 8.0.1685: can't set ANSI colors of a terminal window
Christian Brabandt <cb@256bit.org>
parents: 13602
diff changeset
1360 \ 'grey47', 'gray97',
ab89131d30e0 patch 8.0.1685: can't set ANSI colors of a terminal window
Christian Brabandt <cb@256bit.org>
parents: 13602
diff changeset
1361 \ 'MistyRose2', 'DodgerBlue4',
ab89131d30e0 patch 8.0.1685: can't set ANSI colors of a terminal window
Christian Brabandt <cb@256bit.org>
parents: 13602
diff changeset
1362 \]
ab89131d30e0 patch 8.0.1685: can't set ANSI colors of a terminal window
Christian Brabandt <cb@256bit.org>
parents: 13602
diff changeset
1363 call term_setansicolors(buf, colors)
ab89131d30e0 patch 8.0.1685: can't set ANSI colors of a terminal window
Christian Brabandt <cb@256bit.org>
parents: 13602
diff changeset
1364
ab89131d30e0 patch 8.0.1685: can't set ANSI colors of a terminal window
Christian Brabandt <cb@256bit.org>
parents: 13602
diff changeset
1365 let colors[4] = 'Invalid'
ab89131d30e0 patch 8.0.1685: can't set ANSI colors of a terminal window
Christian Brabandt <cb@256bit.org>
parents: 13602
diff changeset
1366 call assert_fails('call term_setansicolors(buf, colors)', 'E474:')
ab89131d30e0 patch 8.0.1685: can't set ANSI colors of a terminal window
Christian Brabandt <cb@256bit.org>
parents: 13602
diff changeset
1367
ab89131d30e0 patch 8.0.1685: can't set ANSI colors of a terminal window
Christian Brabandt <cb@256bit.org>
parents: 13602
diff changeset
1368 call Stop_shell_in_terminal(buf)
ab89131d30e0 patch 8.0.1685: can't set ANSI colors of a terminal window
Christian Brabandt <cb@256bit.org>
parents: 13602
diff changeset
1369 call term_wait(buf)
ab89131d30e0 patch 8.0.1685: can't set ANSI colors of a terminal window
Christian Brabandt <cb@256bit.org>
parents: 13602
diff changeset
1370 exe buf . 'bwipe'
ab89131d30e0 patch 8.0.1685: can't set ANSI colors of a terminal window
Christian Brabandt <cb@256bit.org>
parents: 13602
diff changeset
1371 endfunc
13698
404b89cb1e2a patch 8.0.1721: no test for using the 'termsize' option
Christian Brabandt <cb@256bit.org>
parents: 13692
diff changeset
1372
13742
a34b1323286c patch 8.0.1743: terminal window options are named inconsistently
Christian Brabandt <cb@256bit.org>
parents: 13720
diff changeset
1373 func Test_terminal_termwinsize_option_fixed()
13698
404b89cb1e2a patch 8.0.1721: no test for using the 'termsize' option
Christian Brabandt <cb@256bit.org>
parents: 13692
diff changeset
1374 if !CanRunVimInTerminal()
404b89cb1e2a patch 8.0.1721: no test for using the 'termsize' option
Christian Brabandt <cb@256bit.org>
parents: 13692
diff changeset
1375 return
404b89cb1e2a patch 8.0.1721: no test for using the 'termsize' option
Christian Brabandt <cb@256bit.org>
parents: 13692
diff changeset
1376 endif
13742
a34b1323286c patch 8.0.1743: terminal window options are named inconsistently
Christian Brabandt <cb@256bit.org>
parents: 13720
diff changeset
1377 set termwinsize=6x40
13698
404b89cb1e2a patch 8.0.1721: no test for using the 'termsize' option
Christian Brabandt <cb@256bit.org>
parents: 13692
diff changeset
1378 let text = []
404b89cb1e2a patch 8.0.1721: no test for using the 'termsize' option
Christian Brabandt <cb@256bit.org>
parents: 13692
diff changeset
1379 for n in range(10)
404b89cb1e2a patch 8.0.1721: no test for using the 'termsize' option
Christian Brabandt <cb@256bit.org>
parents: 13692
diff changeset
1380 call add(text, repeat(n, 50))
404b89cb1e2a patch 8.0.1721: no test for using the 'termsize' option
Christian Brabandt <cb@256bit.org>
parents: 13692
diff changeset
1381 endfor
404b89cb1e2a patch 8.0.1721: no test for using the 'termsize' option
Christian Brabandt <cb@256bit.org>
parents: 13692
diff changeset
1382 call writefile(text, 'Xwinsize')
404b89cb1e2a patch 8.0.1721: no test for using the 'termsize' option
Christian Brabandt <cb@256bit.org>
parents: 13692
diff changeset
1383 let buf = RunVimInTerminal('Xwinsize', {})
404b89cb1e2a patch 8.0.1721: no test for using the 'termsize' option
Christian Brabandt <cb@256bit.org>
parents: 13692
diff changeset
1384 let win = bufwinid(buf)
404b89cb1e2a patch 8.0.1721: no test for using the 'termsize' option
Christian Brabandt <cb@256bit.org>
parents: 13692
diff changeset
1385 call assert_equal([6, 40], term_getsize(buf))
404b89cb1e2a patch 8.0.1721: no test for using the 'termsize' option
Christian Brabandt <cb@256bit.org>
parents: 13692
diff changeset
1386 call assert_equal(6, winheight(win))
404b89cb1e2a patch 8.0.1721: no test for using the 'termsize' option
Christian Brabandt <cb@256bit.org>
parents: 13692
diff changeset
1387 call assert_equal(40, winwidth(win))
404b89cb1e2a patch 8.0.1721: no test for using the 'termsize' option
Christian Brabandt <cb@256bit.org>
parents: 13692
diff changeset
1388
404b89cb1e2a patch 8.0.1721: no test for using the 'termsize' option
Christian Brabandt <cb@256bit.org>
parents: 13692
diff changeset
1389 " resizing the window doesn't resize the terminal.
404b89cb1e2a patch 8.0.1721: no test for using the 'termsize' option
Christian Brabandt <cb@256bit.org>
parents: 13692
diff changeset
1390 resize 10
404b89cb1e2a patch 8.0.1721: no test for using the 'termsize' option
Christian Brabandt <cb@256bit.org>
parents: 13692
diff changeset
1391 vertical resize 60
404b89cb1e2a patch 8.0.1721: no test for using the 'termsize' option
Christian Brabandt <cb@256bit.org>
parents: 13692
diff changeset
1392 call assert_equal([6, 40], term_getsize(buf))
404b89cb1e2a patch 8.0.1721: no test for using the 'termsize' option
Christian Brabandt <cb@256bit.org>
parents: 13692
diff changeset
1393 call assert_equal(10, winheight(win))
404b89cb1e2a patch 8.0.1721: no test for using the 'termsize' option
Christian Brabandt <cb@256bit.org>
parents: 13692
diff changeset
1394 call assert_equal(60, winwidth(win))
404b89cb1e2a patch 8.0.1721: no test for using the 'termsize' option
Christian Brabandt <cb@256bit.org>
parents: 13692
diff changeset
1395
404b89cb1e2a patch 8.0.1721: no test for using the 'termsize' option
Christian Brabandt <cb@256bit.org>
parents: 13692
diff changeset
1396 call StopVimInTerminal(buf)
404b89cb1e2a patch 8.0.1721: no test for using the 'termsize' option
Christian Brabandt <cb@256bit.org>
parents: 13692
diff changeset
1397 call delete('Xwinsize')
404b89cb1e2a patch 8.0.1721: no test for using the 'termsize' option
Christian Brabandt <cb@256bit.org>
parents: 13692
diff changeset
1398
13742
a34b1323286c patch 8.0.1743: terminal window options are named inconsistently
Christian Brabandt <cb@256bit.org>
parents: 13720
diff changeset
1399 call assert_fails('set termwinsize=40', 'E474')
a34b1323286c patch 8.0.1743: terminal window options are named inconsistently
Christian Brabandt <cb@256bit.org>
parents: 13720
diff changeset
1400 call assert_fails('set termwinsize=10+40', 'E474')
a34b1323286c patch 8.0.1743: terminal window options are named inconsistently
Christian Brabandt <cb@256bit.org>
parents: 13720
diff changeset
1401 call assert_fails('set termwinsize=abc', 'E474')
13698
404b89cb1e2a patch 8.0.1721: no test for using the 'termsize' option
Christian Brabandt <cb@256bit.org>
parents: 13692
diff changeset
1402
13742
a34b1323286c patch 8.0.1743: terminal window options are named inconsistently
Christian Brabandt <cb@256bit.org>
parents: 13720
diff changeset
1403 set termwinsize=
13698
404b89cb1e2a patch 8.0.1721: no test for using the 'termsize' option
Christian Brabandt <cb@256bit.org>
parents: 13692
diff changeset
1404 endfunc
13700
b28d679b1843 patch 8.0.1722: cannot specify a minimal size for a terminal window
Christian Brabandt <cb@256bit.org>
parents: 13698
diff changeset
1405
13742
a34b1323286c patch 8.0.1743: terminal window options are named inconsistently
Christian Brabandt <cb@256bit.org>
parents: 13720
diff changeset
1406 func Test_terminal_termwinsize_option_zero()
a34b1323286c patch 8.0.1743: terminal window options are named inconsistently
Christian Brabandt <cb@256bit.org>
parents: 13720
diff changeset
1407 set termwinsize=0x0
13700
b28d679b1843 patch 8.0.1722: cannot specify a minimal size for a terminal window
Christian Brabandt <cb@256bit.org>
parents: 13698
diff changeset
1408 let buf = Run_shell_in_terminal({})
b28d679b1843 patch 8.0.1722: cannot specify a minimal size for a terminal window
Christian Brabandt <cb@256bit.org>
parents: 13698
diff changeset
1409 let win = bufwinid(buf)
b28d679b1843 patch 8.0.1722: cannot specify a minimal size for a terminal window
Christian Brabandt <cb@256bit.org>
parents: 13698
diff changeset
1410 call assert_equal([winheight(win), winwidth(win)], term_getsize(buf))
b28d679b1843 patch 8.0.1722: cannot specify a minimal size for a terminal window
Christian Brabandt <cb@256bit.org>
parents: 13698
diff changeset
1411 call Stop_shell_in_terminal(buf)
b28d679b1843 patch 8.0.1722: cannot specify a minimal size for a terminal window
Christian Brabandt <cb@256bit.org>
parents: 13698
diff changeset
1412 call term_wait(buf)
b28d679b1843 patch 8.0.1722: cannot specify a minimal size for a terminal window
Christian Brabandt <cb@256bit.org>
parents: 13698
diff changeset
1413 exe buf . 'bwipe'
b28d679b1843 patch 8.0.1722: cannot specify a minimal size for a terminal window
Christian Brabandt <cb@256bit.org>
parents: 13698
diff changeset
1414
13742
a34b1323286c patch 8.0.1743: terminal window options are named inconsistently
Christian Brabandt <cb@256bit.org>
parents: 13720
diff changeset
1415 set termwinsize=7x0
13700
b28d679b1843 patch 8.0.1722: cannot specify a minimal size for a terminal window
Christian Brabandt <cb@256bit.org>
parents: 13698
diff changeset
1416 let buf = Run_shell_in_terminal({})
b28d679b1843 patch 8.0.1722: cannot specify a minimal size for a terminal window
Christian Brabandt <cb@256bit.org>
parents: 13698
diff changeset
1417 let win = bufwinid(buf)
b28d679b1843 patch 8.0.1722: cannot specify a minimal size for a terminal window
Christian Brabandt <cb@256bit.org>
parents: 13698
diff changeset
1418 call assert_equal([7, winwidth(win)], term_getsize(buf))
b28d679b1843 patch 8.0.1722: cannot specify a minimal size for a terminal window
Christian Brabandt <cb@256bit.org>
parents: 13698
diff changeset
1419 call Stop_shell_in_terminal(buf)
b28d679b1843 patch 8.0.1722: cannot specify a minimal size for a terminal window
Christian Brabandt <cb@256bit.org>
parents: 13698
diff changeset
1420 call term_wait(buf)
b28d679b1843 patch 8.0.1722: cannot specify a minimal size for a terminal window
Christian Brabandt <cb@256bit.org>
parents: 13698
diff changeset
1421 exe buf . 'bwipe'
b28d679b1843 patch 8.0.1722: cannot specify a minimal size for a terminal window
Christian Brabandt <cb@256bit.org>
parents: 13698
diff changeset
1422
13742
a34b1323286c patch 8.0.1743: terminal window options are named inconsistently
Christian Brabandt <cb@256bit.org>
parents: 13720
diff changeset
1423 set termwinsize=0x33
13700
b28d679b1843 patch 8.0.1722: cannot specify a minimal size for a terminal window
Christian Brabandt <cb@256bit.org>
parents: 13698
diff changeset
1424 let buf = Run_shell_in_terminal({})
b28d679b1843 patch 8.0.1722: cannot specify a minimal size for a terminal window
Christian Brabandt <cb@256bit.org>
parents: 13698
diff changeset
1425 let win = bufwinid(buf)
b28d679b1843 patch 8.0.1722: cannot specify a minimal size for a terminal window
Christian Brabandt <cb@256bit.org>
parents: 13698
diff changeset
1426 call assert_equal([winheight(win), 33], term_getsize(buf))
b28d679b1843 patch 8.0.1722: cannot specify a minimal size for a terminal window
Christian Brabandt <cb@256bit.org>
parents: 13698
diff changeset
1427 call Stop_shell_in_terminal(buf)
b28d679b1843 patch 8.0.1722: cannot specify a minimal size for a terminal window
Christian Brabandt <cb@256bit.org>
parents: 13698
diff changeset
1428 call term_wait(buf)
b28d679b1843 patch 8.0.1722: cannot specify a minimal size for a terminal window
Christian Brabandt <cb@256bit.org>
parents: 13698
diff changeset
1429 exe buf . 'bwipe'
b28d679b1843 patch 8.0.1722: cannot specify a minimal size for a terminal window
Christian Brabandt <cb@256bit.org>
parents: 13698
diff changeset
1430
13742
a34b1323286c patch 8.0.1743: terminal window options are named inconsistently
Christian Brabandt <cb@256bit.org>
parents: 13720
diff changeset
1431 set termwinsize=
13700
b28d679b1843 patch 8.0.1722: cannot specify a minimal size for a terminal window
Christian Brabandt <cb@256bit.org>
parents: 13698
diff changeset
1432 endfunc
b28d679b1843 patch 8.0.1722: cannot specify a minimal size for a terminal window
Christian Brabandt <cb@256bit.org>
parents: 13698
diff changeset
1433
13742
a34b1323286c patch 8.0.1743: terminal window options are named inconsistently
Christian Brabandt <cb@256bit.org>
parents: 13720
diff changeset
1434 func Test_terminal_termwinsize_mininmum()
a34b1323286c patch 8.0.1743: terminal window options are named inconsistently
Christian Brabandt <cb@256bit.org>
parents: 13720
diff changeset
1435 set termwinsize=10*50
13700
b28d679b1843 patch 8.0.1722: cannot specify a minimal size for a terminal window
Christian Brabandt <cb@256bit.org>
parents: 13698
diff changeset
1436 vsplit
b28d679b1843 patch 8.0.1722: cannot specify a minimal size for a terminal window
Christian Brabandt <cb@256bit.org>
parents: 13698
diff changeset
1437 let buf = Run_shell_in_terminal({})
b28d679b1843 patch 8.0.1722: cannot specify a minimal size for a terminal window
Christian Brabandt <cb@256bit.org>
parents: 13698
diff changeset
1438 let win = bufwinid(buf)
b28d679b1843 patch 8.0.1722: cannot specify a minimal size for a terminal window
Christian Brabandt <cb@256bit.org>
parents: 13698
diff changeset
1439 call assert_inrange(10, 1000, winheight(win))
b28d679b1843 patch 8.0.1722: cannot specify a minimal size for a terminal window
Christian Brabandt <cb@256bit.org>
parents: 13698
diff changeset
1440 call assert_inrange(50, 1000, winwidth(win))
b28d679b1843 patch 8.0.1722: cannot specify a minimal size for a terminal window
Christian Brabandt <cb@256bit.org>
parents: 13698
diff changeset
1441 call assert_equal([winheight(win), winwidth(win)], term_getsize(buf))
b28d679b1843 patch 8.0.1722: cannot specify a minimal size for a terminal window
Christian Brabandt <cb@256bit.org>
parents: 13698
diff changeset
1442
b28d679b1843 patch 8.0.1722: cannot specify a minimal size for a terminal window
Christian Brabandt <cb@256bit.org>
parents: 13698
diff changeset
1443 resize 15
b28d679b1843 patch 8.0.1722: cannot specify a minimal size for a terminal window
Christian Brabandt <cb@256bit.org>
parents: 13698
diff changeset
1444 vertical resize 60
b28d679b1843 patch 8.0.1722: cannot specify a minimal size for a terminal window
Christian Brabandt <cb@256bit.org>
parents: 13698
diff changeset
1445 redraw
b28d679b1843 patch 8.0.1722: cannot specify a minimal size for a terminal window
Christian Brabandt <cb@256bit.org>
parents: 13698
diff changeset
1446 call assert_equal([15, 60], term_getsize(buf))
b28d679b1843 patch 8.0.1722: cannot specify a minimal size for a terminal window
Christian Brabandt <cb@256bit.org>
parents: 13698
diff changeset
1447 call assert_equal(15, winheight(win))
b28d679b1843 patch 8.0.1722: cannot specify a minimal size for a terminal window
Christian Brabandt <cb@256bit.org>
parents: 13698
diff changeset
1448 call assert_equal(60, winwidth(win))
b28d679b1843 patch 8.0.1722: cannot specify a minimal size for a terminal window
Christian Brabandt <cb@256bit.org>
parents: 13698
diff changeset
1449
b28d679b1843 patch 8.0.1722: cannot specify a minimal size for a terminal window
Christian Brabandt <cb@256bit.org>
parents: 13698
diff changeset
1450 resize 7
b28d679b1843 patch 8.0.1722: cannot specify a minimal size for a terminal window
Christian Brabandt <cb@256bit.org>
parents: 13698
diff changeset
1451 vertical resize 30
b28d679b1843 patch 8.0.1722: cannot specify a minimal size for a terminal window
Christian Brabandt <cb@256bit.org>
parents: 13698
diff changeset
1452 redraw
b28d679b1843 patch 8.0.1722: cannot specify a minimal size for a terminal window
Christian Brabandt <cb@256bit.org>
parents: 13698
diff changeset
1453 call assert_equal([10, 50], term_getsize(buf))
b28d679b1843 patch 8.0.1722: cannot specify a minimal size for a terminal window
Christian Brabandt <cb@256bit.org>
parents: 13698
diff changeset
1454 call assert_equal(7, winheight(win))
b28d679b1843 patch 8.0.1722: cannot specify a minimal size for a terminal window
Christian Brabandt <cb@256bit.org>
parents: 13698
diff changeset
1455 call assert_equal(30, winwidth(win))
b28d679b1843 patch 8.0.1722: cannot specify a minimal size for a terminal window
Christian Brabandt <cb@256bit.org>
parents: 13698
diff changeset
1456
b28d679b1843 patch 8.0.1722: cannot specify a minimal size for a terminal window
Christian Brabandt <cb@256bit.org>
parents: 13698
diff changeset
1457 call Stop_shell_in_terminal(buf)
b28d679b1843 patch 8.0.1722: cannot specify a minimal size for a terminal window
Christian Brabandt <cb@256bit.org>
parents: 13698
diff changeset
1458 call term_wait(buf)
b28d679b1843 patch 8.0.1722: cannot specify a minimal size for a terminal window
Christian Brabandt <cb@256bit.org>
parents: 13698
diff changeset
1459 exe buf . 'bwipe'
b28d679b1843 patch 8.0.1722: cannot specify a minimal size for a terminal window
Christian Brabandt <cb@256bit.org>
parents: 13698
diff changeset
1460
13742
a34b1323286c patch 8.0.1743: terminal window options are named inconsistently
Christian Brabandt <cb@256bit.org>
parents: 13720
diff changeset
1461 set termwinsize=0*0
13700
b28d679b1843 patch 8.0.1722: cannot specify a minimal size for a terminal window
Christian Brabandt <cb@256bit.org>
parents: 13698
diff changeset
1462 let buf = Run_shell_in_terminal({})
b28d679b1843 patch 8.0.1722: cannot specify a minimal size for a terminal window
Christian Brabandt <cb@256bit.org>
parents: 13698
diff changeset
1463 let win = bufwinid(buf)
b28d679b1843 patch 8.0.1722: cannot specify a minimal size for a terminal window
Christian Brabandt <cb@256bit.org>
parents: 13698
diff changeset
1464 call assert_equal([winheight(win), winwidth(win)], term_getsize(buf))
b28d679b1843 patch 8.0.1722: cannot specify a minimal size for a terminal window
Christian Brabandt <cb@256bit.org>
parents: 13698
diff changeset
1465 call Stop_shell_in_terminal(buf)
b28d679b1843 patch 8.0.1722: cannot specify a minimal size for a terminal window
Christian Brabandt <cb@256bit.org>
parents: 13698
diff changeset
1466 call term_wait(buf)
b28d679b1843 patch 8.0.1722: cannot specify a minimal size for a terminal window
Christian Brabandt <cb@256bit.org>
parents: 13698
diff changeset
1467 exe buf . 'bwipe'
b28d679b1843 patch 8.0.1722: cannot specify a minimal size for a terminal window
Christian Brabandt <cb@256bit.org>
parents: 13698
diff changeset
1468
13742
a34b1323286c patch 8.0.1743: terminal window options are named inconsistently
Christian Brabandt <cb@256bit.org>
parents: 13720
diff changeset
1469 set termwinsize=
13700
b28d679b1843 patch 8.0.1722: cannot specify a minimal size for a terminal window
Christian Brabandt <cb@256bit.org>
parents: 13698
diff changeset
1470 endfunc
13829
044337cbf854 patch 8.0.1786: no test for 'termwinkey'
Christian Brabandt <cb@256bit.org>
parents: 13816
diff changeset
1471
044337cbf854 patch 8.0.1786: no test for 'termwinkey'
Christian Brabandt <cb@256bit.org>
parents: 13816
diff changeset
1472 func Test_terminal_termwinkey()
044337cbf854 patch 8.0.1786: no test for 'termwinkey'
Christian Brabandt <cb@256bit.org>
parents: 13816
diff changeset
1473 call assert_equal(1, winnr('$'))
044337cbf854 patch 8.0.1786: no test for 'termwinkey'
Christian Brabandt <cb@256bit.org>
parents: 13816
diff changeset
1474 let thiswin = win_getid()
044337cbf854 patch 8.0.1786: no test for 'termwinkey'
Christian Brabandt <cb@256bit.org>
parents: 13816
diff changeset
1475
044337cbf854 patch 8.0.1786: no test for 'termwinkey'
Christian Brabandt <cb@256bit.org>
parents: 13816
diff changeset
1476 let buf = Run_shell_in_terminal({})
044337cbf854 patch 8.0.1786: no test for 'termwinkey'
Christian Brabandt <cb@256bit.org>
parents: 13816
diff changeset
1477 let termwin = bufwinid(buf)
044337cbf854 patch 8.0.1786: no test for 'termwinkey'
Christian Brabandt <cb@256bit.org>
parents: 13816
diff changeset
1478 set termwinkey=<C-L>
044337cbf854 patch 8.0.1786: no test for 'termwinkey'
Christian Brabandt <cb@256bit.org>
parents: 13816
diff changeset
1479 call feedkeys("\<C-L>w", 'tx')
044337cbf854 patch 8.0.1786: no test for 'termwinkey'
Christian Brabandt <cb@256bit.org>
parents: 13816
diff changeset
1480 call assert_equal(thiswin, win_getid())
044337cbf854 patch 8.0.1786: no test for 'termwinkey'
Christian Brabandt <cb@256bit.org>
parents: 13816
diff changeset
1481 call feedkeys("\<C-W>w", 'tx')
044337cbf854 patch 8.0.1786: no test for 'termwinkey'
Christian Brabandt <cb@256bit.org>
parents: 13816
diff changeset
1482
044337cbf854 patch 8.0.1786: no test for 'termwinkey'
Christian Brabandt <cb@256bit.org>
parents: 13816
diff changeset
1483 let job = term_getjob(buf)
044337cbf854 patch 8.0.1786: no test for 'termwinkey'
Christian Brabandt <cb@256bit.org>
parents: 13816
diff changeset
1484 call feedkeys("\<C-L>\<C-C>", 'tx')
044337cbf854 patch 8.0.1786: no test for 'termwinkey'
Christian Brabandt <cb@256bit.org>
parents: 13816
diff changeset
1485 call WaitForAssert({-> assert_equal("dead", job_status(job))})
044337cbf854 patch 8.0.1786: no test for 'termwinkey'
Christian Brabandt <cb@256bit.org>
parents: 13816
diff changeset
1486 endfunc