blob: 36b4695827e5b9462e0fcf47ee2f0a1176df48aa [file] [log] [blame]
Bram Moolenaar5c719942016-07-09 23:40:45 +02001" Test 'autochdir' behavior
2
Bram Moolenaar8c5a2782019-08-07 23:07:07 +02003source check.vim
4CheckOption autochdir
Bram Moolenaar5c719942016-07-09 23:40:45 +02005
6func Test_set_filename()
Bram Moolenaarcf1ba352017-10-27 00:55:04 +02007 let cwd = getcwd()
Bram Moolenaar5c719942016-07-09 23:40:45 +02008 call test_autochdir()
9 set acd
Bram Moolenaar2caad3f2018-12-16 15:38:02 +010010
11 let s:li = []
12 autocmd DirChanged auto call add(s:li, "autocd")
13 autocmd DirChanged auto call add(s:li, expand("<afile>"))
14
Bram Moolenaar5c719942016-07-09 23:40:45 +020015 new
16 w samples/Xtest
17 call assert_equal("Xtest", expand('%'))
18 call assert_equal("samples", substitute(getcwd(), '.*/\(\k*\)', '\1', ''))
Bram Moolenaar2caad3f2018-12-16 15:38:02 +010019 call assert_equal(["autocd", getcwd()], s:li)
20
Bram Moolenaar5c719942016-07-09 23:40:45 +020021 bwipe!
Bram Moolenaar2caad3f2018-12-16 15:38:02 +010022 au! DirChanged
Bram Moolenaar5c719942016-07-09 23:40:45 +020023 set noacd
Bram Moolenaar3503d7c2019-11-09 20:10:17 +010024 call chdir(cwd)
Bram Moolenaar5c719942016-07-09 23:40:45 +020025 call delete('samples/Xtest')
26endfunc
Bram Moolenaar6d91bcb2020-08-12 18:50:36 +020027
Bram Moolenaardea4a612021-12-04 22:03:34 +000028func Test_set_filename_other_window()
Bram Moolenaardea4a612021-12-04 22:03:34 +000029 let cwd = getcwd()
30 call test_autochdir()
31 call mkdir('Xa')
32 call mkdir('Xb')
33 call mkdir('Xc')
34 try
35 args Xa/aaa.txt Xb/bbb.txt
36 set acd
37 let winid = win_getid()
38 snext
39 call assert_equal('Xb', substitute(getcwd(), '.*/\([^/]*\)$', '\1', ''))
40 call win_execute(winid, 'file ' .. cwd .. '/Xc/ccc.txt')
41 call assert_equal('Xb', substitute(getcwd(), '.*/\([^/]*\)$', '\1', ''))
42 finally
43 set noacd
44 call chdir(cwd)
Bram Moolenaardea4a612021-12-04 22:03:34 +000045 bwipe! aaa.txt
46 bwipe! bbb.txt
47 bwipe! ccc.txt
Dominique Pellef589fd32021-12-05 12:39:21 +000048 call delete('Xa', 'rf')
49 call delete('Xb', 'rf')
50 call delete('Xc', 'rf')
Bram Moolenaardea4a612021-12-04 22:03:34 +000051 endtry
52endfunc
53
Bram Moolenaar90c317f2021-12-28 13:15:05 +000054func Test_acd_win_execute()
55 let cwd = getcwd()
56 set acd
57 call test_autochdir()
58
59 call mkdir('Xfile')
60 let winid = win_getid()
61 new Xfile/file
62 call assert_match('testdir.Xfile$', getcwd())
63 cd ..
64 call assert_match('testdir$', getcwd())
65 call win_execute(winid, 'echo')
66 call assert_match('testdir$', getcwd())
67
68 bwipe!
69 set noacd
70 call chdir(cwd)
71 call delete('Xfile', 'rf')
72endfunc
73
Bram Moolenaar05268152021-11-18 18:53:45 +000074func Test_verbose_pwd()
75 let cwd = getcwd()
76 call test_autochdir()
77
78 edit global.txt
79 call assert_match('\[global\].*testdir$', execute('verbose pwd'))
80
81 call mkdir('Xautodir')
82 split Xautodir/local.txt
83 lcd Xautodir
84 call assert_match('\[window\].*testdir[/\\]Xautodir', execute('verbose pwd'))
85
86 set acd
87 wincmd w
88 call assert_match('\[autochdir\].*testdir$', execute('verbose pwd'))
zeertzjq64be6aa2021-11-19 11:59:08 +000089 execute 'tcd' cwd
90 call assert_match('\[tabpage\].*testdir$', execute('verbose pwd'))
91 execute 'cd' cwd
92 call assert_match('\[global\].*testdir$', execute('verbose pwd'))
zeertzjqb29ae152022-03-05 17:00:31 +000093 execute 'lcd' cwd
94 call assert_match('\[window\].*testdir$', execute('verbose pwd'))
zeertzjq64be6aa2021-11-19 11:59:08 +000095 edit
96 call assert_match('\[autochdir\].*testdir$', execute('verbose pwd'))
zeertzjqb29ae152022-03-05 17:00:31 +000097 enew
98 wincmd w
99 call assert_match('\[autochdir\].*testdir[/\\]Xautodir', execute('verbose pwd'))
100 wincmd w
101 call assert_match('\[window\].*testdir$', execute('verbose pwd'))
Bram Moolenaar05268152021-11-18 18:53:45 +0000102 wincmd w
103 call assert_match('\[autochdir\].*testdir[/\\]Xautodir', execute('verbose pwd'))
104 set noacd
105 call assert_match('\[autochdir\].*testdir[/\\]Xautodir', execute('verbose pwd'))
106 wincmd w
zeertzjqb29ae152022-03-05 17:00:31 +0000107 call assert_match('\[window\].*testdir$', execute('verbose pwd'))
Bram Moolenaardea4a612021-12-04 22:03:34 +0000108 execute 'cd' cwd
zeertzjqb29ae152022-03-05 17:00:31 +0000109 call assert_match('\[global\].*testdir$', execute('verbose pwd'))
Bram Moolenaar05268152021-11-18 18:53:45 +0000110 wincmd w
111 call assert_match('\[window\].*testdir[/\\]Xautodir', execute('verbose pwd'))
112
113 bwipe!
114 call chdir(cwd)
115 call delete('Xautodir', 'rf')
116endfunc
117
Bram Moolenaar5921aeb2022-02-19 11:20:12 +0000118func Test_multibyte()
119 " using an invalid character should not cause a crash
120 set wic
Bram Moolenaaradbb3832022-02-19 14:49:51 +0000121 call assert_fails('tc û¦*', has('win32') ? 'E480:' : 'E344:')
Bram Moolenaar5921aeb2022-02-19 11:20:12 +0000122 set nowic
123endfunc
124
125
Bram Moolenaar6d91bcb2020-08-12 18:50:36 +0200126" vim: shiftwidth=2 sts=2 expandtab