diff options
| author | Junegunn Choi <junegunn.c@gmail.com> | 2025-01-25 19:57:40 +0900 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-01-25 19:57:40 +0900 |
| commit | 0237bf09bf1fe70d94727b040ac39110f56b497f (patch) | |
| tree | d32061f165f8bd0ba39ef3123623e16be2afe8a1 /test/vim/fzf.vader | |
| parent | 04017c25bb719c31bb18d43b4bcb96c4736f8d91 (diff) | |
| download | fzf-0237bf09bf1fe70d94727b040ac39110f56b497f.tar.gz | |
Split integration test file (#4205)
Diffstat (limited to 'test/vim/fzf.vader')
| -rw-r--r-- | test/vim/fzf.vader | 175 |
1 files changed, 175 insertions, 0 deletions
diff --git a/test/vim/fzf.vader b/test/vim/fzf.vader new file mode 100644 index 00000000..4cb57887 --- /dev/null +++ b/test/vim/fzf.vader @@ -0,0 +1,175 @@ +Execute (Setup): + let g:dir = fnamemodify(g:vader_file, ':p:h') + unlet! g:fzf_layout g:fzf_action g:fzf_history_dir + Log 'Test directory: ' . g:dir + Save &acd + +Execute (fzf#run with dir option): + let cwd = getcwd() + let result = fzf#run({ 'source': 'git ls-files', 'options': '--filter=vdr', 'dir': g:dir }) + AssertEqual ['fzf.vader'], result + AssertEqual 0, haslocaldir() + AssertEqual getcwd(), cwd + + execute 'lcd' fnameescape(cwd) + let result = sort(fzf#run({ 'source': 'git ls-files', 'options': '--filter e', 'dir': g:dir })) + AssertEqual ['fzf.vader'], result + AssertEqual 1, haslocaldir() + AssertEqual getcwd(), cwd + +Execute (fzf#run with Funcref command): + let g:ret = [] + function! g:FzfTest(e) + call add(g:ret, a:e) + endfunction + let result = sort(fzf#run({ 'source': 'git ls-files', 'sink': function('g:FzfTest'), 'options': '--filter e', 'dir': g:dir })) + AssertEqual ['fzf.vader'], result + AssertEqual ['fzf.vader'], sort(g:ret) + +Execute (fzf#run with string source): + let result = sort(fzf#run({ 'source': 'echo hi', 'options': '-f i' })) + AssertEqual ['hi'], result + +Execute (fzf#run with list source): + let result = sort(fzf#run({ 'source': ['hello', 'world'], 'options': '-f e' })) + AssertEqual ['hello'], result + let result = sort(fzf#run({ 'source': ['hello', 'world'], 'options': '-f o' })) + AssertEqual ['hello', 'world'], result + +Execute (fzf#run with string source): + let result = sort(fzf#run({ 'source': 'echo hi', 'options': '-f i' })) + AssertEqual ['hi'], result + +Execute (fzf#run with dir option and noautochdir): + set noacd + let cwd = getcwd() + call fzf#run({'source': ['/foobar'], 'sink': 'e', 'dir': '/tmp', 'options': '-1'}) + " No change in working directory + AssertEqual cwd, getcwd() + + call fzf#run({'source': ['/foobar'], 'sink': 'tabe', 'dir': '/tmp', 'options': '-1'}) + AssertEqual cwd, getcwd() + tabclose + AssertEqual cwd, getcwd() + +Execute (Incomplete fzf#run with dir option and autochdir): + set acd + let cwd = getcwd() + call fzf#run({'source': [], 'sink': 'e', 'dir': '/tmp', 'options': '-0'}) + " No change in working directory even if &acd is set + AssertEqual cwd, getcwd() + +Execute (FIXME: fzf#run with dir option and autochdir): + set acd + call fzf#run({'source': ['/foobar'], 'sink': 'e', 'dir': '/tmp', 'options': '-1'}) + " Working directory changed due to &acd + AssertEqual '/foobar', expand('%') + AssertEqual '/', getcwd() + +Execute (fzf#run with dir option and autochdir when final cwd is same as dir): + set acd + cd /tmp + call fzf#run({'source': ['/foobar'], 'sink': 'e', 'dir': '/', 'options': '-1'}) + " Working directory changed due to &acd + AssertEqual '/', getcwd() + +Execute (fzf#wrap): + AssertThrows fzf#wrap({'foo': 'bar'}) + + let opts = fzf#wrap('foobar') + Log opts + AssertEqual 0.9, opts.window.width + Assert opts.options =~ '--expect=' + Assert !has_key(opts, 'sink') + Assert has_key(opts, 'sink*') + + let opts = fzf#wrap('foobar', {}, 0) + Log opts + AssertEqual 0.9, opts.window.width + + let opts = fzf#wrap('foobar', {}, 1) + Log opts + Assert !has_key(opts, 'window') + + let opts = fzf#wrap('foobar', {'down': '50%'}) + Log opts + AssertEqual '50%', opts.down + + let opts = fzf#wrap('foobar', {'down': '50%'}, 1) + Log opts + Assert !has_key(opts, 'down') + + let opts = fzf#wrap('foobar', {'sink': 'e'}) + Log opts + AssertEqual 'e', opts.sink + Assert !has_key(opts, 'sink*') + + let opts = fzf#wrap('foobar', {'options': '--reverse'}) + Log opts + Assert opts.options =~ '--expect=' + Assert opts.options =~ '--reverse' + + let g:fzf_layout = {'window': 'enew'} + let opts = fzf#wrap('foobar') + Log opts + AssertEqual 'enew', opts.window + + let opts = fzf#wrap('foobar', {}, 1) + Log opts + Assert !has_key(opts, 'window') + + let opts = fzf#wrap('foobar', {'right': '50%'}) + Log opts + Assert !has_key(opts, 'window') + AssertEqual '50%', opts.right + + let opts = fzf#wrap('foobar', {'right': '50%'}, 1) + Log opts + Assert !has_key(opts, 'window') + Assert !has_key(opts, 'right') + + let g:fzf_action = {'a': 'tabe'} + let opts = fzf#wrap('foobar') + Log opts + Assert opts.options =~ '--expect=a' + Assert !has_key(opts, 'sink') + Assert has_key(opts, 'sink*') + + let opts = fzf#wrap('foobar', {'sink': 'e'}) + Log opts + AssertEqual 'e', opts.sink + Assert !has_key(opts, 'sink*') + + let g:fzf_history_dir = '/tmp' + let opts = fzf#wrap('foobar', {'options': '--color light'}) + Log opts + Assert opts.options =~ "--history '/tmp/foobar'" + Assert opts.options =~ '--color light' + + let g:fzf_colors = { 'fg': ['fg', 'Error'] } + let opts = fzf#wrap({}) + Assert opts.options =~ '--color=fg:' + +Execute (fzf#shellescape with sh): + AssertEqual '''''', fzf#shellescape('', 'sh') + AssertEqual '''\''', fzf#shellescape('\', 'sh') + AssertEqual '''""''', fzf#shellescape('""', 'sh') + AssertEqual '''foobar>''', fzf#shellescape('foobar>', 'sh') + AssertEqual '''\\\"\\\''', fzf#shellescape('\\\"\\\', 'sh') + AssertEqual '''echo ''\''''a''\'''' && echo ''\''''b''\''''''', fzf#shellescape('echo ''a'' && echo ''b''', 'sh') + +Execute (fzf#shellescape with cmd.exe): + AssertEqual '^"^"', fzf#shellescape('', 'cmd.exe') + AssertEqual '^"\\^"', fzf#shellescape('\', 'cmd.exe') + AssertEqual '^"\^"\^"^"', fzf#shellescape('""', 'cmd.exe') + AssertEqual '^"foobar^>^"', fzf#shellescape('foobar>', 'cmd.exe') + AssertEqual '^"\\\\\\\^"\\\\\\^"', fzf#shellescape('\\\"\\\', 'cmd.exe') + AssertEqual '^"echo ''a'' ^&^& echo ''b''^"', fzf#shellescape('echo ''a'' && echo ''b''', 'cmd.exe') + + AssertEqual '^"C:\Program Files ^(x86^)\\^"', fzf#shellescape('C:\Program Files (x86)\', 'cmd.exe') + AssertEqual '^"C:/Program Files ^(x86^)/^"', fzf#shellescape('C:/Program Files (x86)/', 'cmd.exe') + AssertEqual '^"%%USERPROFILE%%^"', fzf#shellescape('%USERPROFILE%', 'cmd.exe') + +Execute (Cleanup): + unlet g:dir + Restore |
