031_close_commands_spec.lua (3278B)
1 -- Test for commands that close windows and/or buffers 2 -- :quit 3 -- :close 4 -- :hide 5 -- :only 6 -- :sall 7 -- :all 8 -- :ball 9 -- :buf 10 -- :edit 11 12 local n = require('test.functional.testnvim')() 13 14 local feed = n.feed 15 local clear = n.clear 16 local source = n.source 17 local insert = n.insert 18 local expect = n.expect 19 local feed_command = n.feed_command 20 local expect_exit = n.expect_exit 21 22 describe('Commands that close windows and/or buffers', function() 23 local function cleanup() 24 os.remove('Xtest1') 25 os.remove('Xtest2') 26 os.remove('Xtest3') 27 end 28 setup(function() 29 cleanup() 30 clear() 31 end) 32 teardown(function() 33 cleanup() 34 end) 35 36 it('is working', function() 37 insert('testtext') 38 39 feed('GA 1<Esc>:$w! Xtest1<CR>') 40 feed('$r2:$w! Xtest2<CR>') 41 feed('$r3:$w! Xtest3<CR>') 42 feed_command('n! Xtest1 Xtest2') 43 feed('A 1<Esc>:set hidden<CR>') 44 45 -- Test for working :n when hidden set 46 feed_command('n') 47 expect('testtext 2') 48 49 -- Test for failing :rew when hidden not set 50 feed_command('set nohidden') 51 feed('A 2<Esc>:rew<CR>') 52 expect('testtext 2 2') 53 54 -- Test for working :rew when hidden set 55 feed_command('set hidden') 56 feed_command('rew') 57 expect('testtext 1 1') 58 59 -- Test for :all keeping a buffer when it's modified 60 feed_command('set nohidden') 61 feed('A 1<Esc>:sp<CR>') 62 feed_command('n Xtest2 Xtest3') 63 feed_command('all') 64 feed_command('1wincmd w') 65 expect('testtext 1 1 1') 66 67 -- Test abandoning changed buffer, should be unloaded even when 'hidden' set 68 feed_command('set hidden') 69 feed('A 1<Esc>:q!<CR>') 70 expect('testtext 2 2') 71 feed_command('unhide') 72 expect('testtext 2 2') 73 74 -- Test ":hide" hides anyway when 'hidden' not set 75 feed_command('set nohidden') 76 feed('A 2<Esc>:hide<CR>') 77 expect('testtext 3') 78 79 -- Test ":edit" failing in modified buffer when 'hidden' not set 80 feed('A 3<Esc>:e Xtest1<CR>') 81 expect('testtext 3 3') 82 83 -- Test ":edit" working in modified buffer when 'hidden' set 84 feed_command('set hidden') 85 feed_command('e Xtest1') 86 expect('testtext 1') 87 88 -- Test ":close" not hiding when 'hidden' not set in modified buffer 89 feed_command('sp Xtest3') 90 feed_command('set nohidden') 91 feed('A 3<Esc>:close<CR>') 92 expect('testtext 3 3 3') 93 94 -- Test ":close!" does hide when 'hidden' not set in modified buffer 95 feed('A 3<Esc>:close!<CR>') 96 feed_command('set nohidden') 97 expect('testtext 1') 98 99 -- Test ":all!" hides changed buffer 100 feed_command('sp Xtest4') 101 feed('GA 4<Esc>:all!<CR>') 102 feed_command('1wincmd w') 103 expect('testtext 2 2 2') 104 105 -- Test ":q!" and hidden buffer. 106 feed_command('bw! Xtest1 Xtest2 Xtest3 Xtest4') 107 feed_command('sp Xtest1') 108 feed_command('wincmd w') 109 feed_command('bw!') 110 feed_command('set modified') 111 feed_command('bot sp Xtest2') 112 feed_command('set modified') 113 feed_command('bot sp Xtest3') 114 feed_command('set modified') 115 feed_command('wincmd t') 116 feed_command('hide') 117 feed_command('q!') 118 expect('testtext 3') 119 feed_command('q!') 120 feed('<CR>') 121 expect('testtext 1') 122 expect_exit( 123 source, 124 [[ 125 q! 126 " Now nvim should have exited 127 throw "Oh, Not finished yet."]] 128 ) 129 end) 130 end)