blob: ee4b26f66ee46d156dc30a3434829b3421a36a19 [file] [log] [blame]
Bram Moolenaarb782ba42018-08-07 21:39:28 +02001" Tests for the backup function
2
Bram Moolenaar1de5f7c2020-06-11 19:22:43 +02003source check.vim
4
Bram Moolenaarb782ba42018-08-07 21:39:28 +02005func Test_backup()
Bram Moolenaarefe03732018-08-09 22:26:38 +02006 set backup backupdir=. backupskip=
Bram Moolenaarb782ba42018-08-07 21:39:28 +02007 new
8 call setline(1, ['line1', 'line2'])
9 :f Xbackup.txt
10 :w! Xbackup.txt
11 " backup file is only created after
12 " writing a second time (before overwriting)
13 :w! Xbackup.txt
14 let l = readfile('Xbackup.txt~')
15 call assert_equal(['line1', 'line2'], l)
16 bw!
Bram Moolenaarefe03732018-08-09 22:26:38 +020017 set backup&vim backupdir&vim backupskip&vim
Bram Moolenaarb782ba42018-08-07 21:39:28 +020018 call delete('Xbackup.txt')
19 call delete('Xbackup.txt~')
20endfunc
21
Bram Moolenaarb86abad2020-08-01 16:08:19 +020022func Test_backup_backupskip()
23 set backup backupdir=. backupskip=*.txt
24 new
25 call setline(1, ['line1', 'line2'])
26 :f Xbackup.txt
27 :w! Xbackup.txt
28 " backup file is only created after
29 " writing a second time (before overwriting)
30 :w! Xbackup.txt
31 call assert_false(filereadable('Xbackup.txt~'))
32 bw!
33 set backup&vim backupdir&vim backupskip&vim
34 call delete('Xbackup.txt')
35 call delete('Xbackup.txt~')
36endfunc
37
Bram Moolenaarb782ba42018-08-07 21:39:28 +020038func Test_backup2()
Bram Moolenaarefe03732018-08-09 22:26:38 +020039 set backup backupdir=.// backupskip=
Bram Moolenaarb782ba42018-08-07 21:39:28 +020040 new
41 call setline(1, ['line1', 'line2', 'line3'])
42 :f Xbackup.txt
43 :w! Xbackup.txt
44 " backup file is only created after
45 " writing a second time (before overwriting)
46 :w! Xbackup.txt
47 sp *Xbackup.txt~
48 call assert_equal(['line1', 'line2', 'line3'], getline(1,'$'))
Bram Moolenaarb86abad2020-08-01 16:08:19 +020049 let f = expand('%')
Bram Moolenaarf8f88f82018-08-08 11:02:32 +020050 call assert_match('%testdir%Xbackup.txt\~', f)
Bram Moolenaarb782ba42018-08-07 21:39:28 +020051 bw!
52 bw!
53 call delete('Xbackup.txt')
54 call delete(f)
Bram Moolenaarefe03732018-08-09 22:26:38 +020055 set backup&vim backupdir&vim backupskip&vim
Bram Moolenaarb782ba42018-08-07 21:39:28 +020056endfunc
57
58func Test_backup2_backupcopy()
Bram Moolenaarefe03732018-08-09 22:26:38 +020059 set backup backupdir=.// backupcopy=yes backupskip=
Bram Moolenaarb782ba42018-08-07 21:39:28 +020060 new
61 call setline(1, ['line1', 'line2', 'line3'])
62 :f Xbackup.txt
63 :w! Xbackup.txt
64 " backup file is only created after
65 " writing a second time (before overwriting)
66 :w! Xbackup.txt
67 sp *Xbackup.txt~
68 call assert_equal(['line1', 'line2', 'line3'], getline(1,'$'))
Bram Moolenaarb86abad2020-08-01 16:08:19 +020069 let f = expand('%')
Bram Moolenaarf8f88f82018-08-08 11:02:32 +020070 call assert_match('%testdir%Xbackup.txt\~', f)
Bram Moolenaarb782ba42018-08-07 21:39:28 +020071 bw!
72 bw!
73 call delete('Xbackup.txt')
74 call delete(f)
Bram Moolenaarefe03732018-08-09 22:26:38 +020075 set backup&vim backupdir&vim backupcopy&vim backupskip&vim
Bram Moolenaarb782ba42018-08-07 21:39:28 +020076endfunc
Bram Moolenaar1de5f7c2020-06-11 19:22:43 +020077
78" Test for using a non-existing directory as a backup directory
79func Test_non_existing_backupdir()
Bram Moolenaarb86abad2020-08-01 16:08:19 +020080 set backupdir=./non_existing_dir backupskip=
Bram Moolenaare7cda972022-08-29 11:02:59 +010081 call writefile(['line1'], 'Xbackupdir')
82 new Xbackupdir
Bram Moolenaar1de5f7c2020-06-11 19:22:43 +020083 call assert_fails('write', 'E510:')
Bram Moolenaarb86abad2020-08-01 16:08:19 +020084 set backupdir&vim backupskip&vim
Bram Moolenaare7cda972022-08-29 11:02:59 +010085 call delete('Xbackupdir')
Bram Moolenaar1de5f7c2020-06-11 19:22:43 +020086endfunc
87
88" vim: shiftwidth=2 sts=2 expandtab