1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
|
local t = require('test.testutil')
local n = require('test.functional.testnvim')()
local clear, eq, matches = n.clear, t.eq, t.matches
local eval, command, call, api = n.eval, n.command, n.call, n.api
local source, exec_capture = n.source, n.exec_capture
local mkdir = t.mkdir
local function expected_empty()
eq({}, api.nvim_get_vvar('errors'))
end
describe('autochdir behavior', function()
local dir = 'Xtest_functional_legacy_autochdir'
before_each(function()
mkdir(dir)
clear()
command('set shellslash')
end)
after_each(function()
n.rmdir(dir)
end)
-- Tests vim/vim#777 without test_autochdir().
it('sets filename', function()
command('set acd')
command('new')
command('w ' .. dir .. '/Xtest')
eq('Xtest', eval("expand('%')"))
eq(dir, eval([[substitute(getcwd(), '.*/\(\k*\)', '\1', '')]]))
end)
-- oldtest: Test_set_filename_other_window()
it(':file in win_execute() does not cause wrong directory', function()
command('cd ' .. dir)
source([[
func Test_set_filename_other_window()
let cwd = getcwd()
call mkdir('Xa')
call mkdir('Xb')
call mkdir('Xc')
try
args Xa/aaa.txt Xb/bbb.txt
set acd
let winid = win_getid()
snext
call assert_equal('Xb', substitute(getcwd(), '.*/\([^/]*\)$', '\1', ''))
call win_execute(winid, 'file ' .. cwd .. '/Xc/ccc.txt')
call assert_equal('Xb', substitute(getcwd(), '.*/\([^/]*\)$', '\1', ''))
finally
set noacd
call chdir(cwd)
call delete('Xa', 'rf')
call delete('Xb', 'rf')
call delete('Xc', 'rf')
bwipe! aaa.txt
bwipe! bbb.txt
bwipe! ccc.txt
endtry
endfunc
]])
call('Test_set_filename_other_window')
expected_empty()
end)
-- oldtest: Test_acd_win_execute()
it('win_execute() does not change directory', function()
local subdir = 'Xfile'
command('cd ' .. dir)
command('set acd')
call('mkdir', subdir)
local winid = eval('win_getid()')
command('new ' .. subdir .. '/file')
matches(dir .. '/' .. subdir .. '$', eval('getcwd()'))
command('cd ..')
matches(dir .. '$', eval('getcwd()'))
call('win_execute', winid, 'echo')
matches(dir .. '$', eval('getcwd()'))
end)
-- oldtest: Test_verbose_pwd()
it(':verbose pwd shows whether autochdir is used', function()
local subdir = 'Xautodir'
command('cd ' .. dir)
local cwd = eval('getcwd()')
command('edit global.txt')
matches('%[global%].*' .. dir .. '$', exec_capture('verbose pwd'))
call('mkdir', subdir)
command('split ' .. subdir .. '/local.txt')
command('lcd ' .. subdir)
matches('%[window%].*' .. dir .. '/' .. subdir .. '$', exec_capture('verbose pwd'))
command('set acd')
command('wincmd w')
matches('%[autochdir%].*' .. dir .. '$', exec_capture('verbose pwd'))
command('tcd ' .. cwd)
matches('%[tabpage%].*' .. dir .. '$', exec_capture('verbose pwd'))
command('cd ' .. cwd)
matches('%[global%].*' .. dir .. '$', exec_capture('verbose pwd'))
command('lcd ' .. cwd)
matches('%[window%].*' .. dir .. '$', exec_capture('verbose pwd'))
command('edit')
matches('%[autochdir%].*' .. dir .. '$', exec_capture('verbose pwd'))
command('enew')
command('wincmd w')
matches('%[autochdir%].*' .. dir .. '/' .. subdir .. '$', exec_capture('verbose pwd'))
command('wincmd w')
matches('%[window%].*' .. dir .. '$', exec_capture('verbose pwd'))
command('wincmd w')
matches('%[autochdir%].*' .. dir .. '/' .. subdir .. '$', exec_capture('verbose pwd'))
command('set noacd')
matches('%[autochdir%].*' .. dir .. '/' .. subdir .. '$', exec_capture('verbose pwd'))
command('wincmd w')
matches('%[window%].*' .. dir .. '$', exec_capture('verbose pwd'))
command('cd ' .. cwd)
matches('%[global%].*' .. dir .. '$', exec_capture('verbose pwd'))
command('wincmd w')
matches('%[window%].*' .. dir .. '/' .. subdir .. '$', exec_capture('verbose pwd'))
end)
it('overriding via :lcd is not clobbered by win_execute()', function()
command('cd ' .. dir)
source([[
func Test_lcd_win_execute()
let startdir = getcwd()
call mkdir('Xsubdir', 'R')
set autochdir
edit Xsubdir/file
call assert_match('_autochdir.Xsubdir.file$', expand('%:p'))
split
lcd ..
call assert_match('_autochdir.Xsubdir.file$', expand('%:p'))
call win_execute(win_getid(2), "")
call assert_match('_autochdir.Xsubdir.file$', expand('%:p'))
set noautochdir
bwipe!
call chdir(startdir)
endfunc
]])
call('Test_lcd_win_execute')
expected_empty()
end)
end)
|