Mercurial > vim
annotate src/testdir/test_recover.vim @ 22331:0271c2b8bb35 v8.2.1714
patch 8.2.1714: text properties corrupted with substitute command
Commit: https://github.com/vim/vim/commit/8902b31f1b31c117915defc23ac45cdc1f5c671b
Author: Bram Moolenaar <Bram@vim.org>
Date: Sun Sep 20 21:04:35 2020 +0200
patch 8.2.1714: text properties corrupted with substitute command
Problem: Text properties corrupted with substitute command. (Filipe
Brandenburger)
Solution: Get the changed line again after using u_savesub(). (closes #6984)
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Sun, 20 Sep 2020 21:15:04 +0200 |
parents | 08940efa6b4e |
children | cdeec1389c8c |
rev | line source |
---|---|
10896
d513b653f5d0
patch 8.0.0337: invalid memory access in :recover command
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
1 " Test :recover |
d513b653f5d0
patch 8.0.0337: invalid memory access in :recover command
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
2 |
d513b653f5d0
patch 8.0.0337: invalid memory access in :recover command
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
3 func Test_recover_root_dir() |
d513b653f5d0
patch 8.0.0337: invalid memory access in :recover command
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
4 " This used to access invalid memory. |
d513b653f5d0
patch 8.0.0337: invalid memory access in :recover command
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
5 split Xtest |
d513b653f5d0
patch 8.0.0337: invalid memory access in :recover command
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
6 set dir=/ |
d513b653f5d0
patch 8.0.0337: invalid memory access in :recover command
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
7 call assert_fails('recover', 'E305:') |
d513b653f5d0
patch 8.0.0337: invalid memory access in :recover command
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
8 close! |
d513b653f5d0
patch 8.0.0337: invalid memory access in :recover command
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
9 |
11432
0cafb01af1b6
patch 8.0.0600: test_recover fails on some systems
Christian Brabandt <cb@256bit.org>
parents:
10898
diff
changeset
|
10 if has('win32') || filewritable('/') == 2 |
10898
cc3f6ad092c2
patch 8.0.0338: :recover test fails on MS-Windows
Christian Brabandt <cb@256bit.org>
parents:
10896
diff
changeset
|
11 " can write in / directory on MS-Windows |
cc3f6ad092c2
patch 8.0.0338: :recover test fails on MS-Windows
Christian Brabandt <cb@256bit.org>
parents:
10896
diff
changeset
|
12 set dir=/notexist/ |
cc3f6ad092c2
patch 8.0.0338: :recover test fails on MS-Windows
Christian Brabandt <cb@256bit.org>
parents:
10896
diff
changeset
|
13 endif |
10896
d513b653f5d0
patch 8.0.0337: invalid memory access in :recover command
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
14 call assert_fails('split Xtest', 'E303:') |
18372
11394af51615
patch 8.1.2180: Error E303 is not useful when 'directory' is empty
Bram Moolenaar <Bram@vim.org>
parents:
12644
diff
changeset
|
15 |
11394af51615
patch 8.1.2180: Error E303 is not useful when 'directory' is empty
Bram Moolenaar <Bram@vim.org>
parents:
12644
diff
changeset
|
16 " No error with empty 'directory' setting. |
11394af51615
patch 8.1.2180: Error E303 is not useful when 'directory' is empty
Bram Moolenaar <Bram@vim.org>
parents:
12644
diff
changeset
|
17 set directory= |
11394af51615
patch 8.1.2180: Error E303 is not useful when 'directory' is empty
Bram Moolenaar <Bram@vim.org>
parents:
12644
diff
changeset
|
18 split XtestOK |
11394af51615
patch 8.1.2180: Error E303 is not useful when 'directory' is empty
Bram Moolenaar <Bram@vim.org>
parents:
12644
diff
changeset
|
19 close! |
11394af51615
patch 8.1.2180: Error E303 is not useful when 'directory' is empty
Bram Moolenaar <Bram@vim.org>
parents:
12644
diff
changeset
|
20 |
10896
d513b653f5d0
patch 8.0.0337: invalid memory access in :recover command
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
21 set dir& |
d513b653f5d0
patch 8.0.0337: invalid memory access in :recover command
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
22 endfunc |
d513b653f5d0
patch 8.0.0337: invalid memory access in :recover command
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
23 |
12616
4767939d10cc
patch 8.0.1186: still quite a few old style tests
Christian Brabandt <cb@256bit.org>
parents:
11432
diff
changeset
|
24 " Inserts 10000 lines with text to fill the swap file with two levels of pointer |
4767939d10cc
patch 8.0.1186: still quite a few old style tests
Christian Brabandt <cb@256bit.org>
parents:
11432
diff
changeset
|
25 " blocks. Then recovers from the swap file and checks all text is restored. |
4767939d10cc
patch 8.0.1186: still quite a few old style tests
Christian Brabandt <cb@256bit.org>
parents:
11432
diff
changeset
|
26 " |
4767939d10cc
patch 8.0.1186: still quite a few old style tests
Christian Brabandt <cb@256bit.org>
parents:
11432
diff
changeset
|
27 " We need about 10000 lines of 100 characters to get two levels of pointer |
4767939d10cc
patch 8.0.1186: still quite a few old style tests
Christian Brabandt <cb@256bit.org>
parents:
11432
diff
changeset
|
28 " blocks. |
4767939d10cc
patch 8.0.1186: still quite a few old style tests
Christian Brabandt <cb@256bit.org>
parents:
11432
diff
changeset
|
29 func Test_swap_file() |
12644
1fad9675d8fd
patch 8.0.1200: tests switch the bell off twice
Christian Brabandt <cb@256bit.org>
parents:
12616
diff
changeset
|
30 set fileformat=unix undolevels=-1 |
12616
4767939d10cc
patch 8.0.1186: still quite a few old style tests
Christian Brabandt <cb@256bit.org>
parents:
11432
diff
changeset
|
31 edit! Xtest |
4767939d10cc
patch 8.0.1186: still quite a few old style tests
Christian Brabandt <cb@256bit.org>
parents:
11432
diff
changeset
|
32 let text = "\tabcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnoparstuvwxyz0123456789" |
4767939d10cc
patch 8.0.1186: still quite a few old style tests
Christian Brabandt <cb@256bit.org>
parents:
11432
diff
changeset
|
33 let i = 1 |
4767939d10cc
patch 8.0.1186: still quite a few old style tests
Christian Brabandt <cb@256bit.org>
parents:
11432
diff
changeset
|
34 let linecount = 10000 |
4767939d10cc
patch 8.0.1186: still quite a few old style tests
Christian Brabandt <cb@256bit.org>
parents:
11432
diff
changeset
|
35 while i <= linecount |
4767939d10cc
patch 8.0.1186: still quite a few old style tests
Christian Brabandt <cb@256bit.org>
parents:
11432
diff
changeset
|
36 call append(i - 1, i . text) |
4767939d10cc
patch 8.0.1186: still quite a few old style tests
Christian Brabandt <cb@256bit.org>
parents:
11432
diff
changeset
|
37 let i += 1 |
4767939d10cc
patch 8.0.1186: still quite a few old style tests
Christian Brabandt <cb@256bit.org>
parents:
11432
diff
changeset
|
38 endwhile |
4767939d10cc
patch 8.0.1186: still quite a few old style tests
Christian Brabandt <cb@256bit.org>
parents:
11432
diff
changeset
|
39 $delete |
4767939d10cc
patch 8.0.1186: still quite a few old style tests
Christian Brabandt <cb@256bit.org>
parents:
11432
diff
changeset
|
40 preserve |
4767939d10cc
patch 8.0.1186: still quite a few old style tests
Christian Brabandt <cb@256bit.org>
parents:
11432
diff
changeset
|
41 " get the name of the swap file |
4767939d10cc
patch 8.0.1186: still quite a few old style tests
Christian Brabandt <cb@256bit.org>
parents:
11432
diff
changeset
|
42 let swname = split(execute("swapname"))[0] |
4767939d10cc
patch 8.0.1186: still quite a few old style tests
Christian Brabandt <cb@256bit.org>
parents:
11432
diff
changeset
|
43 let swname = substitute(swname, '[[:blank:][:cntrl:]]*\(.\{-}\)[[:blank:][:cntrl:]]*$', '\1', '') |
4767939d10cc
patch 8.0.1186: still quite a few old style tests
Christian Brabandt <cb@256bit.org>
parents:
11432
diff
changeset
|
44 " make a copy of the swap file in Xswap |
4767939d10cc
patch 8.0.1186: still quite a few old style tests
Christian Brabandt <cb@256bit.org>
parents:
11432
diff
changeset
|
45 set binary |
4767939d10cc
patch 8.0.1186: still quite a few old style tests
Christian Brabandt <cb@256bit.org>
parents:
11432
diff
changeset
|
46 exe 'sp ' . swname |
4767939d10cc
patch 8.0.1186: still quite a few old style tests
Christian Brabandt <cb@256bit.org>
parents:
11432
diff
changeset
|
47 w! Xswap |
4767939d10cc
patch 8.0.1186: still quite a few old style tests
Christian Brabandt <cb@256bit.org>
parents:
11432
diff
changeset
|
48 set nobinary |
4767939d10cc
patch 8.0.1186: still quite a few old style tests
Christian Brabandt <cb@256bit.org>
parents:
11432
diff
changeset
|
49 new |
4767939d10cc
patch 8.0.1186: still quite a few old style tests
Christian Brabandt <cb@256bit.org>
parents:
11432
diff
changeset
|
50 only! |
4767939d10cc
patch 8.0.1186: still quite a few old style tests
Christian Brabandt <cb@256bit.org>
parents:
11432
diff
changeset
|
51 bwipe! Xtest |
4767939d10cc
patch 8.0.1186: still quite a few old style tests
Christian Brabandt <cb@256bit.org>
parents:
11432
diff
changeset
|
52 call rename('Xswap', swname) |
4767939d10cc
patch 8.0.1186: still quite a few old style tests
Christian Brabandt <cb@256bit.org>
parents:
11432
diff
changeset
|
53 recover Xtest |
4767939d10cc
patch 8.0.1186: still quite a few old style tests
Christian Brabandt <cb@256bit.org>
parents:
11432
diff
changeset
|
54 call delete(swname) |
4767939d10cc
patch 8.0.1186: still quite a few old style tests
Christian Brabandt <cb@256bit.org>
parents:
11432
diff
changeset
|
55 let linedollar = line('$') |
4767939d10cc
patch 8.0.1186: still quite a few old style tests
Christian Brabandt <cb@256bit.org>
parents:
11432
diff
changeset
|
56 call assert_equal(linecount, linedollar) |
4767939d10cc
patch 8.0.1186: still quite a few old style tests
Christian Brabandt <cb@256bit.org>
parents:
11432
diff
changeset
|
57 if linedollar < linecount |
4767939d10cc
patch 8.0.1186: still quite a few old style tests
Christian Brabandt <cb@256bit.org>
parents:
11432
diff
changeset
|
58 let linecount = linedollar |
4767939d10cc
patch 8.0.1186: still quite a few old style tests
Christian Brabandt <cb@256bit.org>
parents:
11432
diff
changeset
|
59 endif |
4767939d10cc
patch 8.0.1186: still quite a few old style tests
Christian Brabandt <cb@256bit.org>
parents:
11432
diff
changeset
|
60 let i = 1 |
4767939d10cc
patch 8.0.1186: still quite a few old style tests
Christian Brabandt <cb@256bit.org>
parents:
11432
diff
changeset
|
61 while i <= linecount |
4767939d10cc
patch 8.0.1186: still quite a few old style tests
Christian Brabandt <cb@256bit.org>
parents:
11432
diff
changeset
|
62 call assert_equal(i . text, getline(i)) |
4767939d10cc
patch 8.0.1186: still quite a few old style tests
Christian Brabandt <cb@256bit.org>
parents:
11432
diff
changeset
|
63 let i += 1 |
4767939d10cc
patch 8.0.1186: still quite a few old style tests
Christian Brabandt <cb@256bit.org>
parents:
11432
diff
changeset
|
64 endwhile |
4767939d10cc
patch 8.0.1186: still quite a few old style tests
Christian Brabandt <cb@256bit.org>
parents:
11432
diff
changeset
|
65 |
4767939d10cc
patch 8.0.1186: still quite a few old style tests
Christian Brabandt <cb@256bit.org>
parents:
11432
diff
changeset
|
66 set undolevels& |
4767939d10cc
patch 8.0.1186: still quite a few old style tests
Christian Brabandt <cb@256bit.org>
parents:
11432
diff
changeset
|
67 enew! | only |
4767939d10cc
patch 8.0.1186: still quite a few old style tests
Christian Brabandt <cb@256bit.org>
parents:
11432
diff
changeset
|
68 endfunc |
21765
08940efa6b4e
patch 8.2.1432: various inconsistencies in test files
Bram Moolenaar <Bram@vim.org>
parents:
18372
diff
changeset
|
69 |
08940efa6b4e
patch 8.2.1432: various inconsistencies in test files
Bram Moolenaar <Bram@vim.org>
parents:
18372
diff
changeset
|
70 " vim: shiftwidth=2 sts=2 expandtab |