patch 8.2.0203: :helptags and some other functionality not tested

Problem:    :helptags and some other functionality not tested.
Solution:   Add more tests. (Yegappan Lakshmanan, closes #5567)
diff --git a/src/testdir/test_excmd.vim b/src/testdir/test_excmd.vim
index 37cc24c..6174e66 100644
--- a/src/testdir/test_excmd.vim
+++ b/src/testdir/test_excmd.vim
@@ -1,5 +1,7 @@
 " Tests for various Ex commands.
 
+source check.vim
+
 func Test_ex_delete()
   new
   call setline(1, ['a', 'b', 'c'])
@@ -169,4 +171,74 @@
   close!
 endfunc
 
+" Test for the :language command
+func Test_language_cmd()
+  CheckFeature multi_lang
+
+  call assert_fails('language ctype non_existing_lang', 'E197:')
+  call assert_fails('language time non_existing_lang', 'E197:')
+endfunc
+
+" Test for the :confirm command dialog
+func Test_confirm_cmd()
+  CheckNotGui
+  CheckRunVimInTerminal
+
+  call writefile(['foo1'], 'foo')
+  call writefile(['bar1'], 'bar')
+
+  " Test for saving all the modified buffers
+  let buf = RunVimInTerminal('', {'rows': 20})
+  call term_sendkeys(buf, ":set nomore\n")
+  call term_sendkeys(buf, ":new foo\n")
+  call term_sendkeys(buf, ":call setline(1, 'foo2')\n")
+  call term_sendkeys(buf, ":new bar\n")
+  call term_sendkeys(buf, ":call setline(1, 'bar2')\n")
+  call term_sendkeys(buf, ":wincmd b\n")
+  call term_sendkeys(buf, ":confirm qall\n")
+  call WaitForAssert({-> assert_match('\[Y\]es, (N)o, Save (A)ll, (D)iscard All, (C)ancel: ', term_getline(buf, 20))}, 1000)
+  call term_sendkeys(buf, "A")
+  call StopVimInTerminal(buf)
+
+  call assert_equal(['foo2'], readfile('foo'))
+  call assert_equal(['bar2'], readfile('bar'))
+
+  " Test for discarding all the changes to modified buffers
+  let buf = RunVimInTerminal('', {'rows': 20})
+  call term_sendkeys(buf, ":set nomore\n")
+  call term_sendkeys(buf, ":new foo\n")
+  call term_sendkeys(buf, ":call setline(1, 'foo3')\n")
+  call term_sendkeys(buf, ":new bar\n")
+  call term_sendkeys(buf, ":call setline(1, 'bar3')\n")
+  call term_sendkeys(buf, ":wincmd b\n")
+  call term_sendkeys(buf, ":confirm qall\n")
+  call WaitForAssert({-> assert_match('\[Y\]es, (N)o, Save (A)ll, (D)iscard All, (C)ancel: ', term_getline(buf, 20))}, 1000)
+  call term_sendkeys(buf, "D")
+  call StopVimInTerminal(buf)
+
+  call assert_equal(['foo2'], readfile('foo'))
+  call assert_equal(['bar2'], readfile('bar'))
+
+  " Test for saving and discarding changes to some buffers
+  let buf = RunVimInTerminal('', {'rows': 20})
+  call term_sendkeys(buf, ":set nomore\n")
+  call term_sendkeys(buf, ":new foo\n")
+  call term_sendkeys(buf, ":call setline(1, 'foo4')\n")
+  call term_sendkeys(buf, ":new bar\n")
+  call term_sendkeys(buf, ":call setline(1, 'bar4')\n")
+  call term_sendkeys(buf, ":wincmd b\n")
+  call term_sendkeys(buf, ":confirm qall\n")
+  call WaitForAssert({-> assert_match('\[Y\]es, (N)o, Save (A)ll, (D)iscard All, (C)ancel: ', term_getline(buf, 20))}, 1000)
+  call term_sendkeys(buf, "N")
+  call WaitForAssert({-> assert_match('\[Y\]es, (N)o, (C)ancel: ', term_getline(buf, 20))}, 1000)
+  call term_sendkeys(buf, "Y")
+  call StopVimInTerminal(buf)
+
+  call assert_equal(['foo4'], readfile('foo'))
+  call assert_equal(['bar2'], readfile('bar'))
+
+  call delete('foo')
+  call delete('bar')
+endfunc
+
 " vim: shiftwidth=2 sts=2 expandtab