Initial checkin
This commit is contained in:
@@ -0,0 +1,4 @@
|
||||
if exists('$THEMIS_PROFILE')
|
||||
execute 'profile' 'start' $THEMIS_PROFILE
|
||||
profile! file ./autoload/*
|
||||
endif
|
||||
@@ -0,0 +1,109 @@
|
||||
let s:suite = themis#suite('Test for nerdtree-git-plugin')
|
||||
let s:assert = themis#helper('assert')
|
||||
call themis#helper('command').with(s:)
|
||||
|
||||
function! s:suite.Initializing() abort
|
||||
NERDTreeFocus
|
||||
call s:assert.exists('g:NERDTree')
|
||||
call s:assert.exists('g:loaded_nerdtree_git_status')
|
||||
call g:NERDTree.CursorToTreeWin()
|
||||
call s:assert.exists('b:NERDTree')
|
||||
endfunction
|
||||
|
||||
function! s:suite.BuildGitWorkdirCommand() abort
|
||||
let l:cmd = gitstatus#util#BuildGitWorkdirCommand('/workdir', {})
|
||||
call s:assert.equal(l:cmd, ['git', '-C', '/workdir', 'rev-parse', '--show-toplevel'])
|
||||
|
||||
let l:cmd = gitstatus#util#BuildGitWorkdirCommand('/workdir', {'NERDTreeGitStatusGitBinPath': '/path/to/git'})
|
||||
call s:assert.equal(l:cmd, ['/path/to/git', '-C', '/workdir', 'rev-parse', '--show-toplevel'])
|
||||
endfunction
|
||||
|
||||
function! s:suite.BuildGitStatusCommand() abort
|
||||
let l:cmd = gitstatus#util#BuildGitStatusCommand('/workdir', {})
|
||||
call s:assert.equal(l:cmd, ['git', '-C', '/workdir', 'status', '--porcelain=v2', '-z'])
|
||||
|
||||
let l:cmd = gitstatus#util#BuildGitStatusCommand('/workdir', {
|
||||
\ 'NERDTreeGitStatusPorcelainVersion': 1
|
||||
\ })
|
||||
call s:assert.equal(l:cmd, ['git', '-C', '/workdir', 'status', '--porcelain', '-z'])
|
||||
|
||||
let l:cmd = gitstatus#util#BuildGitStatusCommand('/workdir', {
|
||||
\ 'NERDTreeGitStatusUntrackedFilesMode': 'all'
|
||||
\ })
|
||||
call s:assert.equal(l:cmd, ['git', '-C', '/workdir', 'status', '--porcelain=v2', '-z', '--untracked-files=all'])
|
||||
|
||||
let l:cmd = gitstatus#util#BuildGitStatusCommand('/workdir', {
|
||||
\ 'NERDTreeGitStatusShowIgnored': 1
|
||||
\ })
|
||||
call s:assert.equal(l:cmd, ['git', '-C', '/workdir', 'status', '--porcelain=v2', '-z', '--ignored=traditional'])
|
||||
|
||||
let l:cmd = gitstatus#util#BuildGitStatusCommand('/workdir', {
|
||||
\ 'NERDTreeGitStatusShowIgnored': 0
|
||||
\ })
|
||||
call s:assert.equal(l:cmd, ['git', '-C', '/workdir', 'status', '--porcelain=v2', '-z'])
|
||||
|
||||
let l:cmd = gitstatus#util#BuildGitStatusCommand('/workdir', {
|
||||
\ 'NERDTreeGitStatusIgnoreSubmodules': 'dirty'
|
||||
\ })
|
||||
call s:assert.equal(l:cmd, ['git', '-C', '/workdir', 'status', '--porcelain=v2', '-z', '--ignore-submodules=dirty'])
|
||||
|
||||
let l:cmd = gitstatus#util#BuildGitStatusCommand('/workdir', {
|
||||
\ 'NERDTreeGitStatusPorcelainVersion': 1,
|
||||
\ 'NERDTreeGitStatusUntrackedFilesMode': 'all',
|
||||
\ 'NERDTreeGitStatusShowIgnored': 1,
|
||||
\ 'NERDTreeGitStatusIgnoreSubmodules': 'dirty'
|
||||
\ })
|
||||
call s:assert.equal(l:cmd, ['git', '-C', '/workdir', 'status', '--porcelain', '-z',
|
||||
\ '--untracked-files=all',
|
||||
\ '--ignored=traditional',
|
||||
\ '--ignore-submodules=dirty'])
|
||||
endfunction
|
||||
|
||||
function! s:suite.Logger() abort
|
||||
let l:logger = gitstatus#log#NewLogger(1) " info
|
||||
let l:messages = execute('messages')
|
||||
|
||||
call l:logger.debug('debug')
|
||||
call s:assert.equal(execute('messages'), l:messages)
|
||||
|
||||
call l:logger.error('error')
|
||||
call s:assert.equal(execute('messages'), l:messages . "\n[nerdtree-git-status] error")
|
||||
endfunction
|
||||
|
||||
function! s:suite.CustomIndicator() abort
|
||||
let g:NERDTreeGitStatusIndicatorMapCustom = {'Untracked': '~'}
|
||||
|
||||
let l:staged = gitstatus#getIndicator('Staged')
|
||||
|
||||
call s:assert.equal(gitstatus#getIndicator('Staged'), l:staged)
|
||||
call s:assert.equal(gitstatus#getIndicator('Untracked'), '~')
|
||||
|
||||
" Vim(return):E716: Key not present in Dictionary
|
||||
Throws /E716/ gitstatus#getIndicator('no such status')
|
||||
endfunction
|
||||
|
||||
function! s:suite.UpdateParentDirsStatus() abort
|
||||
let l:opts = {'NERDTreeGitStatusDirDirtyOnly': 1}
|
||||
let l:root = '/root'
|
||||
let l:cache = {}
|
||||
let l:pathStr = '/root/dir1/dir2/dir3'
|
||||
let l:cache[l:pathStr] = 'Untracked'
|
||||
call gitstatus#util#UpdateParentDirsStatus(l:cache, l:root, l:pathStr, 'Untracked', l:opts)
|
||||
call s:assert.equal({'/root/dir1': 'Dirty', '/root/dir1/dir2': 'Dirty', '/root/dir1/dir2/dir3': 'Untracked'}, l:cache)
|
||||
|
||||
let l:pathStr = '/root/dir1/dir2/file0'
|
||||
let l:cache[l:pathStr] = 'Staged'
|
||||
call gitstatus#util#UpdateParentDirsStatus(l:cache, l:root, l:pathStr, 'Staged', l:opts)
|
||||
call s:assert.equal({'/root/dir1': 'Dirty', '/root/dir1/dir2': 'Dirty', '/root/dir1/dir2/dir3': 'Untracked', '/root/dir1/dir2/file0': 'Staged'}, l:cache)
|
||||
|
||||
let l:opts = {'NERDTreeGitStatusDirDirtyOnly': 0}
|
||||
let l:cache = {}
|
||||
let l:pathStr = '/root/dir1/dir2/dir3'
|
||||
let l:cache[l:pathStr] = 'Untracked'
|
||||
call gitstatus#util#UpdateParentDirsStatus(l:cache, l:root, l:pathStr, 'Untracked', l:opts)
|
||||
call s:assert.equal({'/root/dir1': 'Untracked', '/root/dir1/dir2': 'Untracked', '/root/dir1/dir2/dir3': 'Untracked'}, l:cache)
|
||||
|
||||
let l:cache['/root/dir1/file1'] = 'Staged'
|
||||
call gitstatus#util#UpdateParentDirsStatus(l:cache, l:root, '/root/dir1/file1', 'Staged', l:opts)
|
||||
call s:assert.equal({'/root/dir1': 'Dirty','/root/dir1/file1': 'Staged', '/root/dir1/dir2': 'Untracked', '/root/dir1/dir2/dir3': 'Untracked'}, l:cache)
|
||||
endfunction
|
||||
Reference in New Issue
Block a user