annotate src/testdir/test_terminal.vim @ 13440:22439cdda382 v8.0.1594

patch 8.0.1594: :conform qall not tested with active terminal window commit https://github.com/vim/vim/commit/435acdb88c849c6bac44ef30f24f29618b36af50 Author: Bram Moolenaar <Bram@vim.org> Date: Sat Mar 10 20:51:25 2018 +0100 patch 8.0.1594: :conform qall not tested with active terminal window Problem: :conform qall not tested with active terminal window. Solution: Add a test.
author Christian Brabandt <cb@256bit.org>
date Sat, 10 Mar 2018 21:00:07 +0100
parents 33eea5ce5415
children 9f06f7aca74c
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()
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
35 au BufWinEnter * if &buftype == 'terminal' | let b:done = 'yes' | endif
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'))
6afc7339c2ad patch 8.0.0936: mode() returns wrong value for a terminal window
Christian Brabandt <cb@256bit.org>
parents: 12106
diff changeset
48
11917
00836eb177cb patch 8.0.0838: buffer hangs around whem terminal window is closed
Christian Brabandt <cb@256bit.org>
parents: 11912
diff changeset
49 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
50 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
51 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
52 call assert_match('%aF[^\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
53
11917
00836eb177cb patch 8.0.0838: buffer hangs around whem terminal window is closed
Christian Brabandt <cb@256bit.org>
parents: 11912
diff changeset
54 " 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
55 close
00836eb177cb patch 8.0.0838: buffer hangs around whem terminal window is closed
Christian Brabandt <cb@256bit.org>
parents: 11912
diff changeset
56 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
57
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
58 au! BufWinEnter
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 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
60 endfunc
22658e33203f patch 8.0.0836: can abandon a terminal buffer after making a change
Christian Brabandt <cb@256bit.org>
parents: 11906
diff changeset
61
22658e33203f patch 8.0.0836: can abandon a terminal buffer after making a change
Christian Brabandt <cb@256bit.org>
parents: 11906
diff changeset
62 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
63 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
64 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
65 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
66
22658e33203f patch 8.0.0836: can abandon a terminal buffer after making a change
Christian Brabandt <cb@256bit.org>
parents: 11906
diff changeset
67 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
68 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
69 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
70 undo
22658e33203f patch 8.0.0836: can abandon a terminal buffer after making a change
Christian Brabandt <cb@256bit.org>
parents: 11906
diff changeset
71
11846
1c65cad8b967 patch 8.0.0804: terminal window functions not yet implemented
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
72 exe buf . 'bwipe'
1c65cad8b967 patch 8.0.0804: terminal window functions not yet implemented
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
73 unlet g:job
1c65cad8b967 patch 8.0.0804: terminal window functions not yet implemented
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
74 endfunc
1c65cad8b967 patch 8.0.0804: terminal window functions not yet implemented
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
75
11917
00836eb177cb patch 8.0.0838: buffer hangs around whem terminal window is closed
Christian Brabandt <cb@256bit.org>
parents: 11912
diff changeset
76 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
77 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
78 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
79 exe buf . 'bwipe!'
11917
00836eb177cb patch 8.0.0838: buffer hangs around whem terminal window is closed
Christian Brabandt <cb@256bit.org>
parents: 11912
diff changeset
80 call WaitFor('job_status(g:job) == "dead"')
00836eb177cb patch 8.0.0838: buffer hangs around whem terminal window is closed
Christian Brabandt <cb@256bit.org>
parents: 11912
diff changeset
81 call assert_equal('dead', job_status(g:job))
00836eb177cb patch 8.0.0838: buffer hangs around whem terminal window is closed
Christian Brabandt <cb@256bit.org>
parents: 11912
diff changeset
82 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
83
00836eb177cb patch 8.0.0838: buffer hangs around whem terminal window is closed
Christian Brabandt <cb@256bit.org>
parents: 11912
diff changeset
84 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
85 endfunc
00836eb177cb patch 8.0.0838: buffer hangs around whem terminal window is closed
Christian Brabandt <cb@256bit.org>
parents: 11912
diff changeset
86
12479
65c7769ef6d1 patch 8.0.1119: quitting a split terminal window kills the job
Christian Brabandt <cb@256bit.org>
parents: 12475
diff changeset
87 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
88 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
89 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
90 split
65c7769ef6d1 patch 8.0.1119: quitting a split terminal window kills the job
Christian Brabandt <cb@256bit.org>
parents: 12475
diff changeset
91 quit!
65c7769ef6d1 patch 8.0.1119: quitting a split terminal window kills the job
Christian Brabandt <cb@256bit.org>
parents: 12475
diff changeset
92 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
93 sleep 50m
65c7769ef6d1 patch 8.0.1119: quitting a split terminal window kills the job
Christian Brabandt <cb@256bit.org>
parents: 12475
diff changeset
94 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
95
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 WaitFor('job_status(g:job) == "dead"')
65c7769ef6d1 patch 8.0.1119: quitting a split terminal window kills the job
Christian Brabandt <cb@256bit.org>
parents: 12475
diff changeset
98 call assert_equal('dead', 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
99
65c7769ef6d1 patch 8.0.1119: quitting a split terminal window kills the job
Christian Brabandt <cb@256bit.org>
parents: 12475
diff changeset
100 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
101 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
102 endfunc
65c7769ef6d1 patch 8.0.1119: quitting a split terminal window kills the job
Christian Brabandt <cb@256bit.org>
parents: 12475
diff changeset
103
11917
00836eb177cb patch 8.0.0838: buffer hangs around whem terminal window is closed
Christian Brabandt <cb@256bit.org>
parents: 11912
diff changeset
104 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
105 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
106 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
107 quit
00836eb177cb patch 8.0.0838: buffer hangs around whem terminal window is closed
Christian Brabandt <cb@256bit.org>
parents: 11912
diff changeset
108 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
109 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
110 endfor
00836eb177cb patch 8.0.0838: buffer hangs around whem terminal window is closed
Christian Brabandt <cb@256bit.org>
parents: 11912
diff changeset
111 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
112 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
113
00836eb177cb patch 8.0.0838: buffer hangs around whem terminal window is closed
Christian Brabandt <cb@256bit.org>
parents: 11912
diff changeset
114 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
115 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
116 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
117
00836eb177cb patch 8.0.0838: buffer hangs around whem terminal window is closed
Christian Brabandt <cb@256bit.org>
parents: 11912
diff changeset
118 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
119 endfunc
00836eb177cb patch 8.0.0838: buffer hangs around whem terminal window is closed
Christian Brabandt <cb@256bit.org>
parents: 11912
diff changeset
120
11939
ef1febf04d03 patch 8.0.0849: crash when job exit callback wipes the terminal
Christian Brabandt <cb@256bit.org>
parents: 11933
diff changeset
121 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
122 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
123 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
124 endfunc
ef1febf04d03 patch 8.0.0849: crash when job exit callback wipes the terminal
Christian Brabandt <cb@256bit.org>
parents: 11933
diff changeset
125
12405
6ef5e636f246 patch 8.0.1082: tests fail when run under valgrind
Christian Brabandt <cb@256bit.org>
parents: 12389
diff changeset
126 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
127 if has('win32')
6ef5e636f246 patch 8.0.1082: tests fail when run under valgrind
Christian Brabandt <cb@256bit.org>
parents: 12389
diff changeset
128 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
129 else
6ef5e636f246 patch 8.0.1082: tests fail when run under valgrind
Christian Brabandt <cb@256bit.org>
parents: 12389
diff changeset
130 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
131 return "cat Xtext"
6ef5e636f246 patch 8.0.1082: tests fail when run under valgrind
Christian Brabandt <cb@256bit.org>
parents: 12389
diff changeset
132 endif
6ef5e636f246 patch 8.0.1082: tests fail when run under valgrind
Christian Brabandt <cb@256bit.org>
parents: 12389
diff changeset
133 endfunc
6ef5e636f246 patch 8.0.1082: tests fail when run under valgrind
Christian Brabandt <cb@256bit.org>
parents: 12389
diff changeset
134
11939
ef1febf04d03 patch 8.0.0849: crash when job exit callback wipes the terminal
Christian Brabandt <cb@256bit.org>
parents: 11933
diff changeset
135 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
136 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
137 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
138 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
139
ef1febf04d03 patch 8.0.0849: crash when job exit callback wipes the terminal
Christian Brabandt <cb@256bit.org>
parents: 11933
diff changeset
140 call WaitFor('job_status(g:job) == "dead"')
ef1febf04d03 patch 8.0.0849: crash when job exit callback wipes the terminal
Christian Brabandt <cb@256bit.org>
parents: 11933
diff changeset
141 call WaitFor('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
142 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
143 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
144 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
145 endfunc
ef1febf04d03 patch 8.0.0849: crash when job exit callback wipes the terminal
Christian Brabandt <cb@256bit.org>
parents: 11933
diff changeset
146
11846
1c65cad8b967 patch 8.0.0804: terminal window functions not yet implemented
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
147 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
148 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
149 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
150 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
151 call assert_true(len(l) == 0)
11906
7df4afab67c7 patch 8.0.0833: terminal test fails
Christian Brabandt <cb@256bit.org>
parents: 11872
diff changeset
152 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
153 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
154 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
155 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
156 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
157 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
158 if &background == 'light'
1c65cad8b967 patch 8.0.0804: terminal window functions not yet implemented
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
159 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
160 else
1c65cad8b967 patch 8.0.0804: terminal window functions not yet implemented
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
161 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
162 endif
1c65cad8b967 patch 8.0.0804: terminal window functions not yet implemented
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
163
11923
c9da7b42fdf5 patch 8.0.0841: term_getline() may cause a crash
Christian Brabandt <cb@256bit.org>
parents: 11917
diff changeset
164 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
165 call assert_equal('', l)
c9da7b42fdf5 patch 8.0.0841: term_getline() may cause a crash
Christian Brabandt <cb@256bit.org>
parents: 11917
diff changeset
166 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
167 call assert_equal('', l)
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, 999)
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)
11906
7df4afab67c7 patch 8.0.0833: terminal test fails
Christian Brabandt <cb@256bit.org>
parents: 11872
diff changeset
170 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
171 call assert_equal('123', l)
1c65cad8b967 patch 8.0.0804: terminal window functions not yet implemented
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
172 endfunc
1c65cad8b967 patch 8.0.0804: terminal window functions not yet implemented
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
173
12009
0d9bfdb3f6f7 patch 8.0.0885: terminal window scrollback is stored inefficiently
Christian Brabandt <cb@256bit.org>
parents: 11975
diff changeset
174 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
175 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
176 let buf = term_start(cmd)
1c65cad8b967 patch 8.0.0804: terminal window functions not yet implemented
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
177
1c65cad8b967 patch 8.0.0804: terminal window functions not yet implemented
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
178 let termlist = term_list()
1c65cad8b967 patch 8.0.0804: terminal window functions not yet implemented
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
179 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
180 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
181
11872
ff8122091ec6 patch 8.0.0816: crash when using invalid buffer number
Christian Brabandt <cb@256bit.org>
parents: 11846
diff changeset
182 " 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
183 call term_wait(1234)
ff8122091ec6 patch 8.0.0816: crash when using invalid buffer number
Christian Brabandt <cb@256bit.org>
parents: 11846
diff changeset
184
11846
1c65cad8b967 patch 8.0.0804: terminal window functions not yet implemented
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
185 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
186 " 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
187 " "cls" to happen, after that we have one line with three characters.
12765
c1347c968d31 patch 8.0.1260: using global variables for WaitFor()
Christian Brabandt <cb@256bit.org>
parents: 12734
diff changeset
188 call WaitFor({-> len(term_scrape(buf, 1)) == 3})
11846
1c65cad8b967 patch 8.0.0804: terminal window functions not yet implemented
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
189 call Check_123(buf)
1c65cad8b967 patch 8.0.0804: terminal window functions not yet implemented
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
190
1c65cad8b967 patch 8.0.0804: terminal window functions not yet implemented
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
191 " 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
192 let job = term_getjob(buf)
c1347c968d31 patch 8.0.1260: using global variables for WaitFor()
Christian Brabandt <cb@256bit.org>
parents: 12734
diff changeset
193 call WaitFor({-> job_status(job) == "dead"})
11846
1c65cad8b967 patch 8.0.0804: terminal window functions not yet implemented
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
194 call term_wait(buf)
1c65cad8b967 patch 8.0.0804: terminal window functions not yet implemented
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
195 call Check_123(buf)
1c65cad8b967 patch 8.0.0804: terminal window functions not yet implemented
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
196
1c65cad8b967 patch 8.0.0804: terminal window functions not yet implemented
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
197 exe buf . 'bwipe'
11872
ff8122091ec6 patch 8.0.0816: crash when using invalid buffer number
Christian Brabandt <cb@256bit.org>
parents: 11846
diff changeset
198 call delete('Xtext')
11846
1c65cad8b967 patch 8.0.0804: terminal window functions not yet implemented
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
199 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
200
12009
0d9bfdb3f6f7 patch 8.0.0885: terminal window scrollback is stored inefficiently
Christian Brabandt <cb@256bit.org>
parents: 11975
diff changeset
201 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
202 if !has('multi_byte')
0d9bfdb3f6f7 patch 8.0.0885: terminal window scrollback is stored inefficiently
Christian Brabandt <cb@256bit.org>
parents: 11975
diff changeset
203 return
0d9bfdb3f6f7 patch 8.0.0885: terminal window scrollback is stored inefficiently
Christian Brabandt <cb@256bit.org>
parents: 11975
diff changeset
204 endif
0d9bfdb3f6f7 patch 8.0.0885: terminal window scrollback is stored inefficiently
Christian Brabandt <cb@256bit.org>
parents: 11975
diff changeset
205 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
206 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
207 " 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
208 " multibyte characters.
12765
c1347c968d31 patch 8.0.1260: using global variables for WaitFor()
Christian Brabandt <cb@256bit.org>
parents: 12734
diff changeset
209 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
210 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
211 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
212 let line = 4
12009
0d9bfdb3f6f7 patch 8.0.0885: terminal window scrollback is stored inefficiently
Christian Brabandt <cb@256bit.org>
parents: 11975
diff changeset
213 else
12765
c1347c968d31 patch 8.0.1260: using global variables for WaitFor()
Christian Brabandt <cb@256bit.org>
parents: 12734
diff changeset
214 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
215 let line = 1
12009
0d9bfdb3f6f7 patch 8.0.0885: terminal window scrollback is stored inefficiently
Christian Brabandt <cb@256bit.org>
parents: 11975
diff changeset
216 endif
0d9bfdb3f6f7 patch 8.0.0885: terminal window scrollback is stored inefficiently
Christian Brabandt <cb@256bit.org>
parents: 11975
diff changeset
217
12765
c1347c968d31 patch 8.0.1260: using global variables for WaitFor()
Christian Brabandt <cb@256bit.org>
parents: 12734
diff changeset
218 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
219 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
220 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
221 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
222 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
223 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
224 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
225 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
226 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
227 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
228 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
229 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
230
12765
c1347c968d31 patch 8.0.1260: using global variables for WaitFor()
Christian Brabandt <cb@256bit.org>
parents: 12734
diff changeset
231 let job = term_getjob(buf)
c1347c968d31 patch 8.0.1260: using global variables for WaitFor()
Christian Brabandt <cb@256bit.org>
parents: 12734
diff changeset
232 call WaitFor({-> job_status(job) == "dead"})
c1347c968d31 patch 8.0.1260: using global variables for WaitFor()
Christian Brabandt <cb@256bit.org>
parents: 12734
diff changeset
233 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
234
12765
c1347c968d31 patch 8.0.1260: using global variables for WaitFor()
Christian Brabandt <cb@256bit.org>
parents: 12734
diff changeset
235 exe buf . 'bwipe'
12009
0d9bfdb3f6f7 patch 8.0.0885: terminal window scrollback is stored inefficiently
Christian Brabandt <cb@256bit.org>
parents: 11975
diff changeset
236 call delete('Xtext')
0d9bfdb3f6f7 patch 8.0.0885: terminal window scrollback is stored inefficiently
Christian Brabandt <cb@256bit.org>
parents: 11975
diff changeset
237 endfunc
0d9bfdb3f6f7 patch 8.0.0885: terminal window scrollback is stored inefficiently
Christian Brabandt <cb@256bit.org>
parents: 11975
diff changeset
238
12011
1f4e7361ce89 patch 8.0.0886: crash when using ":term ls"
Christian Brabandt <cb@256bit.org>
parents: 12009
diff changeset
239 func Test_terminal_scroll()
1f4e7361ce89 patch 8.0.0886: crash when using ":term ls"
Christian Brabandt <cb@256bit.org>
parents: 12009
diff changeset
240 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
241 if has('win32')
1f4e7361ce89 patch 8.0.0886: crash when using ":term ls"
Christian Brabandt <cb@256bit.org>
parents: 12009
diff changeset
242 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
243 else
1f4e7361ce89 patch 8.0.0886: crash when using ":term ls"
Christian Brabandt <cb@256bit.org>
parents: 12009
diff changeset
244 let cmd = "cat Xtext"
1f4e7361ce89 patch 8.0.0886: crash when using ":term ls"
Christian Brabandt <cb@256bit.org>
parents: 12009
diff changeset
245 endif
1f4e7361ce89 patch 8.0.0886: crash when using ":term ls"
Christian Brabandt <cb@256bit.org>
parents: 12009
diff changeset
246 let buf = term_start(cmd)
1f4e7361ce89 patch 8.0.0886: crash when using ":term ls"
Christian Brabandt <cb@256bit.org>
parents: 12009
diff changeset
247
12765
c1347c968d31 patch 8.0.1260: using global variables for WaitFor()
Christian Brabandt <cb@256bit.org>
parents: 12734
diff changeset
248 let job = term_getjob(buf)
c1347c968d31 patch 8.0.1260: using global variables for WaitFor()
Christian Brabandt <cb@256bit.org>
parents: 12734
diff changeset
249 call WaitFor({-> job_status(job) == "dead"})
12011
1f4e7361ce89 patch 8.0.0886: crash when using ":term ls"
Christian Brabandt <cb@256bit.org>
parents: 12009
diff changeset
250 call term_wait(buf)
1f4e7361ce89 patch 8.0.0886: crash when using ":term ls"
Christian Brabandt <cb@256bit.org>
parents: 12009
diff changeset
251 if has('win32')
1f4e7361ce89 patch 8.0.0886: crash when using ":term ls"
Christian Brabandt <cb@256bit.org>
parents: 12009
diff changeset
252 " 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
253 sleep 100m
1f4e7361ce89 patch 8.0.0886: crash when using ":term ls"
Christian Brabandt <cb@256bit.org>
parents: 12009
diff changeset
254 endif
1f4e7361ce89 patch 8.0.0886: crash when using ":term ls"
Christian Brabandt <cb@256bit.org>
parents: 12009
diff changeset
255
12025
c0ee48f48a2b patch 8.0.0893: cannot get the scroll count of a terminal window
Christian Brabandt <cb@256bit.org>
parents: 12011
diff changeset
256 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
257 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
258 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
259 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
260 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
261 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
262 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
263
1f4e7361ce89 patch 8.0.0886: crash when using ":term ls"
Christian Brabandt <cb@256bit.org>
parents: 12009
diff changeset
264 exe buf . 'bwipe'
1f4e7361ce89 patch 8.0.0886: crash when using ":term ls"
Christian Brabandt <cb@256bit.org>
parents: 12009
diff changeset
265 call delete('Xtext')
1f4e7361ce89 patch 8.0.0886: crash when using ":term ls"
Christian Brabandt <cb@256bit.org>
parents: 12009
diff changeset
266 endfunc
1f4e7361ce89 patch 8.0.0886: crash when using ":term ls"
Christian Brabandt <cb@256bit.org>
parents: 12009
diff changeset
267
11975
5cc005cf312f patch 8.0.0868: cannot specify the terminal size on the command line
Christian Brabandt <cb@256bit.org>
parents: 11973
diff changeset
268 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
269 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
270
12192
6947d5bcf57f patch 8.0.0976: cannot send lines to a terminal job
Christian Brabandt <cb@256bit.org>
parents: 12166
diff changeset
271 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
272 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
273 bwipe!
5cc005cf312f patch 8.0.0868: cannot specify the terminal size on the command line
Christian Brabandt <cb@256bit.org>
parents: 11973
diff changeset
274 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
275
12056
0498547dace0 patch 8.0.0908: cannot set terminal size with options
Christian Brabandt <cb@256bit.org>
parents: 12046
diff changeset
276 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
277 let size = term_getsize('')
0498547dace0 patch 8.0.0908: cannot set terminal size with options
Christian Brabandt <cb@256bit.org>
parents: 12046
diff changeset
278 bwipe!
0498547dace0 patch 8.0.0908: cannot set terminal size with options
Christian Brabandt <cb@256bit.org>
parents: 12046
diff changeset
279 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
280
11975
5cc005cf312f patch 8.0.0868: cannot specify the terminal size on the command line
Christian Brabandt <cb@256bit.org>
parents: 11973
diff changeset
281 vsplit
12192
6947d5bcf57f patch 8.0.0976: cannot send lines to a terminal job
Christian Brabandt <cb@256bit.org>
parents: 12166
diff changeset
282 exe 'terminal ++rows=5 ++cols=33 ' . 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
283 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
284 bwipe!
5cc005cf312f patch 8.0.0868: cannot specify the terminal size on the command line
Christian Brabandt <cb@256bit.org>
parents: 11973
diff changeset
285 call assert_equal([5, 33], size)
5cc005cf312f patch 8.0.0868: cannot specify the terminal size on the command line
Christian Brabandt <cb@256bit.org>
parents: 11973
diff changeset
286
12056
0498547dace0 patch 8.0.0908: cannot set terminal size with options
Christian Brabandt <cb@256bit.org>
parents: 12046
diff changeset
287 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
288 let size = term_getsize('')
0498547dace0 patch 8.0.0908: cannot set terminal size with options
Christian Brabandt <cb@256bit.org>
parents: 12046
diff changeset
289 bwipe!
0498547dace0 patch 8.0.0908: cannot set terminal size with options
Christian Brabandt <cb@256bit.org>
parents: 12046
diff changeset
290 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
291
12192
6947d5bcf57f patch 8.0.0976: cannot send lines to a terminal job
Christian Brabandt <cb@256bit.org>
parents: 12166
diff changeset
292 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
293 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
294 bwipe!
5cc005cf312f patch 8.0.0868: cannot specify the terminal size on the command line
Christian Brabandt <cb@256bit.org>
parents: 11973
diff changeset
295 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
296
12056
0498547dace0 patch 8.0.0908: cannot set terminal size with options
Christian Brabandt <cb@256bit.org>
parents: 12046
diff changeset
297 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
298 let size = term_getsize('')
0498547dace0 patch 8.0.0908: cannot set terminal size with options
Christian Brabandt <cb@256bit.org>
parents: 12046
diff changeset
299 bwipe!
0498547dace0 patch 8.0.0908: cannot set terminal size with options
Christian Brabandt <cb@256bit.org>
parents: 12046
diff changeset
300 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
301
11975
5cc005cf312f patch 8.0.0868: cannot specify the terminal size on the command line
Christian Brabandt <cb@256bit.org>
parents: 11973
diff changeset
302 split
12192
6947d5bcf57f patch 8.0.0976: cannot send lines to a terminal job
Christian Brabandt <cb@256bit.org>
parents: 12166
diff changeset
303 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
304 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
305 bwipe!
5cc005cf312f patch 8.0.0868: cannot specify the terminal size on the command line
Christian Brabandt <cb@256bit.org>
parents: 11973
diff changeset
306 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
307
0498547dace0 patch 8.0.0908: cannot set terminal size with options
Christian Brabandt <cb@256bit.org>
parents: 12046
diff changeset
308 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
309 let size = term_getsize('')
0498547dace0 patch 8.0.0908: cannot set terminal size with options
Christian Brabandt <cb@256bit.org>
parents: 12046
diff changeset
310 bwipe!
0498547dace0 patch 8.0.0908: cannot set terminal size with options
Christian Brabandt <cb@256bit.org>
parents: 12046
diff changeset
311 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
312
72046661f6d0 patch 8.0.1051: cannot run terminal with spaces in argument
Christian Brabandt <cb@256bit.org>
parents: 12339
diff changeset
313 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
314 endfunc
a879814b8a37 patch 8.0.0910: cannot create a terminal in the current window
Christian Brabandt <cb@256bit.org>
parents: 12056
diff changeset
315
a879814b8a37 patch 8.0.0910: cannot create a terminal in the current window
Christian Brabandt <cb@256bit.org>
parents: 12056
diff changeset
316 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
317 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
318 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
319
a879814b8a37 patch 8.0.0910: cannot create a terminal in the current window
Christian Brabandt <cb@256bit.org>
parents: 12056
diff changeset
320 split dummy
a879814b8a37 patch 8.0.0910: cannot create a terminal in the current window
Christian Brabandt <cb@256bit.org>
parents: 12056
diff changeset
321 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
322 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
323 bwipe!
a879814b8a37 patch 8.0.0910: cannot create a terminal in the current window
Christian Brabandt <cb@256bit.org>
parents: 12056
diff changeset
324
a879814b8a37 patch 8.0.0910: cannot create a terminal in the current window
Christian Brabandt <cb@256bit.org>
parents: 12056
diff changeset
325 split dummy
a879814b8a37 patch 8.0.0910: cannot create a terminal in the current window
Christian Brabandt <cb@256bit.org>
parents: 12056
diff changeset
326 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
327 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
328 bwipe!
a879814b8a37 patch 8.0.0910: cannot create a terminal in the current window
Christian Brabandt <cb@256bit.org>
parents: 12056
diff changeset
329
a879814b8a37 patch 8.0.0910: cannot create a terminal in the current window
Christian Brabandt <cb@256bit.org>
parents: 12056
diff changeset
330 split dummy
a879814b8a37 patch 8.0.0910: cannot create a terminal in the current window
Christian Brabandt <cb@256bit.org>
parents: 12056
diff changeset
331 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
332 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
333 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
334 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
335 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
336 bwipe!
a879814b8a37 patch 8.0.0910: cannot create a terminal in the current window
Christian Brabandt <cb@256bit.org>
parents: 12056
diff changeset
337
a879814b8a37 patch 8.0.0910: cannot create a terminal in the current window
Christian Brabandt <cb@256bit.org>
parents: 12056
diff changeset
338 split dummy
a879814b8a37 patch 8.0.0910: cannot create a terminal in the current window
Christian Brabandt <cb@256bit.org>
parents: 12056
diff changeset
339 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
340 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
341 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
342 bwipe!
a879814b8a37 patch 8.0.0910: cannot create a terminal in the current window
Christian Brabandt <cb@256bit.org>
parents: 12056
diff changeset
343
a879814b8a37 patch 8.0.0910: cannot create a terminal in the current window
Christian Brabandt <cb@256bit.org>
parents: 12056
diff changeset
344 split dummy
a879814b8a37 patch 8.0.0910: cannot create a terminal in the current window
Christian Brabandt <cb@256bit.org>
parents: 12056
diff changeset
345 bwipe!
12343
72046661f6d0 patch 8.0.1051: cannot run terminal with spaces in argument
Christian Brabandt <cb@256bit.org>
parents: 12339
diff changeset
346 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
347 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
348
12903
411a30bd7e8a patch 8.0.1328: trouble when using ":term ++close" with autocmd
Christian Brabandt <cb@256bit.org>
parents: 12765
diff changeset
349 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
350 if s:python != ''
191ccece2f5d patch 8.0.0911: terminal test takes too long
Christian Brabandt <cb@256bit.org>
parents: 12060
diff changeset
351 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
352 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
353 else
12062
191ccece2f5d patch 8.0.0911: terminal test takes too long
Christian Brabandt <cb@256bit.org>
parents: 12060
diff changeset
354 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
355 let waittime = 2000
191ccece2f5d patch 8.0.0911: terminal test takes too long
Christian Brabandt <cb@256bit.org>
parents: 12060
diff changeset
356 if has('win32')
191ccece2f5d patch 8.0.0911: terminal test takes too long
Christian Brabandt <cb@256bit.org>
parents: 12060
diff changeset
357 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
358 else
191ccece2f5d patch 8.0.0911: terminal test takes too long
Christian Brabandt <cb@256bit.org>
parents: 12060
diff changeset
359 let cmd = 'sleep 1'
191ccece2f5d patch 8.0.0911: terminal test takes too long
Christian Brabandt <cb@256bit.org>
parents: 12060
diff changeset
360 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
361 endif
12903
411a30bd7e8a patch 8.0.1328: trouble when using ":term ++close" with autocmd
Christian Brabandt <cb@256bit.org>
parents: 12765
diff changeset
362 return [cmd, waittime]
411a30bd7e8a patch 8.0.1328: trouble when using ":term ++close" with autocmd
Christian Brabandt <cb@256bit.org>
parents: 12765
diff changeset
363 endfunc
411a30bd7e8a patch 8.0.1328: trouble when using ":term ++close" with autocmd
Christian Brabandt <cb@256bit.org>
parents: 12765
diff changeset
364
411a30bd7e8a patch 8.0.1328: trouble when using ":term ++close" with autocmd
Christian Brabandt <cb@256bit.org>
parents: 12765
diff changeset
365 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
366 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
367
411a30bd7e8a patch 8.0.1328: trouble when using ":term ++close" with autocmd
Christian Brabandt <cb@256bit.org>
parents: 12765
diff changeset
368 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
369
12031
9897241c08b5 patch 8.0.0896: cannot close a terminal window when the job ends
Christian Brabandt <cb@256bit.org>
parents: 12025
diff changeset
370 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
371 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
372 wincmd p
12062
191ccece2f5d patch 8.0.0911: terminal test takes too long
Christian Brabandt <cb@256bit.org>
parents: 12060
diff changeset
373 call WaitFor("winnr('$') == 1", 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
374
9897241c08b5 patch 8.0.0896: cannot close a terminal window when the job ends
Christian Brabandt <cb@256bit.org>
parents: 12025
diff changeset
375 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
376 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
377 wincmd p
12062
191ccece2f5d patch 8.0.0911: terminal test takes too long
Christian Brabandt <cb@256bit.org>
parents: 12060
diff changeset
378 call WaitFor("winnr('$') == 1", 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
379 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
380
9897241c08b5 patch 8.0.0896: cannot close a terminal window when the job ends
Christian Brabandt <cb@256bit.org>
parents: 12025
diff changeset
381 exe 'terminal ++open ' . cmd
12271
e4aa68825575 patch 8.0.1015: missing update to terminal test
Christian Brabandt <cb@256bit.org>
parents: 12263
diff changeset
382 close!
12062
191ccece2f5d patch 8.0.0911: terminal test takes too long
Christian Brabandt <cb@256bit.org>
parents: 12060
diff changeset
383 call WaitFor("winnr('$') == 2", 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
384 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
385 bwipe
9897241c08b5 patch 8.0.0896: cannot close a terminal window when the job ends
Christian Brabandt <cb@256bit.org>
parents: 12025
diff changeset
386
9897241c08b5 patch 8.0.0896: cannot close a terminal window when the job ends
Christian Brabandt <cb@256bit.org>
parents: 12025
diff changeset
387 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
388 close!
12062
191ccece2f5d patch 8.0.0911: terminal test takes too long
Christian Brabandt <cb@256bit.org>
parents: 12060
diff changeset
389 call WaitFor("winnr('$') == 2", 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
390 call assert_equal(2, winnr('$'))
12064
407a475c67fd patch 8.0.0912: cannot run a job in a hidden terminal
Christian Brabandt <cb@256bit.org>
parents: 12062
diff changeset
391 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
392
12064
407a475c67fd patch 8.0.0912: cannot run a job in a hidden terminal
Christian Brabandt <cb@256bit.org>
parents: 12062
diff changeset
393 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
394 call assert_equal(1, winnr('$'))
407a475c67fd patch 8.0.0912: cannot run a job in a hidden terminal
Christian Brabandt <cb@256bit.org>
parents: 12062
diff changeset
395 call WaitFor("winnr('$') == 2", waittime)
407a475c67fd patch 8.0.0912: cannot run a job in a hidden terminal
Christian Brabandt <cb@256bit.org>
parents: 12062
diff changeset
396 call assert_equal(2, winnr('$'))
407a475c67fd patch 8.0.0912: cannot run a job in a hidden terminal
Christian Brabandt <cb@256bit.org>
parents: 12062
diff changeset
397 bwipe
407a475c67fd patch 8.0.0912: cannot run a job in a hidden terminal
Christian Brabandt <cb@256bit.org>
parents: 12062
diff changeset
398
407a475c67fd patch 8.0.0912: cannot run a job in a hidden terminal
Christian Brabandt <cb@256bit.org>
parents: 12062
diff changeset
399 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
400 call assert_equal(1, winnr('$'))
407a475c67fd patch 8.0.0912: cannot run a job in a hidden terminal
Christian Brabandt <cb@256bit.org>
parents: 12062
diff changeset
401 call WaitFor("winnr('$') == 2", waittime)
407a475c67fd patch 8.0.0912: cannot run a job in a hidden terminal
Christian Brabandt <cb@256bit.org>
parents: 12062
diff changeset
402 call assert_equal(2, winnr('$'))
12031
9897241c08b5 patch 8.0.0896: cannot close a terminal window when the job ends
Christian Brabandt <cb@256bit.org>
parents: 12025
diff changeset
403 bwipe
12072
f4e1e1e6886b patch 8.0.0916: cannot specify properties of window for terminal open
Christian Brabandt <cb@256bit.org>
parents: 12064
diff changeset
404
f4e1e1e6886b patch 8.0.0916: cannot specify properties of window for terminal open
Christian Brabandt <cb@256bit.org>
parents: 12064
diff changeset
405 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
406 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
407 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
408 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
409
f4e1e1e6886b patch 8.0.0916: cannot specify properties of window for terminal open
Christian Brabandt <cb@256bit.org>
parents: 12064
diff changeset
410 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
411 close!
12072
f4e1e1e6886b patch 8.0.0916: cannot specify properties of window for terminal open
Christian Brabandt <cb@256bit.org>
parents: 12064
diff changeset
412 call WaitFor("winnr('$') == 2", waittime)
f4e1e1e6886b patch 8.0.0916: cannot specify properties of window for terminal open
Christian Brabandt <cb@256bit.org>
parents: 12064
diff changeset
413 call assert_equal(2, winnr('$'))
f4e1e1e6886b patch 8.0.0916: cannot specify properties of window for terminal open
Christian Brabandt <cb@256bit.org>
parents: 12064
diff changeset
414 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
415 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
416 endfunc
12043
2796a2c9fc17 patch 8.0.0902: cannot specify directory or environment for a job
Christian Brabandt <cb@256bit.org>
parents: 12031
diff changeset
417
2796a2c9fc17 patch 8.0.0902: cannot specify directory or environment for a job
Christian Brabandt <cb@256bit.org>
parents: 12031
diff changeset
418 func Test_terminal_cwd()
12415
cd66083e371e patch 8.0.1087: Test_terminal_cwd is flaky
Christian Brabandt <cb@256bit.org>
parents: 12407
diff changeset
419 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
420 return
2796a2c9fc17 patch 8.0.0902: cannot specify directory or environment for a job
Christian Brabandt <cb@256bit.org>
parents: 12031
diff changeset
421 endif
2796a2c9fc17 patch 8.0.0902: cannot specify directory or environment for a job
Christian Brabandt <cb@256bit.org>
parents: 12031
diff changeset
422 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
423 let buf = term_start('pwd', {'cwd': 'Xdir'})
12415
cd66083e371e patch 8.0.1087: Test_terminal_cwd is flaky
Christian Brabandt <cb@256bit.org>
parents: 12407
diff changeset
424 call WaitFor('"Xdir" == fnamemodify(getline(1), ":t")')
cd66083e371e patch 8.0.1087: Test_terminal_cwd is flaky
Christian Brabandt <cb@256bit.org>
parents: 12407
diff changeset
425 call 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
426
2796a2c9fc17 patch 8.0.0902: cannot specify directory or environment for a job
Christian Brabandt <cb@256bit.org>
parents: 12031
diff changeset
427 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
428 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
429 endfunc
2796a2c9fc17 patch 8.0.0902: cannot specify directory or environment for a job
Christian Brabandt <cb@256bit.org>
parents: 12031
diff changeset
430
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
431 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
432 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
433 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
434 endif
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
435 let g:buf = Run_shell_in_terminal({})
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
436 " Wait for the shell to display a prompt
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
437 call WaitFor('term_getline(g:buf, 1) != ""')
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
438 if has('win32')
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
439 call term_sendkeys(g:buf, "echo %VIM_SERVERNAME%\r")
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
440 else
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
441 call term_sendkeys(g:buf, "echo $VIM_SERVERNAME\r")
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
442 endif
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
443 call term_wait(g:buf)
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
444 call Stop_shell_in_terminal(g:buf)
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
445 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
446 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
447
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
448 exe g:buf . 'bwipe'
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
449 unlet g:buf
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
450 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
451
12043
2796a2c9fc17 patch 8.0.0902: cannot specify directory or environment for a job
Christian Brabandt <cb@256bit.org>
parents: 12031
diff changeset
452 func Test_terminal_env()
12120
017031c7717e patch 8.0.0940: Test_terminal_scrape_multibyte is flaky
Christian Brabandt <cb@256bit.org>
parents: 12118
diff changeset
453 let g: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
454 " Wait for the shell to display a prompt
12120
017031c7717e patch 8.0.0940: Test_terminal_scrape_multibyte is flaky
Christian Brabandt <cb@256bit.org>
parents: 12118
diff changeset
455 call WaitFor('term_getline(g: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
456 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
457 call term_sendkeys(g:buf, "echo %TESTENV%\r")
17c257dd2438 patch 8.0.1240: MS-Windows: term_start() does not support environment
Christian Brabandt <cb@256bit.org>
parents: 12650
diff changeset
458 else
17c257dd2438 patch 8.0.1240: MS-Windows: term_start() does not support environment
Christian Brabandt <cb@256bit.org>
parents: 12650
diff changeset
459 call term_sendkeys(g:buf, "echo $TESTENV\r")
17c257dd2438 patch 8.0.1240: MS-Windows: term_start() does not support environment
Christian Brabandt <cb@256bit.org>
parents: 12650
diff changeset
460 endif
12120
017031c7717e patch 8.0.0940: Test_terminal_scrape_multibyte is flaky
Christian Brabandt <cb@256bit.org>
parents: 12118
diff changeset
461 call term_wait(g:buf)
017031c7717e patch 8.0.0940: Test_terminal_scrape_multibyte is flaky
Christian Brabandt <cb@256bit.org>
parents: 12118
diff changeset
462 call Stop_shell_in_terminal(g:buf)
12118
bf53df1f17ba patch 8.0.0939: Test_terminal_env is flaky
Christian Brabandt <cb@256bit.org>
parents: 12112
diff changeset
463 call WaitFor('getline(2) == "correct"')
12043
2796a2c9fc17 patch 8.0.0902: cannot specify directory or environment for a job
Christian Brabandt <cb@256bit.org>
parents: 12031
diff changeset
464 call assert_equal('correct', getline(2))
2796a2c9fc17 patch 8.0.0902: cannot specify directory or environment for a job
Christian Brabandt <cb@256bit.org>
parents: 12031
diff changeset
465
12120
017031c7717e patch 8.0.0940: Test_terminal_scrape_multibyte is flaky
Christian Brabandt <cb@256bit.org>
parents: 12118
diff changeset
466 exe g:buf . 'bwipe'
017031c7717e patch 8.0.0940: Test_terminal_scrape_multibyte is flaky
Christian Brabandt <cb@256bit.org>
parents: 12118
diff changeset
467 unlet g:buf
12043
2796a2c9fc17 patch 8.0.0902: cannot specify directory or environment for a job
Christian Brabandt <cb@256bit.org>
parents: 12031
diff changeset
468 endfunc
12086
69f2392e6cfb patch 8.0.0923: crash in GUI when terminal job exits
Christian Brabandt <cb@256bit.org>
parents: 12072
diff changeset
469
69f2392e6cfb patch 8.0.0923: crash in GUI when terminal job exits
Christian Brabandt <cb@256bit.org>
parents: 12072
diff changeset
470 " 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
471 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
472 if !CanRunGui()
12086
69f2392e6cfb patch 8.0.0923: crash in GUI when terminal job exits
Christian Brabandt <cb@256bit.org>
parents: 12072
diff changeset
473 return
69f2392e6cfb patch 8.0.0923: crash in GUI when terminal job exits
Christian Brabandt <cb@256bit.org>
parents: 12072
diff changeset
474 endif
12263
eddd5ea01116 patch 8.0.1011: terminal test fails with Athena and Motif
Christian Brabandt <cb@256bit.org>
parents: 12240
diff changeset
475
eddd5ea01116 patch 8.0.1011: terminal test fails with Athena and Motif
Christian Brabandt <cb@256bit.org>
parents: 12240
diff changeset
476 " 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
477 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
478
12086
69f2392e6cfb patch 8.0.0923: crash in GUI when terminal job exits
Christian Brabandt <cb@256bit.org>
parents: 12072
diff changeset
479 gui -f
69f2392e6cfb patch 8.0.0923: crash in GUI when terminal job exits
Christian Brabandt <cb@256bit.org>
parents: 12072
diff changeset
480
69f2392e6cfb patch 8.0.0923: crash in GUI when terminal job exits
Christian Brabandt <cb@256bit.org>
parents: 12072
diff changeset
481 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
482 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
483 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
484 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
485
69f2392e6cfb patch 8.0.0923: crash in GUI when terminal job exits
Christian Brabandt <cb@256bit.org>
parents: 12072
diff changeset
486 " closing window wipes out the terminal buffer a with finished job
69f2392e6cfb patch 8.0.0923: crash in GUI when terminal job exits
Christian Brabandt <cb@256bit.org>
parents: 12072
diff changeset
487 call WaitFor("winnr('$') == 1")
69f2392e6cfb patch 8.0.0923: crash in GUI when terminal job exits
Christian Brabandt <cb@256bit.org>
parents: 12072
diff changeset
488 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
489 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
490
69f2392e6cfb patch 8.0.0923: crash in GUI when terminal job exits
Christian Brabandt <cb@256bit.org>
parents: 12072
diff changeset
491 unlet g:job
69f2392e6cfb patch 8.0.0923: crash in GUI when terminal job exits
Christian Brabandt <cb@256bit.org>
parents: 12072
diff changeset
492 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
493
0a61213afdd2 patch 8.0.0928: MS-Windows: passing arglist to job has escaping problems
Christian Brabandt <cb@256bit.org>
parents: 12086
diff changeset
494 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
495 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
496 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
497 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
498 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
499 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
500
71e10b81226d patch 8.0.0957: a terminal job can deadlock when sending many keys
Christian Brabandt <cb@256bit.org>
parents: 12126
diff changeset
501 func Test_terminal_noblock()
12765
c1347c968d31 patch 8.0.1260: using global variables for WaitFor()
Christian Brabandt <cb@256bit.org>
parents: 12734
diff changeset
502 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
503 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
504 " 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
505 " 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
506 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
507 else
040ec95b8647 patch 8.0.1049: shell on Mac can't handle long text
Christian Brabandt <cb@256bit.org>
parents: 12313
diff changeset
508 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
509 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
510
71e10b81226d patch 8.0.0957: a terminal job can deadlock when sending many keys
Christian Brabandt <cb@256bit.org>
parents: 12126
diff changeset
511 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
512 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
513 endfor
12765
c1347c968d31 patch 8.0.1260: using global variables for WaitFor()
Christian Brabandt <cb@256bit.org>
parents: 12734
diff changeset
514 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
515
65cff399750b patch 8.0.0979: terminal noblock test fails on MS-Windows
Christian Brabandt <cb@256bit.org>
parents: 12196
diff changeset
516 " 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
517 " 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
518 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
519 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
520 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
521 if line !~ 'done'
12765
c1347c968d31 patch 8.0.1260: using global variables for WaitFor()
Christian Brabandt <cb@256bit.org>
parents: 12734
diff changeset
522 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
523 endif
65cff399750b patch 8.0.0979: terminal noblock test fails on MS-Windows
Christian Brabandt <cb@256bit.org>
parents: 12196
diff changeset
524 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
525
12765
c1347c968d31 patch 8.0.1260: using global variables for WaitFor()
Christian Brabandt <cb@256bit.org>
parents: 12734
diff changeset
526 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
527 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
528 call term_wait(buf)
12166
f512c507b061 patch 8.0.0963: terminal test fails on MacOS
Christian Brabandt <cb@256bit.org>
parents: 12156
diff changeset
529 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
530 bwipe
71e10b81226d patch 8.0.0957: a terminal job can deadlock when sending many keys
Christian Brabandt <cb@256bit.org>
parents: 12126
diff changeset
531 endfunc
12196
9237b087583c patch 8.0.0978: writing to terminal job is not tested
Christian Brabandt <cb@256bit.org>
parents: 12192
diff changeset
532
9237b087583c patch 8.0.0978: writing to terminal job is not tested
Christian Brabandt <cb@256bit.org>
parents: 12192
diff changeset
533 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
534 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
535 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
536 endif
9237b087583c patch 8.0.0978: writing to terminal job is not tested
Christian Brabandt <cb@256bit.org>
parents: 12192
diff changeset
537 new
9237b087583c patch 8.0.0978: writing to terminal job is not tested
Christian Brabandt <cb@256bit.org>
parents: 12192
diff changeset
538 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
539 %term 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
540 call WaitFor('getline("$") =~ "3"')
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
541 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
542 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
543 bwipe
9237b087583c patch 8.0.0978: writing to terminal job is not tested
Christian Brabandt <cb@256bit.org>
parents: 12192
diff changeset
544
12313
44f3c9b7eec4 patch 8.0.1036: ++eof argument for terminal only available on MS-Windows
Christian Brabandt <cb@256bit.org>
parents: 12309
diff changeset
545 new
12196
9237b087583c patch 8.0.0978: writing to terminal job is not tested
Christian Brabandt <cb@256bit.org>
parents: 12192
diff changeset
546 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
547 2,3term 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
548 call WaitFor('getline("$") =~ "2"')
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
549 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
550 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
551 bwipe
9237b087583c patch 8.0.0978: writing to terminal job is not tested
Christian Brabandt <cb@256bit.org>
parents: 12192
diff changeset
552
12313
44f3c9b7eec4 patch 8.0.1036: ++eof argument for terminal only available on MS-Windows
Christian Brabandt <cb@256bit.org>
parents: 12309
diff changeset
553 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
554 new
44f3c9b7eec4 patch 8.0.1036: ++eof argument for terminal only available on MS-Windows
Christian Brabandt <cb@256bit.org>
parents: 12309
diff changeset
555 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
556 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
557 " 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
558 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
559 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
560 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
561 else
44f3c9b7eec4 patch 8.0.1036: ++eof argument for terminal only available on MS-Windows
Christian Brabandt <cb@256bit.org>
parents: 12309
diff changeset
562 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
563 endif
44f3c9b7eec4 patch 8.0.1036: ++eof argument for terminal only available on MS-Windows
Christian Brabandt <cb@256bit.org>
parents: 12309
diff changeset
564 bwipe
44f3c9b7eec4 patch 8.0.1036: ++eof argument for terminal only available on MS-Windows
Christian Brabandt <cb@256bit.org>
parents: 12309
diff changeset
565
44f3c9b7eec4 patch 8.0.1036: ++eof argument for terminal only available on MS-Windows
Christian Brabandt <cb@256bit.org>
parents: 12309
diff changeset
566 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
567 new
44f3c9b7eec4 patch 8.0.1036: ++eof argument for terminal only available on MS-Windows
Christian Brabandt <cb@256bit.org>
parents: 12309
diff changeset
568 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
569 1term ++eof=<C-Z> python
44f3c9b7eec4 patch 8.0.1036: ++eof argument for terminal only available on MS-Windows
Christian Brabandt <cb@256bit.org>
parents: 12309
diff changeset
570 call WaitFor('getline("$") =~ "Z"')
44f3c9b7eec4 patch 8.0.1036: ++eof argument for terminal only available on MS-Windows
Christian Brabandt <cb@256bit.org>
parents: 12309
diff changeset
571 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
572 bwipe
44f3c9b7eec4 patch 8.0.1036: ++eof argument for terminal only available on MS-Windows
Christian Brabandt <cb@256bit.org>
parents: 12309
diff changeset
573 endif
44f3c9b7eec4 patch 8.0.1036: ++eof argument for terminal only available on MS-Windows
Christian Brabandt <cb@256bit.org>
parents: 12309
diff changeset
574 endif
44f3c9b7eec4 patch 8.0.1036: ++eof argument for terminal only available on MS-Windows
Christian Brabandt <cb@256bit.org>
parents: 12309
diff changeset
575
12196
9237b087583c patch 8.0.0978: writing to terminal job is not tested
Christian Brabandt <cb@256bit.org>
parents: 12192
diff changeset
576 bwipe!
9237b087583c patch 8.0.0978: writing to terminal job is not tested
Christian Brabandt <cb@256bit.org>
parents: 12192
diff changeset
577 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
578
24abce52ad20 patch 8.0.1000: cannot open a terminal without running a job in it
Christian Brabandt <cb@256bit.org>
parents: 12230
diff changeset
579 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
580 " 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
581 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
582 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
583 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
584 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
585 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
586
12389
d0cf7f71b95b patch 8.0.1074: ":term NONE" does not work on MS-Windows
Christian Brabandt <cb@256bit.org>
parents: 12357
diff changeset
587 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
588 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
589 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
590 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
591 else
d0cf7f71b95b patch 8.0.1074: ":term NONE" does not work on MS-Windows
Christian Brabandt <cb@256bit.org>
parents: 12357
diff changeset
592 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
593 endif
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
594 let g:buf = buf
827ad6758d33 patch 8.0.1117: Test_terminal_no_cmd hangs on MS-Windows with GUI
Christian Brabandt <cb@256bit.org>
parents: 12473
diff changeset
595 call WaitFor('term_getline(g:buf, 1) =~ "look here"')
12389
d0cf7f71b95b patch 8.0.1074: ":term NONE" does not work on MS-Windows
Christian Brabandt <cb@256bit.org>
parents: 12357
diff changeset
596
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
597 call assert_match('look here', term_getline(buf, 1))
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
598 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
599 endfunc
12343
72046661f6d0 patch 8.0.1051: cannot run terminal with spaces in argument
Christian Brabandt <cb@256bit.org>
parents: 12339
diff changeset
600
72046661f6d0 patch 8.0.1051: cannot run terminal with spaces in argument
Christian Brabandt <cb@256bit.org>
parents: 12339
diff changeset
601 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
602 " 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
603 if !has('unix')
72046661f6d0 patch 8.0.1051: cannot run terminal with spaces in argument
Christian Brabandt <cb@256bit.org>
parents: 12339
diff changeset
604 return
72046661f6d0 patch 8.0.1051: cannot run terminal with spaces in argument
Christian Brabandt <cb@256bit.org>
parents: 12339
diff changeset
605 endif
72046661f6d0 patch 8.0.1051: cannot run terminal with spaces in argument
Christian Brabandt <cb@256bit.org>
parents: 12339
diff changeset
606 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
607 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
608 term ls 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
609 call WaitFor('term_getline("", 1) =~ "quoted"')
72046661f6d0 patch 8.0.1051: cannot run terminal with spaces in argument
Christian Brabandt <cb@256bit.org>
parents: 12339
diff changeset
610 call assert_match('quoted"file', term_getline('', 1))
72046661f6d0 patch 8.0.1051: cannot run terminal with spaces in argument
Christian Brabandt <cb@256bit.org>
parents: 12339
diff changeset
611 call term_wait('')
72046661f6d0 patch 8.0.1051: cannot run terminal with spaces in argument
Christian Brabandt <cb@256bit.org>
parents: 12339
diff changeset
612
72046661f6d0 patch 8.0.1051: cannot run terminal with spaces in argument
Christian Brabandt <cb@256bit.org>
parents: 12339
diff changeset
613 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
614 bwipe
72046661f6d0 patch 8.0.1051: cannot run terminal with spaces in argument
Christian Brabandt <cb@256bit.org>
parents: 12339
diff changeset
615 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
616
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
617 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
618 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
619 \ "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
620 \ "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
621 \ "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
622 \ "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
623 \ "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
624 \ "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
625 \ })', '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
626 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
627 \ "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
628 \ })', '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
629 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
630 \ "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
631 \ })', '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
632 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
633
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
634 func Test_terminal_redir_file()
12349
bb67396239a4 patch 8.0.1054: terminal test fails on MS-Windows
Christian Brabandt <cb@256bit.org>
parents: 12345
diff changeset
635 " TODO: this should work on MS-Window
bb67396239a4 patch 8.0.1054: terminal test fails on MS-Windows
Christian Brabandt <cb@256bit.org>
parents: 12345
diff changeset
636 if has('unix')
bb67396239a4 patch 8.0.1054: terminal test fails on MS-Windows
Christian Brabandt <cb@256bit.org>
parents: 12345
diff changeset
637 let cmd = Get_cat_123_cmd()
bb67396239a4 patch 8.0.1054: terminal test fails on MS-Windows
Christian Brabandt <cb@256bit.org>
parents: 12345
diff changeset
638 let buf = term_start(cmd, {'out_io': 'file', 'out_name': 'Xfile'})
bb67396239a4 patch 8.0.1054: terminal test fails on MS-Windows
Christian Brabandt <cb@256bit.org>
parents: 12345
diff changeset
639 call term_wait(buf)
bb67396239a4 patch 8.0.1054: terminal test fails on MS-Windows
Christian Brabandt <cb@256bit.org>
parents: 12345
diff changeset
640 call WaitFor('len(readfile("Xfile")) > 0')
bb67396239a4 patch 8.0.1054: terminal test fails on MS-Windows
Christian Brabandt <cb@256bit.org>
parents: 12345
diff changeset
641 call assert_match('123', readfile('Xfile')[0])
12415
cd66083e371e patch 8.0.1087: Test_terminal_cwd is flaky
Christian Brabandt <cb@256bit.org>
parents: 12407
diff changeset
642 let g:job = term_getjob(buf)
cd66083e371e patch 8.0.1087: Test_terminal_cwd is flaky
Christian Brabandt <cb@256bit.org>
parents: 12407
diff changeset
643 call WaitFor('job_status(g:job) == "dead"')
12349
bb67396239a4 patch 8.0.1054: terminal test fails on MS-Windows
Christian Brabandt <cb@256bit.org>
parents: 12345
diff changeset
644 call delete('Xfile')
12389
d0cf7f71b95b patch 8.0.1074: ":term NONE" does not work on MS-Windows
Christian Brabandt <cb@256bit.org>
parents: 12357
diff changeset
645 bwipe
12349
bb67396239a4 patch 8.0.1054: terminal test fails on MS-Windows
Christian Brabandt <cb@256bit.org>
parents: 12345
diff changeset
646 endif
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
647
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
648 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
649 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
650 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
651 call term_wait(buf)
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
652 call WaitFor('term_getline(' . buf . ', 1) == "one line"')
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
653 call 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
654 let g:job = term_getjob(buf)
9a7fb1d01137 patch 8.0.1058: terminal redirection test is flaky
Christian Brabandt <cb@256bit.org>
parents: 12355
diff changeset
655 call WaitFor('job_status(g:job) == "dead"')
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
656 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
657 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
658 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
659 endfunc
12457
dfb8254aa735 patch 8.0.1108: cannot specify mappings for the terminal window
Christian Brabandt <cb@256bit.org>
parents: 12431
diff changeset
660
dfb8254aa735 patch 8.0.1108: cannot specify mappings for the terminal window
Christian Brabandt <cb@256bit.org>
parents: 12431
diff changeset
661 func TerminalTmap(remap)
dfb8254aa735 patch 8.0.1108: cannot specify mappings for the terminal window
Christian Brabandt <cb@256bit.org>
parents: 12431
diff changeset
662 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
663 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
664
dfb8254aa735 patch 8.0.1108: cannot specify mappings for the terminal window
Christian Brabandt <cb@256bit.org>
parents: 12431
diff changeset
665 if a:remap
dfb8254aa735 patch 8.0.1108: cannot specify mappings for the terminal window
Christian Brabandt <cb@256bit.org>
parents: 12431
diff changeset
666 tmap 123 456
dfb8254aa735 patch 8.0.1108: cannot specify mappings for the terminal window
Christian Brabandt <cb@256bit.org>
parents: 12431
diff changeset
667 else
dfb8254aa735 patch 8.0.1108: cannot specify mappings for the terminal window
Christian Brabandt <cb@256bit.org>
parents: 12431
diff changeset
668 tnoremap 123 456
dfb8254aa735 patch 8.0.1108: cannot specify mappings for the terminal window
Christian Brabandt <cb@256bit.org>
parents: 12431
diff changeset
669 endif
12983
7a9c4a8b1ceb patch 8.0.1367: terminal test hangs, executing abcde
Christian Brabandt <cb@256bit.org>
parents: 12907
diff changeset
670 " 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
671 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
672 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
673 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
674 call feedkeys("123", 'tx')
12473
27c5d8954231 patch 8.0.1116: terminal test fails on MS-Windows
Christian Brabandt <cb@256bit.org>
parents: 12457
diff changeset
675 let g:buf = buf
12983
7a9c4a8b1ceb patch 8.0.1367: terminal test hangs, executing abcde
Christian Brabandt <cb@256bit.org>
parents: 12907
diff changeset
676 call WaitFor("term_getline(g:buf,term_getcursor(g:buf)[0]) =~ 'abxde\\|456'")
12457
dfb8254aa735 patch 8.0.1108: cannot specify mappings for the terminal window
Christian Brabandt <cb@256bit.org>
parents: 12431
diff changeset
677 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
678 if a:remap
12983
7a9c4a8b1ceb patch 8.0.1367: terminal test hangs, executing abcde
Christian Brabandt <cb@256bit.org>
parents: 12907
diff changeset
679 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
680 else
dfb8254aa735 patch 8.0.1108: cannot specify mappings for the terminal window
Christian Brabandt <cb@256bit.org>
parents: 12431
diff changeset
681 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
682 endif
dfb8254aa735 patch 8.0.1108: cannot specify mappings for the terminal window
Christian Brabandt <cb@256bit.org>
parents: 12431
diff changeset
683
dfb8254aa735 patch 8.0.1108: cannot specify mappings for the terminal window
Christian Brabandt <cb@256bit.org>
parents: 12431
diff changeset
684 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
685 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
686 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
687
dfb8254aa735 patch 8.0.1108: cannot specify mappings for the terminal window
Christian Brabandt <cb@256bit.org>
parents: 12431
diff changeset
688 tunmap 123
dfb8254aa735 patch 8.0.1108: cannot specify mappings for the terminal window
Christian Brabandt <cb@256bit.org>
parents: 12431
diff changeset
689 tunmap 456
dfb8254aa735 patch 8.0.1108: cannot specify mappings for the terminal window
Christian Brabandt <cb@256bit.org>
parents: 12431
diff changeset
690 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
691 close
dfb8254aa735 patch 8.0.1108: cannot specify mappings for the terminal window
Christian Brabandt <cb@256bit.org>
parents: 12431
diff changeset
692 unlet g:job
dfb8254aa735 patch 8.0.1108: cannot specify mappings for the terminal window
Christian Brabandt <cb@256bit.org>
parents: 12431
diff changeset
693 endfunc
dfb8254aa735 patch 8.0.1108: cannot specify mappings for the terminal window
Christian Brabandt <cb@256bit.org>
parents: 12431
diff changeset
694
dfb8254aa735 patch 8.0.1108: cannot specify mappings for the terminal window
Christian Brabandt <cb@256bit.org>
parents: 12431
diff changeset
695 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
696 call TerminalTmap(1)
dfb8254aa735 patch 8.0.1108: cannot specify mappings for the terminal window
Christian Brabandt <cb@256bit.org>
parents: 12431
diff changeset
697 call TerminalTmap(0)
dfb8254aa735 patch 8.0.1108: cannot specify mappings for the terminal window
Christian Brabandt <cb@256bit.org>
parents: 12431
diff changeset
698 endfunc
12648
cdfd6eb8bb80 patch 8.0.1202: :wall gives an errof for a terminal window
Christian Brabandt <cb@256bit.org>
parents: 12505
diff changeset
699
cdfd6eb8bb80 patch 8.0.1202: :wall gives an errof for a terminal window
Christian Brabandt <cb@256bit.org>
parents: 12505
diff changeset
700 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
701 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
702 wall
cdfd6eb8bb80 patch 8.0.1202: :wall gives an errof for a terminal window
Christian Brabandt <cb@256bit.org>
parents: 12505
diff changeset
703 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
704 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
705 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
706 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
707 endfunc
12650
f58755eb453e patch 8.0.1203: terminal window mistreats composing characters
Christian Brabandt <cb@256bit.org>
parents: 12648
diff changeset
708
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
709 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
710 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
711 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
712 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
713 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
714 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
715 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
716 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
717
12650
f58755eb453e patch 8.0.1203: terminal window mistreats composing characters
Christian Brabandt <cb@256bit.org>
parents: 12648
diff changeset
718 func Test_terminal_composing_unicode()
f58755eb453e patch 8.0.1203: terminal window mistreats composing characters
Christian Brabandt <cb@256bit.org>
parents: 12648
diff changeset
719 let save_enc = &encoding
f58755eb453e patch 8.0.1203: terminal window mistreats composing characters
Christian Brabandt <cb@256bit.org>
parents: 12648
diff changeset
720 set encoding=utf-8
f58755eb453e patch 8.0.1203: terminal window mistreats composing characters
Christian Brabandt <cb@256bit.org>
parents: 12648
diff changeset
721
f58755eb453e patch 8.0.1203: terminal window mistreats composing characters
Christian Brabandt <cb@256bit.org>
parents: 12648
diff changeset
722 if has('win32')
f58755eb453e patch 8.0.1203: terminal window mistreats composing characters
Christian Brabandt <cb@256bit.org>
parents: 12648
diff changeset
723 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
724 let lnum = [3, 6, 9]
f58755eb453e patch 8.0.1203: terminal window mistreats composing characters
Christian Brabandt <cb@256bit.org>
parents: 12648
diff changeset
725 else
f58755eb453e patch 8.0.1203: terminal window mistreats composing characters
Christian Brabandt <cb@256bit.org>
parents: 12648
diff changeset
726 let cmd = &shell
f58755eb453e patch 8.0.1203: terminal window mistreats composing characters
Christian Brabandt <cb@256bit.org>
parents: 12648
diff changeset
727 let lnum = [1, 3, 5]
f58755eb453e patch 8.0.1203: terminal window mistreats composing characters
Christian Brabandt <cb@256bit.org>
parents: 12648
diff changeset
728 endif
f58755eb453e patch 8.0.1203: terminal window mistreats composing characters
Christian Brabandt <cb@256bit.org>
parents: 12648
diff changeset
729
f58755eb453e patch 8.0.1203: terminal window mistreats composing characters
Christian Brabandt <cb@256bit.org>
parents: 12648
diff changeset
730 enew
f58755eb453e patch 8.0.1203: terminal window mistreats composing characters
Christian Brabandt <cb@256bit.org>
parents: 12648
diff changeset
731 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
732 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
733 call term_wait(buf, 50)
f58755eb453e patch 8.0.1203: terminal window mistreats composing characters
Christian Brabandt <cb@256bit.org>
parents: 12648
diff changeset
734
f58755eb453e patch 8.0.1203: terminal window mistreats composing characters
Christian Brabandt <cb@256bit.org>
parents: 12648
diff changeset
735 " ascii + composing
f58755eb453e patch 8.0.1203: terminal window mistreats composing characters
Christian Brabandt <cb@256bit.org>
parents: 12648
diff changeset
736 let txt = "a\u0308bc"
f58755eb453e patch 8.0.1203: terminal window mistreats composing characters
Christian Brabandt <cb@256bit.org>
parents: 12648
diff changeset
737 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
738 call term_wait(buf, 50)
f58755eb453e patch 8.0.1203: terminal window mistreats composing characters
Christian Brabandt <cb@256bit.org>
parents: 12648
diff changeset
739 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
740 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
741 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
742 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
743 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
744 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
745
f58755eb453e patch 8.0.1203: terminal window mistreats composing characters
Christian Brabandt <cb@256bit.org>
parents: 12648
diff changeset
746 " multibyte + composing
f58755eb453e patch 8.0.1203: terminal window mistreats composing characters
Christian Brabandt <cb@256bit.org>
parents: 12648
diff changeset
747 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
748 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
749 call term_wait(buf, 50)
f58755eb453e patch 8.0.1203: terminal window mistreats composing characters
Christian Brabandt <cb@256bit.org>
parents: 12648
diff changeset
750 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
751 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
752 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
753 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
754 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
755 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
756 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
757 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
758
f58755eb453e patch 8.0.1203: terminal window mistreats composing characters
Christian Brabandt <cb@256bit.org>
parents: 12648
diff changeset
759 " \u00a0 + composing
f58755eb453e patch 8.0.1203: terminal window mistreats composing characters
Christian Brabandt <cb@256bit.org>
parents: 12648
diff changeset
760 let txt = "abc\u00a0\u0308"
f58755eb453e patch 8.0.1203: terminal window mistreats composing characters
Christian Brabandt <cb@256bit.org>
parents: 12648
diff changeset
761 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
762 call term_wait(buf, 50)
f58755eb453e patch 8.0.1203: terminal window mistreats composing characters
Christian Brabandt <cb@256bit.org>
parents: 12648
diff changeset
763 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
764 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
765 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
766 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
767
f58755eb453e patch 8.0.1203: terminal window mistreats composing characters
Christian Brabandt <cb@256bit.org>
parents: 12648
diff changeset
768 call term_sendkeys(buf, "exit\r")
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
769 call WaitFor('job_status(g:job) == "dead"')
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 call 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
771 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
772 unlet g:job
12650
f58755eb453e patch 8.0.1203: terminal window mistreats composing characters
Christian Brabandt <cb@256bit.org>
parents: 12648
diff changeset
773 let &encoding = save_enc
f58755eb453e patch 8.0.1203: terminal window mistreats composing characters
Christian Brabandt <cb@256bit.org>
parents: 12648
diff changeset
774 endfunc
12903
411a30bd7e8a patch 8.0.1328: trouble when using ":term ++close" with autocmd
Christian Brabandt <cb@256bit.org>
parents: 12765
diff changeset
775
411a30bd7e8a patch 8.0.1328: trouble when using ":term ++close" with autocmd
Christian Brabandt <cb@256bit.org>
parents: 12765
diff changeset
776 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
777 fun Nop()
411a30bd7e8a patch 8.0.1328: trouble when using ":term ++close" with autocmd
Christian Brabandt <cb@256bit.org>
parents: 12765
diff changeset
778 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
779 endfun
411a30bd7e8a patch 8.0.1328: trouble when using ":term ++close" with autocmd
Christian Brabandt <cb@256bit.org>
parents: 12765
diff changeset
780
411a30bd7e8a patch 8.0.1328: trouble when using ":term ++close" with autocmd
Christian Brabandt <cb@256bit.org>
parents: 12765
diff changeset
781 aug repro
411a30bd7e8a patch 8.0.1328: trouble when using ":term ++close" with autocmd
Christian Brabandt <cb@256bit.org>
parents: 12765
diff changeset
782 au!
411a30bd7e8a patch 8.0.1328: trouble when using ":term ++close" with autocmd
Christian Brabandt <cb@256bit.org>
parents: 12765
diff changeset
783 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
784 aug END
411a30bd7e8a patch 8.0.1328: trouble when using ":term ++close" with autocmd
Christian Brabandt <cb@256bit.org>
parents: 12765
diff changeset
785
411a30bd7e8a patch 8.0.1328: trouble when using ":term ++close" with autocmd
Christian Brabandt <cb@256bit.org>
parents: 12765
diff changeset
786 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
787
411a30bd7e8a patch 8.0.1328: trouble when using ":term ++close" with autocmd
Christian Brabandt <cb@256bit.org>
parents: 12765
diff changeset
788 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
789 new
411a30bd7e8a patch 8.0.1328: trouble when using ":term ++close" with autocmd
Christian Brabandt <cb@256bit.org>
parents: 12765
diff changeset
790 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
791 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
792 wincmd p
411a30bd7e8a patch 8.0.1328: trouble when using ":term ++close" with autocmd
Christian Brabandt <cb@256bit.org>
parents: 12765
diff changeset
793 call WaitFor("winnr('$') == 2", waittime)
411a30bd7e8a patch 8.0.1328: trouble when using ":term ++close" with autocmd
Christian Brabandt <cb@256bit.org>
parents: 12765
diff changeset
794 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
795 bwipe!
411a30bd7e8a patch 8.0.1328: trouble when using ":term ++close" with autocmd
Christian Brabandt <cb@256bit.org>
parents: 12765
diff changeset
796
411a30bd7e8a patch 8.0.1328: trouble when using ":term ++close" with autocmd
Christian Brabandt <cb@256bit.org>
parents: 12765
diff changeset
797 unlet s:called
411a30bd7e8a patch 8.0.1328: trouble when using ":term ++close" with autocmd
Christian Brabandt <cb@256bit.org>
parents: 12765
diff changeset
798 au! repro
411a30bd7e8a patch 8.0.1328: trouble when using ":term ++close" with autocmd
Christian Brabandt <cb@256bit.org>
parents: 12765
diff changeset
799 delfunc Nop
411a30bd7e8a patch 8.0.1328: trouble when using ":term ++close" with autocmd
Christian Brabandt <cb@256bit.org>
parents: 12765
diff changeset
800 endfunc
13109
fb1b162cdcf6 patch 8.0.1429: crash when calling term_start() with empty argument
Christian Brabandt <cb@256bit.org>
parents: 12983
diff changeset
801
fb1b162cdcf6 patch 8.0.1429: crash when calling term_start() with empty argument
Christian Brabandt <cb@256bit.org>
parents: 12983
diff changeset
802 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
803 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
804 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
805 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
806 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
807 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
808 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
809 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
810 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
811 endfunc
13132
fe0cec169589 patch 8.0.1440: terminal window: some vterm responses are delayed
Christian Brabandt <cb@256bit.org>
parents: 13109
diff changeset
812
fe0cec169589 patch 8.0.1440: terminal window: some vterm responses are delayed
Christian Brabandt <cb@256bit.org>
parents: 13109
diff changeset
813 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
814 if !has('unix')
fe0cec169589 patch 8.0.1440: terminal window: some vterm responses are delayed
Christian Brabandt <cb@256bit.org>
parents: 13109
diff changeset
815 return
fe0cec169589 patch 8.0.1440: terminal window: some vterm responses are delayed
Christian Brabandt <cb@256bit.org>
parents: 13109
diff changeset
816 endif
fe0cec169589 patch 8.0.1440: terminal window: some vterm responses are delayed
Christian Brabandt <cb@256bit.org>
parents: 13109
diff changeset
817
fe0cec169589 patch 8.0.1440: terminal window: some vterm responses are delayed
Christian Brabandt <cb@256bit.org>
parents: 13109
diff changeset
818 let buf = Run_shell_in_terminal({})
fe0cec169589 patch 8.0.1440: terminal window: some vterm responses are delayed
Christian Brabandt <cb@256bit.org>
parents: 13109
diff changeset
819 call term_wait(buf)
fe0cec169589 patch 8.0.1440: terminal window: some vterm responses are delayed
Christian Brabandt <cb@256bit.org>
parents: 13109
diff changeset
820
13156
36c503100cb3 patch 8.0.1452: terminal test fails on some systems
Christian Brabandt <cb@256bit.org>
parents: 13132
diff changeset
821 new
36c503100cb3 patch 8.0.1452: terminal test fails on some systems
Christian Brabandt <cb@256bit.org>
parents: 13132
diff changeset
822 call setline(1, "\x1b[6n")
36c503100cb3 patch 8.0.1452: terminal test fails on some systems
Christian Brabandt <cb@256bit.org>
parents: 13132
diff changeset
823 write! Xescape
36c503100cb3 patch 8.0.1452: terminal test fails on some systems
Christian Brabandt <cb@256bit.org>
parents: 13132
diff changeset
824 bwipe
36c503100cb3 patch 8.0.1452: terminal test fails on some systems
Christian Brabandt <cb@256bit.org>
parents: 13132
diff changeset
825 call term_sendkeys(buf, "cat Xescape\<cr>")
36c503100cb3 patch 8.0.1452: terminal test fails on some systems
Christian Brabandt <cb@256bit.org>
parents: 13132
diff changeset
826
13132
fe0cec169589 patch 8.0.1440: terminal window: some vterm responses are delayed
Christian Brabandt <cb@256bit.org>
parents: 13109
diff changeset
827 " wait for the response of control sequence from libvterm (and send it to tty)
13156
36c503100cb3 patch 8.0.1452: terminal test fails on some systems
Christian Brabandt <cb@256bit.org>
parents: 13132
diff changeset
828 sleep 200m
13132
fe0cec169589 patch 8.0.1440: terminal window: some vterm responses are delayed
Christian Brabandt <cb@256bit.org>
parents: 13109
diff changeset
829 call term_wait(buf)
13156
36c503100cb3 patch 8.0.1452: terminal test fails on some systems
Christian Brabandt <cb@256bit.org>
parents: 13132
diff changeset
830
36c503100cb3 patch 8.0.1452: terminal test fails on some systems
Christian Brabandt <cb@256bit.org>
parents: 13132
diff changeset
831 " Wait for output from tty to display, below an empty line.
36c503100cb3 patch 8.0.1452: terminal test fails on some systems
Christian Brabandt <cb@256bit.org>
parents: 13132
diff changeset
832 " It should show \e3;1R, but only 1R may show up
36c503100cb3 patch 8.0.1452: terminal test fails on some systems
Christian Brabandt <cb@256bit.org>
parents: 13132
diff changeset
833 call assert_match('\<\d\+R', term_getline(buf, 3))
13132
fe0cec169589 patch 8.0.1440: terminal window: some vterm responses are delayed
Christian Brabandt <cb@256bit.org>
parents: 13109
diff changeset
834
fe0cec169589 patch 8.0.1440: terminal window: some vterm responses are delayed
Christian Brabandt <cb@256bit.org>
parents: 13109
diff changeset
835 call term_sendkeys(buf, "\<c-c>")
fe0cec169589 patch 8.0.1440: terminal window: some vterm responses are delayed
Christian Brabandt <cb@256bit.org>
parents: 13109
diff changeset
836 call term_wait(buf)
fe0cec169589 patch 8.0.1440: terminal window: some vterm responses are delayed
Christian Brabandt <cb@256bit.org>
parents: 13109
diff changeset
837 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
838
fe0cec169589 patch 8.0.1440: terminal window: some vterm responses are delayed
Christian Brabandt <cb@256bit.org>
parents: 13109
diff changeset
839 exe buf . 'bwipe'
13156
36c503100cb3 patch 8.0.1452: terminal test fails on some systems
Christian Brabandt <cb@256bit.org>
parents: 13132
diff changeset
840 call delete('Xescape')
13132
fe0cec169589 patch 8.0.1440: terminal window: some vterm responses are delayed
Christian Brabandt <cb@256bit.org>
parents: 13109
diff changeset
841 unlet g:job
fe0cec169589 patch 8.0.1440: terminal window: some vterm responses are delayed
Christian Brabandt <cb@256bit.org>
parents: 13109
diff changeset
842 endfunc
13438
33eea5ce5415 patch 8.0.1593: :qall never exits with an active terminal window
Christian Brabandt <cb@256bit.org>
parents: 13435
diff changeset
843
33eea5ce5415 patch 8.0.1593: :qall never exits with an active terminal window
Christian Brabandt <cb@256bit.org>
parents: 13435
diff changeset
844 " 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
845 " argument, check that :qall works.
33eea5ce5415 patch 8.0.1593: :qall never exits with an active terminal window
Christian Brabandt <cb@256bit.org>
parents: 13435
diff changeset
846 func Test_terminal_qall_kill_arg()
33eea5ce5415 patch 8.0.1593: :qall never exits with an active terminal window
Christian Brabandt <cb@256bit.org>
parents: 13435
diff changeset
847 if !CanRunVimInTerminal()
33eea5ce5415 patch 8.0.1593: :qall never exits with an active terminal window
Christian Brabandt <cb@256bit.org>
parents: 13435
diff changeset
848 return
33eea5ce5415 patch 8.0.1593: :qall never exits with an active terminal window
Christian Brabandt <cb@256bit.org>
parents: 13435
diff changeset
849 endif
33eea5ce5415 patch 8.0.1593: :qall never exits with an active terminal window
Christian Brabandt <cb@256bit.org>
parents: 13435
diff changeset
850 let buf = RunVimInTerminal('', {})
33eea5ce5415 patch 8.0.1593: :qall never exits with an active terminal window
Christian Brabandt <cb@256bit.org>
parents: 13435
diff changeset
851
33eea5ce5415 patch 8.0.1593: :qall never exits with an active terminal window
Christian Brabandt <cb@256bit.org>
parents: 13435
diff changeset
852 " Open a terminal window and wait for the prompt to appear
33eea5ce5415 patch 8.0.1593: :qall never exits with an active terminal window
Christian Brabandt <cb@256bit.org>
parents: 13435
diff changeset
853 call term_sendkeys(buf, ":term ++kill=kill\<CR>")
33eea5ce5415 patch 8.0.1593: :qall never exits with an active terminal window
Christian Brabandt <cb@256bit.org>
parents: 13435
diff changeset
854 call WaitFor({-> term_getline(buf, 10) =~ '\[running]'})
33eea5ce5415 patch 8.0.1593: :qall never exits with an active terminal window
Christian Brabandt <cb@256bit.org>
parents: 13435
diff changeset
855 call WaitFor({-> term_getline(buf, 1) !~ '^\s*$'})
33eea5ce5415 patch 8.0.1593: :qall never exits with an active terminal window
Christian Brabandt <cb@256bit.org>
parents: 13435
diff changeset
856
33eea5ce5415 patch 8.0.1593: :qall never exits with an active terminal window
Christian Brabandt <cb@256bit.org>
parents: 13435
diff changeset
857 " make Vim exit, it will kill the shell
33eea5ce5415 patch 8.0.1593: :qall never exits with an active terminal window
Christian Brabandt <cb@256bit.org>
parents: 13435
diff changeset
858 call term_sendkeys(buf, "\<C-W>:qall\<CR>")
33eea5ce5415 patch 8.0.1593: :qall never exits with an active terminal window
Christian Brabandt <cb@256bit.org>
parents: 13435
diff changeset
859 call WaitFor({-> term_getstatus(buf) == "finished"})
33eea5ce5415 patch 8.0.1593: :qall never exits with an active terminal window
Christian Brabandt <cb@256bit.org>
parents: 13435
diff changeset
860
33eea5ce5415 patch 8.0.1593: :qall never exits with an active terminal window
Christian Brabandt <cb@256bit.org>
parents: 13435
diff changeset
861 " close the terminal window where Vim was running
33eea5ce5415 patch 8.0.1593: :qall never exits with an active terminal window
Christian Brabandt <cb@256bit.org>
parents: 13435
diff changeset
862 quit
33eea5ce5415 patch 8.0.1593: :qall never exits with an active terminal window
Christian Brabandt <cb@256bit.org>
parents: 13435
diff changeset
863 endfunc
33eea5ce5415 patch 8.0.1593: :qall never exits with an active terminal window
Christian Brabandt <cb@256bit.org>
parents: 13435
diff changeset
864
33eea5ce5415 patch 8.0.1593: :qall never exits with an active terminal window
Christian Brabandt <cb@256bit.org>
parents: 13435
diff changeset
865 " 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
866 " argument, check that :qall works.
33eea5ce5415 patch 8.0.1593: :qall never exits with an active terminal window
Christian Brabandt <cb@256bit.org>
parents: 13435
diff changeset
867 func Test_terminal_qall_kill_func()
33eea5ce5415 patch 8.0.1593: :qall never exits with an active terminal window
Christian Brabandt <cb@256bit.org>
parents: 13435
diff changeset
868 if !CanRunVimInTerminal()
33eea5ce5415 patch 8.0.1593: :qall never exits with an active terminal window
Christian Brabandt <cb@256bit.org>
parents: 13435
diff changeset
869 return
33eea5ce5415 patch 8.0.1593: :qall never exits with an active terminal window
Christian Brabandt <cb@256bit.org>
parents: 13435
diff changeset
870 endif
33eea5ce5415 patch 8.0.1593: :qall never exits with an active terminal window
Christian Brabandt <cb@256bit.org>
parents: 13435
diff changeset
871 let buf = RunVimInTerminal('', {})
33eea5ce5415 patch 8.0.1593: :qall never exits with an active terminal window
Christian Brabandt <cb@256bit.org>
parents: 13435
diff changeset
872
33eea5ce5415 patch 8.0.1593: :qall never exits with an active terminal window
Christian Brabandt <cb@256bit.org>
parents: 13435
diff changeset
873 " Open a terminal window and wait for the prompt to appear
33eea5ce5415 patch 8.0.1593: :qall never exits with an active terminal window
Christian Brabandt <cb@256bit.org>
parents: 13435
diff changeset
874 call term_sendkeys(buf, ":term\<CR>")
33eea5ce5415 patch 8.0.1593: :qall never exits with an active terminal window
Christian Brabandt <cb@256bit.org>
parents: 13435
diff changeset
875 call WaitFor({-> term_getline(buf, 10) =~ '\[running]'})
33eea5ce5415 patch 8.0.1593: :qall never exits with an active terminal window
Christian Brabandt <cb@256bit.org>
parents: 13435
diff changeset
876 call WaitFor({-> term_getline(buf, 1) !~ '^\s*$'})
33eea5ce5415 patch 8.0.1593: :qall never exits with an active terminal window
Christian Brabandt <cb@256bit.org>
parents: 13435
diff changeset
877
33eea5ce5415 patch 8.0.1593: :qall never exits with an active terminal window
Christian Brabandt <cb@256bit.org>
parents: 13435
diff changeset
878 " set kill using term_setkill()
33eea5ce5415 patch 8.0.1593: :qall never exits with an active terminal window
Christian Brabandt <cb@256bit.org>
parents: 13435
diff changeset
879 call term_sendkeys(buf, "\<C-W>:call term_setkill(bufnr('%'), 'kill')\<CR>")
33eea5ce5415 patch 8.0.1593: :qall never exits with an active terminal window
Christian Brabandt <cb@256bit.org>
parents: 13435
diff changeset
880
33eea5ce5415 patch 8.0.1593: :qall never exits with an active terminal window
Christian Brabandt <cb@256bit.org>
parents: 13435
diff changeset
881 " make Vim exit, it will kill the shell
33eea5ce5415 patch 8.0.1593: :qall never exits with an active terminal window
Christian Brabandt <cb@256bit.org>
parents: 13435
diff changeset
882 call term_sendkeys(buf, "\<C-W>:qall\<CR>")
33eea5ce5415 patch 8.0.1593: :qall never exits with an active terminal window
Christian Brabandt <cb@256bit.org>
parents: 13435
diff changeset
883 call WaitFor({-> term_getstatus(buf) == "finished"})
33eea5ce5415 patch 8.0.1593: :qall never exits with an active terminal window
Christian Brabandt <cb@256bit.org>
parents: 13435
diff changeset
884
33eea5ce5415 patch 8.0.1593: :qall never exits with an active terminal window
Christian Brabandt <cb@256bit.org>
parents: 13435
diff changeset
885 " close the terminal window where Vim was running
33eea5ce5415 patch 8.0.1593: :qall never exits with an active terminal window
Christian Brabandt <cb@256bit.org>
parents: 13435
diff changeset
886 quit
33eea5ce5415 patch 8.0.1593: :qall never exits with an active terminal window
Christian Brabandt <cb@256bit.org>
parents: 13435
diff changeset
887 endfunc
13440
22439cdda382 patch 8.0.1594: :conform qall not tested with active terminal window
Christian Brabandt <cb@256bit.org>
parents: 13438
diff changeset
888
22439cdda382 patch 8.0.1594: :conform qall not tested with active terminal window
Christian Brabandt <cb@256bit.org>
parents: 13438
diff changeset
889 " 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
890 " 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
891 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
892 if !CanRunVimInTerminal()
22439cdda382 patch 8.0.1594: :conform qall not tested with active terminal window
Christian Brabandt <cb@256bit.org>
parents: 13438
diff changeset
893 return
22439cdda382 patch 8.0.1594: :conform qall not tested with active terminal window
Christian Brabandt <cb@256bit.org>
parents: 13438
diff changeset
894 endif
22439cdda382 patch 8.0.1594: :conform qall not tested with active terminal window
Christian Brabandt <cb@256bit.org>
parents: 13438
diff changeset
895 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
896
22439cdda382 patch 8.0.1594: :conform qall not tested with active terminal window
Christian Brabandt <cb@256bit.org>
parents: 13438
diff changeset
897 " 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
898 call term_sendkeys(buf, ":term\<CR>")
22439cdda382 patch 8.0.1594: :conform qall not tested with active terminal window
Christian Brabandt <cb@256bit.org>
parents: 13438
diff changeset
899 call WaitFor({-> term_getline(buf, 10) =~ '\[running]'})
22439cdda382 patch 8.0.1594: :conform qall not tested with active terminal window
Christian Brabandt <cb@256bit.org>
parents: 13438
diff changeset
900 call WaitFor({-> term_getline(buf, 1) !~ '^\s*$'})
22439cdda382 patch 8.0.1594: :conform qall not tested with active terminal window
Christian Brabandt <cb@256bit.org>
parents: 13438
diff changeset
901
22439cdda382 patch 8.0.1594: :conform qall not tested with active terminal window
Christian Brabandt <cb@256bit.org>
parents: 13438
diff changeset
902 " 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
903 call term_sendkeys(buf, "\<C-W>:confirm qall\<CR>")
22439cdda382 patch 8.0.1594: :conform qall not tested with active terminal window
Christian Brabandt <cb@256bit.org>
parents: 13438
diff changeset
904 call WaitFor({-> term_getline(buf, 20) =~ 'ancel:'})
22439cdda382 patch 8.0.1594: :conform qall not tested with active terminal window
Christian Brabandt <cb@256bit.org>
parents: 13438
diff changeset
905 call term_sendkeys(buf, "y")
22439cdda382 patch 8.0.1594: :conform qall not tested with active terminal window
Christian Brabandt <cb@256bit.org>
parents: 13438
diff changeset
906 call WaitFor({-> term_getstatus(buf) == "finished"})
22439cdda382 patch 8.0.1594: :conform qall not tested with active terminal window
Christian Brabandt <cb@256bit.org>
parents: 13438
diff changeset
907
22439cdda382 patch 8.0.1594: :conform qall not tested with active terminal window
Christian Brabandt <cb@256bit.org>
parents: 13438
diff changeset
908 " 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
909 quit
22439cdda382 patch 8.0.1594: :conform qall not tested with active terminal window
Christian Brabandt <cb@256bit.org>
parents: 13438
diff changeset
910 endfunc