neovim

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

show_spec.lua (6326B)


      1 local t = require('test.testutil')
      2 local n = require('test.functional.testnvim')()
      3 local Screen = require('test.functional.ui.screen')
      4 
      5 local clear = n.clear
      6 local command = n.command
      7 local dedent = t.dedent
      8 local eq = t.eq
      9 local fn = n.fn
     10 local eval = n.eval
     11 local exec = n.exec
     12 local feed = n.feed
     13 
     14 describe(':autocmd', function()
     15  before_each(function()
     16    clear({ '-u', 'NONE' })
     17  end)
     18 
     19  it('should not segfault when you just do autocmd', function()
     20    command ':autocmd'
     21  end)
     22 
     23  it('should filter based on ++once', function()
     24    command 'autocmd! BufEnter'
     25    command "autocmd BufEnter * :echo 'Hello'"
     26    command [[augroup TestingOne]]
     27    command [[  autocmd BufEnter * :echo "Line 1"]]
     28    command [[  autocmd BufEnter * :echo "Line 2"]]
     29    command [[augroup END]]
     30 
     31    eq(
     32      dedent([[
     33 
     34       --- Autocommands ---
     35       BufEnter
     36           *         :echo 'Hello'
     37       TestingOne  BufEnter
     38           *         :echo "Line 1"
     39                     :echo "Line 2"]]),
     40      fn.execute('autocmd BufEnter')
     41    )
     42  end)
     43 
     44  it('should not show group information if interrupted', function()
     45    local screen = Screen.new(50, 6)
     46    screen:add_extra_attr_ids {
     47      [100] = { foreground = Screen.colors.Magenta, bold = true },
     48    }
     49    exec([[
     50      set more
     51      autocmd! BufEnter
     52      augroup test_1
     53        autocmd BufEnter A echo 'A'
     54        autocmd BufEnter B echo 'B'
     55        autocmd BufEnter C echo 'C'
     56        autocmd BufEnter D echo 'D'
     57        autocmd BufEnter E echo 'E'
     58        autocmd BufEnter F echo 'F'
     59      augroup END
     60      autocmd! BufLeave
     61      augroup test_1
     62        autocmd BufLeave A echo 'A'
     63        autocmd BufLeave B echo 'B'
     64        autocmd BufLeave C echo 'C'
     65        autocmd BufLeave D echo 'D'
     66        autocmd BufLeave E echo 'E'
     67        autocmd BufLeave F echo 'F'
     68      augroup END
     69    ]])
     70    feed(':autocmd<CR>')
     71    screen:expect([[
     72      :autocmd                                          |
     73      {100:--- Autocommands ---}                              |
     74      {100:test_1}  {100:BufEnter}                                  |
     75          A         echo 'A'                            |
     76          B         echo 'B'                            |
     77      {6:-- More --}^                                        |
     78    ]])
     79    feed('q')
     80    screen:expect([[
     81      ^                                                  |
     82      {1:~                                                 }|*4
     83                                                        |
     84    ]])
     85  end)
     86 
     87  it('should not show group information for deleted pattern', function()
     88    exec([[
     89      autocmd! BufEnter
     90      augroup test_1
     91        autocmd BufEnter A echo 'A'
     92        autocmd BufEnter B echo 'B'
     93        autocmd BufEnter C echo 'C'
     94      augroup END
     95      augroup test_2
     96        autocmd BufEnter foo echo 'foo'
     97      augroup END
     98      augroup test_3
     99        autocmd BufEnter D echo 'D'
    100        autocmd BufEnter E echo 'E'
    101        autocmd BufEnter F echo 'F'
    102      augroup END
    103 
    104      func Func()
    105        autocmd! test_2 BufEnter
    106        let g:output = execute('autocmd BufEnter')
    107      endfunc
    108 
    109      autocmd User foo call Func()
    110      doautocmd User foo
    111    ]])
    112    eq(
    113      dedent([[
    114 
    115      --- Autocommands ---
    116      test_1  BufEnter
    117          A         echo 'A'
    118          B         echo 'B'
    119          C         echo 'C'
    120      test_3  BufEnter
    121          D         echo 'D'
    122          E         echo 'E'
    123          F         echo 'F']]),
    124      eval('g:output')
    125    )
    126  end)
    127 
    128  it('can filter by pattern #17973', function()
    129    exec([[
    130      autocmd! BufEnter
    131      autocmd! User
    132      augroup test_1
    133        autocmd BufEnter A echo "A1"
    134        autocmd BufEnter B echo "B1"
    135        autocmd User A echo "A1"
    136        autocmd User B echo "B1"
    137      augroup END
    138      augroup test_2
    139        autocmd BufEnter A echo "A2"
    140        autocmd BufEnter B echo "B2"
    141        autocmd User A echo "A2"
    142        autocmd User B echo "B2"
    143      augroup END
    144      augroup test_3
    145        autocmd BufEnter A echo "A3"
    146        autocmd BufEnter B echo "B3"
    147        autocmd User A echo "A3"
    148        autocmd User B echo "B3"
    149      augroup END
    150    ]])
    151    eq(
    152      dedent([[
    153 
    154      --- Autocommands ---
    155      test_1  User
    156          A         echo "A1"
    157      test_2  User
    158          A         echo "A2"
    159      test_3  User
    160          A         echo "A3"]]),
    161      fn.execute('autocmd User A')
    162    )
    163    eq(
    164      dedent([[
    165 
    166      --- Autocommands ---
    167      test_1  BufEnter
    168          B         echo "B1"
    169      test_2  BufEnter
    170          B         echo "B2"
    171      test_3  BufEnter
    172          B         echo "B3"
    173      test_1  User
    174          B         echo "B1"
    175      test_2  User
    176          B         echo "B2"
    177      test_3  User
    178          B         echo "B3"]]),
    179      fn.execute('autocmd * B')
    180    )
    181    eq(
    182      dedent([[
    183 
    184      --- Autocommands ---
    185      test_3  BufEnter
    186          B         echo "B3"
    187      test_3  User
    188          B         echo "B3"]]),
    189      fn.execute('autocmd test_3 * B')
    190    )
    191    eq(
    192      dedent([[
    193 
    194      --- Autocommands ---]]),
    195      fn.execute('autocmd * ,')
    196    )
    197    eq(
    198      dedent([[
    199 
    200      --- Autocommands ---]]),
    201      fn.execute('autocmd * ,,,')
    202    )
    203  end)
    204 
    205  it('should skip consecutive patterns', function()
    206    exec([[
    207      autocmd! BufEnter
    208      augroup test_1
    209        autocmd BufEnter A echo 'A'
    210        autocmd BufEnter A echo 'B'
    211        autocmd BufEnter A echo 'C'
    212        autocmd BufEnter B echo 'D'
    213        autocmd BufEnter B echo 'E'
    214        autocmd BufEnter B echo 'F'
    215      augroup END
    216      augroup test_2
    217        autocmd BufEnter C echo 'A'
    218        autocmd BufEnter C echo 'B'
    219        autocmd BufEnter C echo 'C'
    220        autocmd BufEnter D echo 'D'
    221        autocmd BufEnter D echo 'E'
    222        autocmd BufEnter D echo 'F'
    223      augroup END
    224 
    225      let g:output = execute('autocmd BufEnter')
    226    ]])
    227    eq(
    228      dedent([[
    229 
    230      --- Autocommands ---
    231      test_1  BufEnter
    232          A         echo 'A'
    233                    echo 'B'
    234                    echo 'C'
    235          B         echo 'D'
    236                    echo 'E'
    237                    echo 'F'
    238      test_2  BufEnter
    239          C         echo 'A'
    240                    echo 'B'
    241                    echo 'C'
    242          D         echo 'D'
    243                    echo 'E'
    244                    echo 'F']]),
    245      eval('g:output')
    246    )
    247  end)
    248 end)