mirror of
https://github.com/SpaceVim/SpaceVim.git
synced 2025-02-03 12:40:05 +08:00
406 lines
14 KiB
Plaintext
406 lines
14 KiB
Plaintext
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
|