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', 'test_go.rb'], 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', 'test_go.rb'], result AssertEqual ['fzf.vader', 'test_go.rb'], 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 '~40%', opts.down Assert opts.options =~ '--expect=' Assert !has_key(opts, 'sink') Assert has_key(opts, 'sink*') let opts = fzf#wrap('foobar', {}, 0) Log opts AssertEqual '~40%', opts.down let opts = fzf#wrap('foobar', {}, 1) Log opts Assert !has_key(opts, 'down') 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