Mercurial > vim
annotate src/testdir/screendump.vim @ 13998:c3f9c37160e7 v8.1.0017
patch 8.1.0017: shell command completion has duplicates
commit https://github.com/vim/vim/commit/62fe66f251263715968442e237742d9d3dfd5fa1
Author: Bram Moolenaar <Bram@vim.org>
Date: Tue May 22 16:58:47 2018 +0200
patch 8.1.0017: shell command completion has duplicates
Problem: Shell command completion has duplicates. (Yegappan Lakshmanan)
Solution: Use a hash table to avoid duplicates. (Ozaki Kiichi, closes https://github.com/vim/vim/issues/539,
closes #2733)
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Tue, 22 May 2018 17:00:06 +0200 |
parents | f22db93bd887 |
children | dc67449d648c |
rev | line source |
---|---|
13304
013c44d9dc09
patch 8.0.1526: no test using a screen dump yet
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
1 " Functions shared by tests making screen dumps. |
013c44d9dc09
patch 8.0.1526: no test using a screen dump yet
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
2 |
013c44d9dc09
patch 8.0.1526: no test using a screen dump yet
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
3 " Only load this script once. |
13329
424321d6eea7
patch 8.0.1539: no test for the popup menu positioning
Christian Brabandt <cb@256bit.org>
parents:
13322
diff
changeset
|
4 if exists('*CanRunVimInTerminal') |
13304
013c44d9dc09
patch 8.0.1526: no test using a screen dump yet
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
5 finish |
013c44d9dc09
patch 8.0.1526: no test using a screen dump yet
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
6 endif |
013c44d9dc09
patch 8.0.1526: no test using a screen dump yet
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
7 |
13329
424321d6eea7
patch 8.0.1539: no test for the popup menu positioning
Christian Brabandt <cb@256bit.org>
parents:
13322
diff
changeset
|
8 " Need to be able to run terminal Vim with 256 colors. On MS-Windows the |
424321d6eea7
patch 8.0.1539: no test for the popup menu positioning
Christian Brabandt <cb@256bit.org>
parents:
13322
diff
changeset
|
9 " console only has 16 colors and the GUI can't run in a terminal. |
424321d6eea7
patch 8.0.1539: no test for the popup menu positioning
Christian Brabandt <cb@256bit.org>
parents:
13322
diff
changeset
|
10 if !has('terminal') || has('win32') |
424321d6eea7
patch 8.0.1539: no test for the popup menu positioning
Christian Brabandt <cb@256bit.org>
parents:
13322
diff
changeset
|
11 func CanRunVimInTerminal() |
424321d6eea7
patch 8.0.1539: no test for the popup menu positioning
Christian Brabandt <cb@256bit.org>
parents:
13322
diff
changeset
|
12 return 0 |
424321d6eea7
patch 8.0.1539: no test for the popup menu positioning
Christian Brabandt <cb@256bit.org>
parents:
13322
diff
changeset
|
13 endfunc |
424321d6eea7
patch 8.0.1539: no test for the popup menu positioning
Christian Brabandt <cb@256bit.org>
parents:
13322
diff
changeset
|
14 finish |
424321d6eea7
patch 8.0.1539: no test for the popup menu positioning
Christian Brabandt <cb@256bit.org>
parents:
13322
diff
changeset
|
15 endif |
424321d6eea7
patch 8.0.1539: no test for the popup menu positioning
Christian Brabandt <cb@256bit.org>
parents:
13322
diff
changeset
|
16 |
424321d6eea7
patch 8.0.1539: no test for the popup menu positioning
Christian Brabandt <cb@256bit.org>
parents:
13322
diff
changeset
|
17 func CanRunVimInTerminal() |
424321d6eea7
patch 8.0.1539: no test for the popup menu positioning
Christian Brabandt <cb@256bit.org>
parents:
13322
diff
changeset
|
18 return 1 |
424321d6eea7
patch 8.0.1539: no test for the popup menu positioning
Christian Brabandt <cb@256bit.org>
parents:
13322
diff
changeset
|
19 endfunc |
424321d6eea7
patch 8.0.1539: no test for the popup menu positioning
Christian Brabandt <cb@256bit.org>
parents:
13322
diff
changeset
|
20 |
13304
013c44d9dc09
patch 8.0.1526: no test using a screen dump yet
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
21 source shared.vim |
013c44d9dc09
patch 8.0.1526: no test using a screen dump yet
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
22 |
013c44d9dc09
patch 8.0.1526: no test using a screen dump yet
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
23 " Run Vim with "arguments" in a new terminal window. |
013c44d9dc09
patch 8.0.1526: no test using a screen dump yet
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
24 " By default uses a size of 20 lines and 75 columns. |
013c44d9dc09
patch 8.0.1526: no test using a screen dump yet
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
25 " Returns the buffer number of the terminal. |
013c44d9dc09
patch 8.0.1526: no test using a screen dump yet
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
26 " |
13541
296d02b0637f
patch 8.0.1644: terminal API tests still fail
Christian Brabandt <cb@256bit.org>
parents:
13537
diff
changeset
|
27 " Options is a dictionary, these items are recognized: |
296d02b0637f
patch 8.0.1644: terminal API tests still fail
Christian Brabandt <cb@256bit.org>
parents:
13537
diff
changeset
|
28 " "rows" - height of the terminal window (max. 20) |
296d02b0637f
patch 8.0.1644: terminal API tests still fail
Christian Brabandt <cb@256bit.org>
parents:
13537
diff
changeset
|
29 " "cols" - width of the terminal window (max. 78) |
13304
013c44d9dc09
patch 8.0.1526: no test using a screen dump yet
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
30 func RunVimInTerminal(arguments, options) |
13515
eb960e9c75c8
patch 8.0.1631: testing with Vim running in terminal is a bit flaky
Christian Brabandt <cb@256bit.org>
parents:
13331
diff
changeset
|
31 " If Vim doesn't exit a swap file remains, causing other tests to fail. |
eb960e9c75c8
patch 8.0.1631: testing with Vim running in terminal is a bit flaky
Christian Brabandt <cb@256bit.org>
parents:
13331
diff
changeset
|
32 " Remove it here. |
eb960e9c75c8
patch 8.0.1631: testing with Vim running in terminal is a bit flaky
Christian Brabandt <cb@256bit.org>
parents:
13331
diff
changeset
|
33 call delete(".swp") |
eb960e9c75c8
patch 8.0.1631: testing with Vim running in terminal is a bit flaky
Christian Brabandt <cb@256bit.org>
parents:
13331
diff
changeset
|
34 |
13529
f5655d70484f
patch 8.0.1638: popup test fails depending on environment variable
Christian Brabandt <cb@256bit.org>
parents:
13515
diff
changeset
|
35 if exists('$COLORFGBG') |
f5655d70484f
patch 8.0.1638: popup test fails depending on environment variable
Christian Brabandt <cb@256bit.org>
parents:
13515
diff
changeset
|
36 " Clear $COLORFGBG to avoid 'background' being set to "dark", which will |
f5655d70484f
patch 8.0.1638: popup test fails depending on environment variable
Christian Brabandt <cb@256bit.org>
parents:
13515
diff
changeset
|
37 " only be corrected if the response to t_RB is received, which may be too |
f5655d70484f
patch 8.0.1638: popup test fails depending on environment variable
Christian Brabandt <cb@256bit.org>
parents:
13515
diff
changeset
|
38 " late. |
f5655d70484f
patch 8.0.1638: popup test fails depending on environment variable
Christian Brabandt <cb@256bit.org>
parents:
13515
diff
changeset
|
39 let $COLORFGBG = '' |
f5655d70484f
patch 8.0.1638: popup test fails depending on environment variable
Christian Brabandt <cb@256bit.org>
parents:
13515
diff
changeset
|
40 endif |
f5655d70484f
patch 8.0.1638: popup test fails depending on environment variable
Christian Brabandt <cb@256bit.org>
parents:
13515
diff
changeset
|
41 |
13304
013c44d9dc09
patch 8.0.1526: no test using a screen dump yet
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
42 " Make a horizontal and vertical split, so that we can get exactly the right |
13535
e9ffb5b35266
patch 8.0.1641: job in terminal can't communicate with Vim
Christian Brabandt <cb@256bit.org>
parents:
13529
diff
changeset
|
43 " size terminal window. Works only when the current window is full width. |
e9ffb5b35266
patch 8.0.1641: job in terminal can't communicate with Vim
Christian Brabandt <cb@256bit.org>
parents:
13529
diff
changeset
|
44 call assert_equal(&columns, winwidth(0)) |
13304
013c44d9dc09
patch 8.0.1526: no test using a screen dump yet
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
45 split |
013c44d9dc09
patch 8.0.1526: no test using a screen dump yet
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
46 vsplit |
013c44d9dc09
patch 8.0.1526: no test using a screen dump yet
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
47 |
13322
0dc2e4998a15
patch 8.0.1535: C syntax test still fails when using gvim
Christian Brabandt <cb@256bit.org>
parents:
13320
diff
changeset
|
48 " Always do this with 256 colors and a light background. |
0dc2e4998a15
patch 8.0.1535: C syntax test still fails when using gvim
Christian Brabandt <cb@256bit.org>
parents:
13320
diff
changeset
|
49 set t_Co=256 background=light |
0dc2e4998a15
patch 8.0.1535: C syntax test still fails when using gvim
Christian Brabandt <cb@256bit.org>
parents:
13320
diff
changeset
|
50 hi Normal ctermfg=NONE ctermbg=NONE |
13304
013c44d9dc09
patch 8.0.1526: no test using a screen dump yet
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
51 |
13541
296d02b0637f
patch 8.0.1644: terminal API tests still fail
Christian Brabandt <cb@256bit.org>
parents:
13537
diff
changeset
|
52 " Make the window 20 lines high and 75 columns, unless told otherwise. |
296d02b0637f
patch 8.0.1644: terminal API tests still fail
Christian Brabandt <cb@256bit.org>
parents:
13537
diff
changeset
|
53 let rows = get(a:options, 'rows', 20) |
296d02b0637f
patch 8.0.1644: terminal API tests still fail
Christian Brabandt <cb@256bit.org>
parents:
13537
diff
changeset
|
54 let cols = get(a:options, 'cols', 75) |
13537
3fa880445c99
patch 8.0.1642: running Vim in terminal fails with two windows
Christian Brabandt <cb@256bit.org>
parents:
13535
diff
changeset
|
55 |
13304
013c44d9dc09
patch 8.0.1526: no test using a screen dump yet
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
56 let cmd = GetVimCommandClean() |
13320
a90063ec1cd6
patch 8.0.1534: C syntax test fails when using gvim
Christian Brabandt <cb@256bit.org>
parents:
13304
diff
changeset
|
57 " Add -v to have gvim run in the terminal (if possible) |
a90063ec1cd6
patch 8.0.1534: C syntax test fails when using gvim
Christian Brabandt <cb@256bit.org>
parents:
13304
diff
changeset
|
58 let cmd .= ' -v ' . a:arguments |
13541
296d02b0637f
patch 8.0.1644: terminal API tests still fail
Christian Brabandt <cb@256bit.org>
parents:
13537
diff
changeset
|
59 let buf = term_start(cmd, {'curwin': 1, 'term_rows': rows, 'term_cols': cols}) |
13845
f22db93bd887
patch 8.0.1794: duplicate term options after renaming
Christian Brabandt <cb@256bit.org>
parents:
13798
diff
changeset
|
60 if &termwinsize == '' |
13698
404b89cb1e2a
patch 8.0.1721: no test for using the 'termsize' option
Christian Brabandt <cb@256bit.org>
parents:
13650
diff
changeset
|
61 call assert_equal([rows, cols], term_getsize(buf)) |
404b89cb1e2a
patch 8.0.1721: no test for using the 'termsize' option
Christian Brabandt <cb@256bit.org>
parents:
13650
diff
changeset
|
62 else |
404b89cb1e2a
patch 8.0.1721: no test for using the 'termsize' option
Christian Brabandt <cb@256bit.org>
parents:
13650
diff
changeset
|
63 let rows = term_getsize(buf)[0] |
404b89cb1e2a
patch 8.0.1721: no test for using the 'termsize' option
Christian Brabandt <cb@256bit.org>
parents:
13650
diff
changeset
|
64 let cols = term_getsize(buf)[1] |
404b89cb1e2a
patch 8.0.1721: no test for using the 'termsize' option
Christian Brabandt <cb@256bit.org>
parents:
13650
diff
changeset
|
65 endif |
13304
013c44d9dc09
patch 8.0.1526: no test using a screen dump yet
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
66 |
13798
415185e2c970
patch 8.0.1771: in tests, when WaitFor() fails it doesn't say why
Christian Brabandt <cb@256bit.org>
parents:
13698
diff
changeset
|
67 " Wait for "All" or "Top" of the ruler in the status line to be shown. This |
415185e2c970
patch 8.0.1771: in tests, when WaitFor() fails it doesn't say why
Christian Brabandt <cb@256bit.org>
parents:
13698
diff
changeset
|
68 " can be quite slow (e.g. when using valgrind). |
415185e2c970
patch 8.0.1771: in tests, when WaitFor() fails it doesn't say why
Christian Brabandt <cb@256bit.org>
parents:
13698
diff
changeset
|
69 " If it fails then show the terminal contents for debugging. |
415185e2c970
patch 8.0.1771: in tests, when WaitFor() fails it doesn't say why
Christian Brabandt <cb@256bit.org>
parents:
13698
diff
changeset
|
70 try |
415185e2c970
patch 8.0.1771: in tests, when WaitFor() fails it doesn't say why
Christian Brabandt <cb@256bit.org>
parents:
13698
diff
changeset
|
71 call WaitFor({-> len(term_getline(buf, rows)) >= cols - 1}) |
415185e2c970
patch 8.0.1771: in tests, when WaitFor() fails it doesn't say why
Christian Brabandt <cb@256bit.org>
parents:
13698
diff
changeset
|
72 catch /timed out after/ |
415185e2c970
patch 8.0.1771: in tests, when WaitFor() fails it doesn't say why
Christian Brabandt <cb@256bit.org>
parents:
13698
diff
changeset
|
73 let lines = map(range(1, rows), {key, val -> term_getline(buf, val)}) |
415185e2c970
patch 8.0.1771: in tests, when WaitFor() fails it doesn't say why
Christian Brabandt <cb@256bit.org>
parents:
13698
diff
changeset
|
74 call assert_report('RunVimInTerminal() failed, screen contents: ' . join(lines, "<NL>")) |
415185e2c970
patch 8.0.1771: in tests, when WaitFor() fails it doesn't say why
Christian Brabandt <cb@256bit.org>
parents:
13698
diff
changeset
|
75 endtry |
13559
af68603e213d
patch 8.0.1653: screen dump is made too soon
Christian Brabandt <cb@256bit.org>
parents:
13541
diff
changeset
|
76 |
13304
013c44d9dc09
patch 8.0.1526: no test using a screen dump yet
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
77 return buf |
013c44d9dc09
patch 8.0.1526: no test using a screen dump yet
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
78 endfunc |
013c44d9dc09
patch 8.0.1526: no test using a screen dump yet
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
79 |
013c44d9dc09
patch 8.0.1526: no test using a screen dump yet
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
80 " Stop a Vim running in terminal buffer "buf". |
013c44d9dc09
patch 8.0.1526: no test using a screen dump yet
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
81 func StopVimInTerminal(buf) |
013c44d9dc09
patch 8.0.1526: no test using a screen dump yet
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
82 call assert_equal("running", term_getstatus(a:buf)) |
13331
1ba4f926247c
patch 8.0.1540: popup menu positioning fails with longer string
Christian Brabandt <cb@256bit.org>
parents:
13329
diff
changeset
|
83 call term_sendkeys(a:buf, "\<Esc>\<Esc>:qa!\<cr>") |
13798
415185e2c970
patch 8.0.1771: in tests, when WaitFor() fails it doesn't say why
Christian Brabandt <cb@256bit.org>
parents:
13698
diff
changeset
|
84 call WaitForAssert({-> assert_equal("finished", term_getstatus(a:buf))}) |
13304
013c44d9dc09
patch 8.0.1526: no test using a screen dump yet
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
85 only! |
013c44d9dc09
patch 8.0.1526: no test using a screen dump yet
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
86 endfunc |
013c44d9dc09
patch 8.0.1526: no test using a screen dump yet
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
87 |
013c44d9dc09
patch 8.0.1526: no test using a screen dump yet
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
88 " Verify that Vim running in terminal buffer "buf" matches the screen dump. |
13329
424321d6eea7
patch 8.0.1539: no test for the popup menu positioning
Christian Brabandt <cb@256bit.org>
parents:
13322
diff
changeset
|
89 " "options" is passed to term_dumpwrite(). |
13304
013c44d9dc09
patch 8.0.1526: no test using a screen dump yet
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
90 " The file name used is "dumps/{filename}.dump". |
013c44d9dc09
patch 8.0.1526: no test using a screen dump yet
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
91 " Will wait for up to a second for the screen dump to match. |
13329
424321d6eea7
patch 8.0.1539: no test for the popup menu positioning
Christian Brabandt <cb@256bit.org>
parents:
13322
diff
changeset
|
92 func VerifyScreenDump(buf, filename, options) |
13304
013c44d9dc09
patch 8.0.1526: no test using a screen dump yet
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
93 let reference = 'dumps/' . a:filename . '.dump' |
013c44d9dc09
patch 8.0.1526: no test using a screen dump yet
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
94 let testfile = a:filename . '.dump.failed' |
013c44d9dc09
patch 8.0.1526: no test using a screen dump yet
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
95 |
013c44d9dc09
patch 8.0.1526: no test using a screen dump yet
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
96 let i = 0 |
013c44d9dc09
patch 8.0.1526: no test using a screen dump yet
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
97 while 1 |
013c44d9dc09
patch 8.0.1526: no test using a screen dump yet
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
98 call delete(testfile) |
13329
424321d6eea7
patch 8.0.1539: no test for the popup menu positioning
Christian Brabandt <cb@256bit.org>
parents:
13322
diff
changeset
|
99 call term_dumpwrite(a:buf, testfile, a:options) |
13304
013c44d9dc09
patch 8.0.1526: no test using a screen dump yet
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
100 if readfile(reference) == readfile(testfile) |
013c44d9dc09
patch 8.0.1526: no test using a screen dump yet
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
101 call delete(testfile) |
013c44d9dc09
patch 8.0.1526: no test using a screen dump yet
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
102 break |
013c44d9dc09
patch 8.0.1526: no test using a screen dump yet
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
103 endif |
013c44d9dc09
patch 8.0.1526: no test using a screen dump yet
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
104 if i == 100 |
013c44d9dc09
patch 8.0.1526: no test using a screen dump yet
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
105 " Leave the test file around for inspection. |
013c44d9dc09
patch 8.0.1526: no test using a screen dump yet
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
106 call assert_report('See dump file difference: call term_dumpdiff("' . testfile . '", "' . reference . '")') |
013c44d9dc09
patch 8.0.1526: no test using a screen dump yet
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
107 break |
013c44d9dc09
patch 8.0.1526: no test using a screen dump yet
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
108 endif |
013c44d9dc09
patch 8.0.1526: no test using a screen dump yet
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
109 sleep 10m |
013c44d9dc09
patch 8.0.1526: no test using a screen dump yet
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
110 let i += 1 |
013c44d9dc09
patch 8.0.1526: no test using a screen dump yet
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
111 endwhile |
013c44d9dc09
patch 8.0.1526: no test using a screen dump yet
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
112 endfunc |