neovim

Neovim text editor
git clone https://git.dasho.dev/neovim.git
Log | Files | Refs | README

fnamemodify_spec.lua (3236B)


      1 -- Test filename modifiers.
      2 
      3 local t = require('test.testutil')
      4 local n = require('test.functional.testnvim')()
      5 
      6 local clear, source = n.clear, n.source
      7 local call, eq, api = n.call, t.eq, n.api
      8 
      9 local function expected_empty()
     10  eq({}, api.nvim_get_vvar('errors'))
     11 end
     12 
     13 describe('filename modifiers', function()
     14  before_each(function()
     15    clear()
     16 
     17    source([=[
     18      func Test_fnamemodify()
     19        if has('win32')
     20          set shellslash
     21        else
     22          set shell=sh
     23        endif
     24        let tmpdir = resolve($TMPDIR)
     25        call assert_true(isdirectory(tmpdir))
     26        execute 'cd '. tmpdir
     27        let $HOME=fnamemodify('.', ':p:h:h:h')
     28        call assert_equal('/', fnamemodify('.', ':p')[-1:])
     29        call assert_equal(tmpdir[strchars(tmpdir) - 1], fnamemodify('.', ':p:h')[-1:])
     30        call assert_equal('t', fnamemodify('test.out', ':p')[-1:])
     31        call assert_equal('test.out', fnamemodify('test.out', ':.'))
     32        call assert_equal('../testdir/a', fnamemodify('../testdir/a', ':.'))
     33        call assert_equal(fnamemodify(tmpdir, ':~').'/test.out', fnamemodify('test.out', ':~'))
     34        call assert_equal(fnamemodify(tmpdir, ':~').'/../testdir/a', fnamemodify('../testdir/a', ':~'))
     35        call assert_equal('a', fnamemodify('../testdir/a', ':t'))
     36        call assert_equal('', fnamemodify('.', ':p:t'))
     37        call assert_equal('test.out', fnamemodify('test.out', ':p:t'))
     38        call assert_equal('out', fnamemodify('test.out', ':p:e'))
     39        call assert_equal('out', fnamemodify('test.out', ':p:t:e'))
     40        call assert_equal('abc.fb2.tar', fnamemodify('abc.fb2.tar.gz', ':r'))
     41        call assert_equal('abc.fb2', fnamemodify('abc.fb2.tar.gz', ':r:r'))
     42        call assert_equal('abc', fnamemodify('abc.fb2.tar.gz', ':r:r:r'))
     43        call assert_equal(tmpdir .'/abc.fb2', substitute(fnamemodify('abc.fb2.tar.gz', ':p:r:r'), '.*\(nvim/testdir/.*\)', '\1', ''))
     44        call assert_equal('gz', fnamemodify('abc.fb2.tar.gz', ':e'))
     45        call assert_equal('tar.gz', fnamemodify('abc.fb2.tar.gz', ':e:e'))
     46        call assert_equal('fb2.tar.gz', fnamemodify('abc.fb2.tar.gz', ':e:e:e'))
     47        call assert_equal('fb2.tar.gz', fnamemodify('abc.fb2.tar.gz', ':e:e:e:e'))
     48        call assert_equal('tar', fnamemodify('abc.fb2.tar.gz', ':e:e:r'))
     49        call assert_equal('''abc def''', fnamemodify('abc def', ':S'))
     50        call assert_equal('''abc" "def''', fnamemodify('abc" "def', ':S'))
     51        call assert_equal('''abc"%"def''', fnamemodify('abc"%"def', ':S'))
     52        call assert_equal('''abc''\'''' ''\''''def''', fnamemodify('abc'' ''def', ':S'))
     53        call assert_equal('''abc''\''''%''\''''def''', fnamemodify('abc''%''def', ':S'))
     54        new foo.txt
     55        call assert_equal(expand('%:r:S'), shellescape(expand('%:r')))
     56        call assert_equal('foo,''foo'',foo.txt', join([expand('%:r'), expand('%:r:S'), expand('%')], ','))
     57        quit
     58 
     59        call assert_equal("'abc\ndef'", fnamemodify("abc\ndef", ':S'))
     60        if executable('tcsh')
     61          set shell=tcsh
     62          call assert_equal("'abc\\\ndef'", fnamemodify("abc\ndef", ':S'))
     63        endif
     64      endfunc
     65    ]=])
     66  end)
     67 
     68  it('is working', function()
     69    call('Test_fnamemodify')
     70    expected_empty()
     71  end)
     72 end)