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

406 lines
14 KiB
Plaintext
Raw Normal View History

scriptencoding utf8
Describe gina#command#show
Before all
let Path = vital#gina#import('System.Filepath')
let File = vital#gina#import('System.File')
let slit1 = Slit(tempname(), 1)
let encodings = {}
let encoding_dir = 'test/gina/_testdata'
for filename in glob(Path.realpath(encoding_dir . '/*-encoding.txt'), 1, 1)
let name = matchstr(fnamemodify(filename, ':t'), '.*\ze-encoding.txt')
let encodings[name] = {
\ 'name': name,
\ 'filename': fnamemodify(filename, ':t'),
\}
call File.copy(
\ filename,
\ Path.join(slit1.worktree, fnamemodify(filename, ':t')),
\)
endfor
call slit1.execute('add .')
call slit1.execute('commit --quiet -am "First"')
call slit1.write('A/foo.txt', ['Stashed'])
call slit1.execute('add %s', slit1.path('A/foo.txt'))
call slit1.execute('stash')
call slit1.write('A/foo.txt', [])
call slit1.execute('add %s', slit1.path('A/foo.txt'))
call slit1.write('A/foo.txt', ['1'])
call slit1.execute('commit --quiet -am "Second"')
call slit1.write('A/foo.txt', ['2'])
call slit1.execute('commit --quiet -am "Third"')
call slit1.write('A/foo.txt', ['3'])
call slit1.execute('add %s', slit1.path('A/foo.txt'))
call slit1.write('A/foo.txt', ['4'])
End
After all
%bwipeout!
End
Before
%bwipeout!
End
Describe Use cases (without {path})
It might be called without arguments
execute 'edit' fnameescape(slit1.path('A/foo.txt'))
GinaSync show
Assert Equals(&filetype, 'git')
Assert Equals(winnr('$'), 1)
Assert Equals(bufname('%'), printf('gina://%s:show', slit1.refname))
Assert Equals(getline(4, 7) + getline(9, '$'), [
\ '',
\ ' Third',
\ '',
\ 'diff --git a/A/foo.txt b/A/foo.txt',
\ '--- a/A/foo.txt',
\ '+++ b/A/foo.txt',
\ '@@ -1 +1 @@',
\ '-1',
\ '+2',
\])
End
It might be called with HEAD~
execute 'edit' fnameescape(slit1.path('A/foo.txt'))
GinaSync show HEAD~
Assert Equals(&filetype, 'git')
Assert Equals(winnr('$'), 1)
Assert Equals(bufname('%'), printf('gina://%s:show/HEAD~', slit1.refname))
Assert Equals(getline(4, 6), [
\ '',
\ ' Second',
\ '',
\])
End
It might be called with -- A/*.txt
execute 'edit' fnameescape(slit1.path('A/foo.txt'))
GinaSync show -- A/*.txt
Assert Equals(&filetype, 'git')
Assert Equals(&bufhidden, 'wipe')
Assert Equals(winnr('$'), 1)
Assert Equals(bufname('%'), printf('gina://%s:show:--', slit1.refname))
Assert Equals(getline(4, 7) + getline(9, '$'), [
\ '',
\ ' Third',
\ '',
\ 'diff --git a/A/foo.txt b/A/foo.txt',
\ '--- a/A/foo.txt',
\ '+++ b/A/foo.txt',
\ '@@ -1 +1 @@',
\ '-1',
\ '+2',
\])
End
It might be called with -- A/*.vim
execute 'edit' fnameescape(slit1.path('A/foo.txt'))
GinaSync show -- A/*.vim
Assert Equals(&filetype, 'git')
Assert Equals(&bufhidden, 'wipe')
Assert Equals(winnr('$'), 1)
Assert Equals(bufname('%'), printf('gina://%s:show:--', slit1.refname))
Assert Equals(getline(1, '$'), [''])
End
End
Describe Use cases (with {path})
It might be called without arguments
execute 'edit' fnameescape(slit1.path('A/foo.txt'))
GinaSync show :
Assert Equals(winnr('$'), 1)
" Focused buffer
Assert Equals(bufname('%'), printf('gina://%s:show/:A/foo.txt', slit1.refname))
Assert Equals(getline(1, '$'), ['3'])
End
It might be called with HEAD
execute 'edit' fnameescape(slit1.path('A/foo.txt'))
GinaSync show HEAD:
Assert Equals(winnr('$'), 1)
" Focused buffer
Assert Equals(bufname('%'), printf('gina://%s:show/HEAD:A/foo.txt', slit1.refname))
Assert Equals(getline(1, '$'), ['2'])
End
It might be called with HEAD~
execute 'edit' fnameescape(slit1.path('A/foo.txt'))
GinaSync show HEAD~:
Assert Equals(winnr('$'), 1)
" Focused buffer
Assert Equals(bufname('%'), printf('gina://%s:show/HEAD~:A/foo.txt', slit1.refname))
Assert Equals(getline(1, '$'), ['1'])
End
It might be called with stash@{0}:
execute 'edit' fnameescape(slit1.path('A/foo.txt'))
GinaSync show stash@{0}:
Assert Equals(winnr('$'), 1)
" Focused buffer
Assert Equals(bufname('%'), printf('gina://%s:show/stash@{0}:A/foo.txt', slit1.refname))
Assert Equals(getline(1, '$'), ['Stashed'])
End
End
Describe Behavior
Context jumps
Before
if !exists(':clearjumps')
Skip This Vim does not have :clearjumps so skip.
endif
End
It respects a native Vim's behavior for jumps for ':edit'
let opener = 'edit'
clearjumps
execute opener 'README.md'
let expect = split(execute('jumps'), '\r\?\n')
%bwipeout! | clearjumps
execute printf('Gina show --opener=%s :README.md', opener)
Assert Equals(split(execute('jumps'), '\r\?\n'), expect)
End
It respects a native Vim's behavior for jumps for ':new'
let opener = 'new'
clearjumps
execute opener 'README.md'
let expect = split(execute('jumps'), '\r\?\n')
%bwipeout! | clearjumps
execute printf('Gina show --opener=%s :README.md', opener)
Assert Equals(split(execute('jumps'), '\r\?\n'), expect)
End
It respects a native Vim's behavior for jumps for ':pedit'
let opener = 'pedit'
clearjumps
execute opener 'README.md'
let expect = split(execute('jumps'), '\r\?\n')
%bwipeout! | clearjumps
execute printf('Gina show --opener=%s :README.md', opener)
Assert Equals(split(execute('jumps'), '\r\?\n'), expect)
End
It respects a native Vim's behavior for jumps for ':tabedit'
let opener = 'tabedit'
clearjumps
execute opener 'README.md'
let expect = split(execute('jumps'), '\r\?\n')
%bwipeout! | clearjumps
execute printf('Gina show --opener=%s :README.md', opener)
Assert Equals(split(execute('jumps'), '\r\?\n'), expect)
End
End
Context jumps without python
Before
if !exists(':clearjumps')
Skip This Vim does not have :clearjumps so skip.
endif
let g:gina#core#writer#use_python = 0
let g:gina#core#writer#use_python3 = 0
End
After
let g:gina#core#writer#use_python = 1
let g:gina#core#writer#use_python3 = 1
End
It respects a native Vim's behavior for jumps for ':edit'
let opener = 'edit'
clearjumps
execute opener 'README.md'
let expect = split(execute('jumps'), '\r\?\n')
%bwipeout! | clearjumps
execute printf('Gina show --opener=%s :README.md', opener)
Assert Equals(split(execute('jumps'), '\r\?\n'), expect)
End
It respects a native Vim's behavior for jumps for ':new'
let opener = 'new'
clearjumps
execute opener 'README.md'
let expect = split(execute('jumps'), '\r\?\n')
%bwipeout! | clearjumps
execute printf('Gina show --opener=%s :README.md', opener)
Assert Equals(split(execute('jumps'), '\r\?\n'), expect)
End
It respects a native Vim's behavior for jumps for ':pedit'
let opener = 'pedit'
clearjumps
execute opener 'README.md'
let expect = split(execute('jumps'), '\r\?\n')
%bwipeout! | clearjumps
execute printf('Gina show --opener=%s :README.md', opener)
Assert Equals(split(execute('jumps'), '\r\?\n'), expect)
End
It respects a native Vim's behavior for jumps for ':tabedit'
let opener = 'tabedit'
clearjumps
execute opener 'README.md'
let expect = split(execute('jumps'), '\r\?\n')
%bwipeout! | clearjumps
execute printf('Gina show --opener=%s :README.md', opener)
Assert Equals(split(execute('jumps'), '\r\?\n'), expect)
End
End
Context +cmd
Before
let filename = ':test/gina/_testdata/pluscmd.txt'
End
It starts at thel last line with "+"
execute 'Gina show +' filename
Assert Equals(line('.'), line('$'))
End
It starts at line {num} with "+{num}"
execute 'Gina show +10' filename
Assert Equals(line('.'), 10)
End
It starts at first line containig {pat} with "+/{pat}"
execute 'Gina show +/The\ following\ is' filename
Assert Equals(line('.'), 6)
End
It execute {command} after opening the new file with +{command}
execute 'Gina show +setlocal\ filetype=vim' filename
Assert Equals(&filetype, 'vim')
End
It is overwritten by --line option
execute 'Gina show +10 --line=20' filename
Assert Equals(line('.'), 20)
End
End
Context ++enc
It might be called with ++enc=utf-8
let encoding = encodings['utf-8']
execute 'edit' fnameescape(slit1.path(encoding.filename))
execute printf('GinaSync show ++enc=%s :', encoding.name)
Assert Equals(winnr('$'), 1)
" Focused buffer
Assert Equals(bufname('%'), printf('gina://%s:show/:%s', slit1.refname, encoding.filename))
Assert Equals(gina#core#meta#get('args').params.cmdarg, printf('++enc=%s ', encoding.name))
Assert Equals(&fileencoding, encoding.name)
Assert Equals(getline(1, '$'), [
\ 'Unix EOL',
\ 'árvíztűrő tükörfúrógép',
\ 'ÁRVÍZTŰRŐ TÜKÖRFÚRÓGÉP',
\])
GinaSync show :
Assert Equals(getline(1, '$'), [
\ 'Unix EOL',
\ 'árvíztűrő tükörfúrógép',
\ 'ÁRVÍZTŰRŐ TÜKÖRFÚRÓGÉP',
\])
End
It might be called with ++enc=euc-jp
let encoding = encodings['euc-jp']
execute 'edit' fnameescape(slit1.path(encoding.filename))
execute printf('GinaSync show ++enc=%s :', encoding.name)
Assert Equals(winnr('$'), 1)
" Focused buffer
Assert Equals(bufname('%'), printf('gina://%s:show/:%s', slit1.refname, encoding.filename))
Assert Equals(gina#core#meta#get('args').params.cmdarg, printf('++enc=%s ', encoding.name))
Assert Equals(&fileencoding, encoding.name)
Assert Equals(getline(1, '$'), [
\ 'Unix EOL',
\ 'こんにちわ コンニチワ',
\ '今日和 コンニチワ',
\])
GinaSync show :
Assert Equals(getline(1, '$'), [
\ 'Unix EOL',
\ 'こんにちわ コンニチワ',
\ '今日和 コンニチワ',
\])
End
It might be called with ++enc=sjis
let encoding = encodings['sjis']
execute 'edit' fnameescape(slit1.path(encoding.filename))
execute printf('GinaSync show ++enc=%s :', encoding.name)
Assert Equals(winnr('$'), 1)
" Focused buffer
Assert Equals(bufname('%'), printf('gina://%s:show/:%s', slit1.refname, encoding.filename))
Assert Equals(gina#core#meta#get('args').params.cmdarg, printf('++enc=%s ', encoding.name))
Assert Equals(&fileencoding, encoding.name)
Assert Equals(getline(1, '$'), [
\ 'Unix EOL',
\ 'こんにちわ コンニチワ',
\ '今日和 コンニチワ',
\])
GinaSync show :
Assert Equals(getline(1, '$'), [
\ 'Unix EOL',
\ 'こんにちわ コンニチワ',
\ '今日和 コンニチワ',
\])
End
It might be called with ++enc=cp932
let encoding = encodings['cp932']
execute 'edit' fnameescape(slit1.path(encoding.filename))
execute printf('GinaSync show ++enc=%s :', encoding.name)
Assert Equals(winnr('$'), 1)
" Focused buffer
Assert Equals(bufname('%'), printf('gina://%s:show/:%s', slit1.refname, encoding.filename))
Assert Equals(gina#core#meta#get('args').params.cmdarg, printf('++enc=%s ', encoding.name))
Assert Equals(&fileencoding, encoding.name)
Assert Equals(getline(1, '$'), [
\ 'Unix EOL',
\ 'こんにちわ コンニチワ',
\ '今日和 コンニチワ',
\])
GinaSync show :
Assert Equals(getline(1, '$'), [
\ 'Unix EOL',
\ 'こんにちわ コンニチワ',
\ '今日和 コンニチワ',
\])
End
It might be called with ++enc=cp1250
let encoding = encodings['cp1250']
execute 'edit' fnameescape(slit1.path(encoding.filename))
execute printf('GinaSync show ++enc=%s :', encoding.name)
Assert Equals(winnr('$'), 1)
" Focused buffer
Assert Equals(bufname('%'), printf('gina://%s:show/:%s', slit1.refname, encoding.filename))
Assert Equals(gina#core#meta#get('args').params.cmdarg, printf('++enc=%s ', encoding.name))
Assert Equals(&fileencoding, encoding.name)
Assert Equals(getline(1, '$'), [
\ 'Unix EOL',
\ 'árvíztűrő tükörfúrógép',
\ 'ÁRVÍZTŰRŐ TÜKÖRFÚRÓGÉP',
\])
GinaSync show :
Assert Equals(getline(1, '$'), [
\ 'Unix EOL',
\ 'árvíztűrő tükörfúrógép',
\ 'ÁRVÍZTŰRŐ TÜKÖRFÚRÓGÉP',
\])
End
End
End
End