1
0
mirror of https://github.com/SpaceVim/SpaceVim.git synced 2025-02-03 14:00:06 +08:00
SpaceVim/bundle/gina.vim/test/gina/command/grep.vimspec

8.2 KiB
Vendored

Describe gina#command#grep
Before all
let Path = vital#gina#import('System.Filepath')
let slit1 = Slit(tempname(), 1)
call slit1.write('A/foo.txt', ['a', 'b', 'c', 'd', 'e'])
call slit1.write('B/foo.txt', ['A', 'B', 'C', 'D', 'E'])
call slit1.write('C/foo.txt', ['aa', 'bb', 'cc', 'dd', 'ee'])
call slit1.write('D/foo.txt', ['--color-text'])
call slit1.execute('add .')
call slit1.execute('commit --quiet -am "First"')
End
 
After all
%bwipeout!
End
 
Before
%bwipeout!
End
 
Describe Use cases
It might be called with {pattern}
execute 'edit' fnameescape(slit1.path('A/foo.txt'))
GinaSync grep a
Assert Equals(winnr('$'), 1)
" Focused buffer
Assert Equals(bufname('%'), printf('gina://%s:grep', slit1.refname))
Assert Equals(getline(1, '$'), [
\ 'A/foo.txt:1:a',
\ 'C/foo.txt:1:aa',
\])
Assert Equals(gina#action#candidates(1, line('$')), [
\ {
\ '__lnum': 1,
\ 'word': 'a',
\ 'col': 1,
\ 'residual': [],
\ 'path': 'A/foo.txt',
\ 'rev': '',
\ 'line': 1,
\ 'abbr': 'A/foo.txt:1:a'
\ },
\ {
\ '__lnum': 2,
\ 'word': 'aa',
\ 'col': 1,
\ 'residual': [],
\ 'path': 'C/foo.txt',
\ 'rev': '',
\ 'line': 1,
\ 'abbr': 'C/foo.txt:1:aa',
\ },
\])
End
 
It might be called with -e --color-text
execute 'edit' fnameescape(slit1.path('A/foo.txt'))
GinaSync grep -e --color-text
Assert Equals(winnr('$'), 1)
" Focused buffer
Assert Equals(bufname('%'), printf('gina://%s:grep', slit1.refname))
Assert Equals(getline(1, '$'), [
\ "D/foo.txt\e[36m:\e[m1\e[36m:\e[m\e[1;31m--color-text\e[m",
\])
Assert Equals(gina#action#candidates(1, line('$')), [
\ {
\ '__lnum': 1,
\ 'word': '--color-text',
\ 'col': 1,
\ 'residual': [],
\ 'path': 'D/foo.txt',
\ 'rev': '',
\ 'line': 1,
\ 'abbr': "D/foo.txt\e[36m:\e[m1\e[36m:\e[m\e[1;31m--color-text\e[m",
\ },
\])
End
 
It might be called with -e{pattern} --or -e{pattern}
execute 'edit' fnameescape(slit1.path('A/foo.txt'))
GinaSync grep -ea --or -eb
Assert Equals(winnr('$'), 1)
" Focused buffer
Assert Equals(bufname('%'), printf('gina://%s:grep', slit1.refname))
Assert Equals(getline(1, '$'), [
\ 'A/foo.txt:1:a',
\ 'A/foo.txt:2:b',
\ 'C/foo.txt:1:aa',
\ 'C/foo.txt:2:bb',
\])
Assert Equals(gina#action#candidates(1, line('$')), [
\ {
\ '__lnum': 1,
\ 'word': 'a',
\ 'col': 1,
\ 'residual': [],
\ 'path': 'A/foo.txt',
\ 'rev': '',
\ 'line': 1,
\ 'abbr': 'A/foo.txt:1:a'
\ },
\ {
\ '__lnum': 2,
\ 'word': 'b',
\ 'col': 1,
\ 'residual': [],
\ 'path': 'A/foo.txt',
\ 'rev': '',
\ 'line': 2,
\ 'abbr': 'A/foo.txt:2:b'
\ },
\ {
\ '__lnum': 3,
\ 'word': 'aa',
\ 'col': 1,
\ 'residual': [],
\ 'path': 'C/foo.txt',
\ 'rev': '',
\ 'line': 1,
\ 'abbr': 'C/foo.txt:1:aa'
\ },
\ {
\ '__lnum': 4,
\ 'word': 'bb',
\ 'col': 1,
\ 'residual': [],
\ 'path': 'C/foo.txt',
\ 'rev': '',
\ 'line': 2,
\ 'abbr': 'C/foo.txt:2:bb'
\ },
\])
End
 
It might be called with -e {pattern} --or -e {pattern}
execute 'edit' fnameescape(slit1.path('A/foo.txt'))
GinaSync grep -ea --or -eb
Assert Equals(winnr('$'), 1)
" Focused buffer
Assert Equals(bufname('%'), printf('gina://%s:grep', slit1.refname))
Assert Equals(getline(1, '$'), [
\ 'A/foo.txt:1:a',
\ 'A/foo.txt:2:b',
\ 'C/foo.txt:1:aa',
\ 'C/foo.txt:2:bb',
\])
Assert Equals(gina#action#candidates(1, line('$')), [
\ {
\ '__lnum': 1,
\ 'word': 'a',
\ 'col': 1,
\ 'residual': [],
\ 'path': 'A/foo.txt',
\ 'rev': '',
\ 'line': 1,
\ 'abbr': 'A/foo.txt:1:a'
\ },
\ {
\ '__lnum': 2,
\ 'word': 'b',
\ 'col': 1,
\ 'residual': [],
\ 'path': 'A/foo.txt',
\ 'rev': '',
\ 'line': 2,
\ 'abbr': 'A/foo.txt:2:b'
\ },
\ {
\ '__lnum': 3,
\ 'word': 'aa',
\ 'col': 1,
\ 'residual': [],
\ 'path': 'C/foo.txt',
\ 'rev': '',
\ 'line': 1,
\ 'abbr': 'C/foo.txt:1:aa'
\ },
\ {
\ '__lnum': 4,
\ 'word': 'bb',
\ 'col': 1,
\ 'residual': [],
\ 'path': 'C/foo.txt',
\ 'rev': '',
\ 'line': 2,
\ 'abbr': 'C/foo.txt:2:bb'
\ },
\])
End
 
It might be called with {pattern} -- A/*.txt
execute 'edit' fnameescape(slit1.path('A/foo.txt'))
GinaSync grep a -- A/*.txt
Assert Equals(winnr('$'), 1)
" Focused buffer
Assert Equals(bufname('%'), printf('gina://%s:grep:--', slit1.refname))
Assert Equals(getline(1, '$'), [
\ 'A/foo.txt:1:a',
\])
Assert Equals(gina#action#candidates(1, line('$')), [
\ {
\ '__lnum': 1,
\ 'word': 'a',
\ 'col': 1,
\ 'residual': ['A/*.txt'],
\ 'path': 'A/foo.txt',
\ 'rev': '',
\ 'line': 1,
\ 'abbr': 'A/foo.txt:1:a'
\ },
\])
End
End
 
Describe #_is_column_supported()
It returns 1 for version 3.0, 3.0.0, ...
Assert True(gina#command#grep#_is_column_supported('3.0'))
Assert True(gina#command#grep#_is_column_supported('3.0.0'))
Assert True(gina#command#grep#_is_column_supported('4.0'))
Assert True(gina#command#grep#_is_column_supported('5'))
End
 
It returns 1 for version 2.20, 2.20.0, ...
Assert True(gina#command#grep#_is_column_supported('2.20'))
Assert True(gina#command#grep#_is_column_supported('2.20.0'))
Assert True(gina#command#grep#_is_column_supported('2.3'))
End
 
It returns 1 for version 2.19, 2.19.1, ...
Assert True(gina#command#grep#_is_column_supported('2.19'))
Assert True(gina#command#grep#_is_column_supported('2.19.1'))
Assert True(gina#command#grep#_is_column_supported('2.190'))
End
 
It returns 0 for version 2.18, 2.0, ...
Assert False(gina#command#grep#_is_column_supported('2.18'))
Assert False(gina#command#grep#_is_column_supported('2.18.1'))
Assert False(gina#command#grep#_is_column_supported('2.0'))
Assert False(gina#command#grep#_is_column_supported('1.0'))
Assert False(gina#command#grep#_is_column_supported('0.1'))
End
End
End