@@ -2,10 +2,26 @@ const s:suite = themis#suite('scratch_buffer')
22const s: expect = themis#helper (' expect' )
33
44function ! s: suite .before () abort
5- let g: scratch_buffer_tmp_file_pattern = ' /tmp/scratch-%d'
5+ " Backup default values
6+ let g: backup_scratch_buffer_default_file_ext = g: scratch_buffer_default_file_ext
7+ let g: backup_scratch_buffer_default_open_method = g: scratch_buffer_default_open_method
8+ let g: backup_scratch_buffer_default_buffer_size = g: scratch_buffer_default_buffer_size
9+ let g: backup_scratch_buffer_auto_save_file_buffer = g: scratch_buffer_auto_save_file_buffer
10+ let g: backup_scratch_buffer_use_default_keymappings = g: scratch_buffer_use_default_keymappings
11+ let g: backup_scratch_buffer_auto_hide_buffer = g: scratch_buffer_auto_hide_buffer
612endfunction
713
814function ! s: suite .before_each () abort
15+ " Don't waste our environment
16+ let g: scratch_buffer_tmp_file_pattern = system (' realpath "./test/tmp/scratch-%d"' )[:-2 ]
17+ " Restore default values
18+ let g: scratch_buffer_default_file_ext = g: backup_scratch_buffer_default_file_ext
19+ let g: scratch_buffer_default_open_method = g: backup_scratch_buffer_default_open_method
20+ let g: scratch_buffer_default_buffer_size = g: backup_scratch_buffer_default_buffer_size
21+ let g: scratch_buffer_auto_save_file_buffer = g: backup_scratch_buffer_auto_save_file_buffer
22+ let g: scratch_buffer_use_default_keymappings= g: backup_scratch_buffer_use_default_keymappings
23+ let g: scratch_buffer_auto_hide_buffer = g: backup_scratch_buffer_auto_hide_buffer
24+
925 " Clean all created scratch files and buffers
1026 ScratchBufferClean
1127endfunction
@@ -70,3 +86,57 @@ function! s:suite.wipes_opened_files_and_buffer() abort
7086 \ new_all_buffer_names- >scratch_buffer#helper#contains (second_file),
7187 \ ).not.to_equal (-1 )
7288endfunction
89+
90+ function ! s: suite .uses_default_values () abort
91+ let g: scratch_buffer_default_file_ext = ' ts'
92+ let g: scratch_buffer_default_open_method = ' vsp'
93+ let g: scratch_buffer_default_buffer_size = 20
94+
95+ " Open another window to resize a scratch buffer
96+ new
97+ " Open buffer without arguments
98+ ScratchBufferOpen
99+
100+ const file_name = expand (' %:p' )
101+ const expected = printf (g: scratch_buffer_tmp_file_pattern , 0 ) .. ' .ts'
102+ call s: expect (file_name).to_equal (expected)
103+ call s: expect (winwidth (0 )).to_be_same (20 )
104+ endfunction
105+
106+ function ! s: suite .auto_saves_file_buffer () abort
107+ let g: scratch_buffer_auto_save_file_buffer = v: true
108+
109+ " Create a file buffer
110+ ScratchBufferOpenFile md
111+
112+ " Add some content
113+ call setline (1 , ' test content' )
114+
115+ " Trigger TextChanged event
116+ doautocmd TextChanged
117+
118+ " Check if file was saved
119+ const file_name = expand (' %:p' )
120+ call s: expect (filereadable (file_name)).to_equal (1 )
121+ call s: expect (readfile (file_name)[0 ]).to_equal (' test content' )
122+ endfunction
123+
124+ function ! s: suite .auto_hide_buffer_behavior () abort
125+ " Test temporary buffer auto-hiding
126+ let g: scratch_buffer_auto_hide_buffer = #{
127+ \ when_tmp_buffer: v: true ,
128+ \ when_file_buffer: v: false ,
129+ \ }
130+ only
131+ ScratchBufferOpen md
132+ wincmd p " Trigger WinLeave
133+ call s: expect (winnr (' $' )).to_be_same (1 )
134+
135+ " Test file buffer auto-hiding
136+ let g: scratch_buffer_auto_hide_buffer .when_tmp_buffer = v: false
137+ let g: scratch_buffer_auto_hide_buffer .when_file_buffer = v: true
138+ only
139+ ScratchBufferOpenFile md
140+ wincmd p " Trigger WinLeave
141+ call s: expect (winnr (' $' )).to_be_same (1 )
142+ endfunction
0 commit comments