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
|
local t = require('test.testutil')
local n = require('test.functional.testnvim')()
local Screen = require('test.functional.ui.screen')
local clear = n.clear
local eq = t.eq
local api = n.api
local fn = n.fn
local exec = n.exec
local feed = n.feed
local assert_log = t.assert_log
local check_close = n.check_close
local is_os = t.is_os
local testlog = 'Xtest_autocmd_oldtest_log'
describe('oldtests', function()
before_each(clear)
after_each(function()
check_close()
os.remove(testlog)
end)
local exec_lines = function(str)
return fn.split(fn.execute(str), '\n')
end
local add_an_autocmd = function()
exec [[
augroup vimBarTest
au BufReadCmd * echo 'hello'
augroup END
]]
eq(3, #exec_lines('au vimBarTest'))
eq(1, #api.nvim_get_autocmds({ group = 'vimBarTest' }))
end
it('should recognize a bar before the {event}', function()
-- Good spacing
add_an_autocmd()
exec [[ augroup vimBarTest | au! | augroup END ]]
eq(1, #exec_lines('au vimBarTest'))
eq({}, api.nvim_get_autocmds({ group = 'vimBarTest' }))
-- Sad spacing
add_an_autocmd()
exec [[ augroup vimBarTest| au!| augroup END ]]
eq(1, #exec_lines('au vimBarTest'))
-- test that a bar is recognized after the {event}
add_an_autocmd()
exec [[ augroup vimBarTest| au!BufReadCmd| augroup END ]]
eq(1, #exec_lines('au vimBarTest'))
add_an_autocmd()
exec [[ au! vimBarTest|echo 'hello' ]]
eq(1, #exec_lines('au vimBarTest'))
end)
it('should fire on unload buf', function()
clear({ env = { NVIM_LOG_FILE = testlog } })
fn.writefile({ 'Test file Xxx1' }, 'Xxx1')
fn.writefile({ 'Test file Xxx2' }, 'Xxx2')
local fname = 'Xtest_functional_autocmd_unload'
local content = [[
func UnloadAllBufs()
let i = 1
while i <= bufnr('$')
if i != bufnr('%') && bufloaded(i)
exe i . 'bunload'
endif
let i += 1
endwhile
endfunc
au BufUnload * call UnloadAllBufs()
au VimLeave * call writefile(['Test Finished'], 'Xout')
set nohidden
edit Xxx1
split Xxx2
q
]]
fn.writefile(fn.split(content, '\n'), fname)
fn.delete('Xout')
fn.system(string.format('%s --clean -N -S %s', api.nvim_get_vvar('progpath'), fname))
eq(1, fn.filereadable('Xout'))
fn.delete('Xxx1')
fn.delete('Xxx2')
fn.delete(fname)
fn.delete('Xout')
if is_os('win') then
assert_log('stream write failed. RPC canceled; closing channel', testlog)
end
end)
-- oldtest: Test_delete_ml_get_errors()
it('no ml_get error with TextChanged autocommand and delete', function()
local screen = Screen.new(75, 10)
screen:add_extra_attr_ids {
[100] = { background = Screen.colors.Cyan1 },
}
exec([[
set noshowcmd noruler scrolloff=0
source test/old/testdir/samples/matchparen.vim
edit test/old/testdir/samples/box.txt
]])
feed('249GV<C-End>d')
screen:expect {
grid = [[
const auto themeEmoji = _forPeer->themeEmoji(); |
if (themeEmoji.isEmpty()) { |
return nonCustom; |
} |
const auto &themes = _forPeer->owner().cloudThemes(); |
const auto theme = themes.themeForEmoji(themeEmoji); |
if (!theme) {100:{} |
return nonCustom; |
{100:^}} |
353 fewer lines |
]],
}
feed('<PageUp>')
screen:expect {
grid = [[
|
auto BackgroundBox::Inner::resolveResetCustomPaper() const |
-> std::optional<Data::WallPaper> { |
if (!_forPeer) { |
return {}; |
} |
const auto nonCustom = Window::Theme::Background()->paper(); |
const auto themeEmoji = _forPeer->themeEmoji(); |
^if (themeEmoji.isEmpty()) { |
353 fewer lines |
]],
}
end)
end)
|