Files
Ingo Karkat a4c8649ee3 ingo#fs#path#split#PathAndName(): Handle special cases and add tests
There are unexpected results with "." and "..", based on how fnamemodify() works. Add a conditional to handle these, and document this through unit tests.
2020-03-03 20:03:39 +01:00

30 lines
2.1 KiB
VimL

" Test splitting filespec into path and name.
call vimtest#StartTap()
call vimtap#Plan(20)
call vimtap#Is(ingo#fs#path#split#PathAndName(''), ['./', ''], 'split empty filespec')
call vimtap#Is(ingo#fs#path#split#PathAndName('./foo.txt'), ['./', 'foo.txt'], 'split ./foo.txt')
call vimtap#Is(ingo#fs#path#split#PathAndName('../foo.txt'), ['../', 'foo.txt'], 'split ../foo.txt')
call vimtap#Is(ingo#fs#path#split#PathAndName('./bar/foo.txt'), ['./bar/', 'foo.txt'], 'split ./bar/foo.txt')
call vimtap#Is(ingo#fs#path#split#PathAndName('/bar'), ['/', 'bar'], 'split /bar')
call vimtap#Is(ingo#fs#path#split#PathAndName('/bar/'), ['/bar/', ''], 'split /bar/')
call vimtap#Is(ingo#fs#path#split#PathAndName('/bar/foo.txt'), ['/bar/', 'foo.txt'], 'split /bar/foo.txt')
call vimtap#Is(ingo#fs#path#split#PathAndName('bar/foo.txt'), ['bar/', 'foo.txt'], 'split bar/foo.txt')
call vimtap#Is(ingo#fs#path#split#PathAndName('bar/../foo.txt'), ['bar/../', 'foo.txt'], 'split bar/../foo.txt')
call vimtap#Is(ingo#fs#path#split#PathAndName('boo/bar/../foo.txt'), ['boo/bar/../', 'foo.txt'], 'split boo/bar/../foo.txt')
call vimtap#Is(ingo#fs#path#split#PathAndName('C:/bar/foo.txt'), ['C:/bar/', 'foo.txt'], 'split C:/bar/foo.txt')
call vimtap#Is(ingo#fs#path#split#PathAndName('C:/'), ['C:/', ''], 'split C:/')
call vimtap#Is(ingo#fs#path#split#PathAndName('/'), ['/', ''], 'split /')
call vimtap#Is(ingo#fs#path#split#PathAndName('..'), ['../', ''], 'split ..')
call vimtap#Is(ingo#fs#path#split#PathAndName('.'), ['./', ''], 'split .')
call vimtap#Is(ingo#fs#path#split#PathAndName('', 0), ['.', ''], 'split empty filespec without trailing separator')
call vimtap#Is(ingo#fs#path#split#PathAndName('/bar/foo.txt', 0), ['/bar', 'foo.txt'], 'split /bar/foo.txt without trailing separator')
call vimtap#Is(ingo#fs#path#split#PathAndName('/bar', 0), ['/', 'bar'], 'split /bar without trailing separator')
call vimtap#Is(ingo#fs#path#split#PathAndName('..', 0), ['..', ''], 'split .. without trailing separator')
call vimtap#Is(ingo#fs#path#split#PathAndName('.', 0), ['.', ''], 'split . without trailing separator')
call vimtest#Quit()