comparison src/testdir/test_arglist.vim @ 30172:c684e9381495 v9.0.0422

patch 9.0.0422: not enough testing of the :all command Commit: https://github.com/vim/vim/commit/0dc2fd307ffc223cf010d1fdea6e3d5c4524d43c Author: Yegappan Lakshmanan <yegappan@yahoo.com> Date: Fri Sep 9 11:27:59 2022 +0100 patch 9.0.0422: not enough testing of the :all command Problem: Not enough testing of the :all command. Solution: Add more testing. (Yegappan Lakshmanan, closes https://github.com/vim/vim/issues/11091)
author Bram Moolenaar <Bram@vim.org>
date Fri, 09 Sep 2022 12:30:03 +0200
parents 0a50e536de81
children ac908e454519
comparison
equal deleted inserted replaced
30171:47dfebfa5b0d 30172:c684e9381495
608 au WinNew 0 n 0 608 au WinNew 0 n 0
609 call assert_fails("all", "E1156") 609 call assert_fails("all", "E1156")
610 au! * 610 au! *
611 endfunc 611 endfunc
612 612
613 " Test for the :all command
614 func Test_all_command()
615 %argdelete
616
617 " :all command should not close windows with files in the argument list,
618 " but can rearrange the windows.
619 args Xargnew1 Xargnew2
620 %bw!
621 edit Xargold1
622 split Xargnew1
623 let Xargnew1_winid = win_getid()
624 split Xargold2
625 split Xargnew2
626 let Xargnew2_winid = win_getid()
627 split Xargold3
628 all
629 call assert_equal(2, winnr('$'))
630 call assert_equal([Xargnew1_winid, Xargnew2_winid],
631 \ [win_getid(1), win_getid(2)])
632 call assert_equal([bufnr('Xargnew1'), bufnr('Xargnew2')],
633 \ [winbufnr(1), winbufnr(2)])
634
635 " :all command should close windows for files which are not in the
636 " argument list in the current tab page.
637 %bw!
638 edit Xargold1
639 split Xargold2
640 tabedit Xargold3
641 split Xargold4
642 tabedit Xargold5
643 tabfirst
644 all
645 call assert_equal(3, tabpagenr('$'))
646 call assert_equal([bufnr('Xargnew1'), bufnr('Xargnew2')], tabpagebuflist(1))
647 call assert_equal([bufnr('Xargold4'), bufnr('Xargold3')], tabpagebuflist(2))
648 call assert_equal([bufnr('Xargold5')], tabpagebuflist(3))
649
650 " :tab all command should close windows for files which are not in the
651 " argument list across all the tab pages.
652 %bw!
653 edit Xargold1
654 split Xargold2
655 tabedit Xargold3
656 split Xargold4
657 tabedit Xargold5
658 tabfirst
659 args Xargnew1 Xargnew2
660 tab all
661 call assert_equal(2, tabpagenr('$'))
662 call assert_equal([bufnr('Xargnew1')], tabpagebuflist(1))
663 call assert_equal([bufnr('Xargnew2')], tabpagebuflist(2))
664
665 " If a count is specified, then :all should open only that many windows.
666 %bw!
667 args Xargnew1 Xargnew2 Xargnew3 Xargnew4 Xargnew5
668 all 3
669 call assert_equal(3, winnr('$'))
670 call assert_equal([bufnr('Xargnew1'), bufnr('Xargnew2'), bufnr('Xargnew3')],
671 \ [winbufnr(1), winbufnr(2), winbufnr(3)])
672
673 " The :all command should not open more than 'tabpagemax' tab pages.
674 " If there are more files, then they should be opened in the last tab page.
675 %bw!
676 set tabpagemax=3
677 tab all
678 call assert_equal(3, tabpagenr('$'))
679 call assert_equal([bufnr('Xargnew1')], tabpagebuflist(1))
680 call assert_equal([bufnr('Xargnew2')], tabpagebuflist(2))
681 call assert_equal([bufnr('Xargnew3'), bufnr('Xargnew4'), bufnr('Xargnew5')],
682 \ tabpagebuflist(3))
683 set tabpagemax&
684
685 " Without the 'hidden' option, modified buffers should not be closed.
686 args Xargnew1 Xargnew2
687 %bw!
688 edit Xargtemp1
689 call setline(1, 'temp buffer 1')
690 split Xargtemp2
691 call setline(1, 'temp buffer 2')
692 all
693 call assert_equal(4, winnr('$'))
694 call assert_equal([bufnr('Xargtemp2'), bufnr('Xargtemp1'), bufnr('Xargnew1'),
695 \ bufnr('Xargnew2')],
696 \ [winbufnr(1), winbufnr(2), winbufnr(3), winbufnr(4)])
697
698 " With the 'hidden' option set, both modified and unmodified buffers in
699 " closed windows should be hidden.
700 set hidden
701 all
702 call assert_equal(2, winnr('$'))
703 call assert_equal([bufnr('Xargnew1'), bufnr('Xargnew2')],
704 \ [winbufnr(1), winbufnr(2)])
705 call assert_equal([1, 1, 0, 0], [getbufinfo('Xargtemp1')[0].hidden,
706 \ getbufinfo('Xargtemp2')[0].hidden,
707 \ getbufinfo('Xargnew1')[0].hidden,
708 \ getbufinfo('Xargnew2')[0].hidden])
709 set nohidden
710
711 " When 'winheight' is set to a large value, :all should open only one
712 " window.
713 args Xargnew1 Xargnew2 Xargnew3 Xargnew4 Xargnew5
714 %bw!
715 set winheight=9999
716 call assert_fails('all', 'E36:')
717 call assert_equal([1, bufnr('Xargnew1')], [winnr('$'), winbufnr(1)])
718 set winheight&
719
720 " When 'winwidth' is set to a large value, :vert all should open only one
721 " window.
722 %bw!
723 set winwidth=9999
724 call assert_fails('vert all', 'E36:')
725 call assert_equal([1, bufnr('Xargnew1')], [winnr('$'), winbufnr(1)])
726 set winwidth&
727
728 " empty argument list tests
729 %bw!
730 %argdelete
731 call assert_equal('', execute('args'))
732 all
733 call assert_equal(1, winnr('$'))
734
735 %argdelete
736 %bw!
737 endfunc
738
613 " vim: shiftwidth=2 sts=2 expandtab 739 " vim: shiftwidth=2 sts=2 expandtab