patch 9.1.1051: tests: no support for env variables when running Vim in terminal

Problem:  tests: no support for env variables when running Vim in
          terminal
Solution: support the "env" argument in RunVimInTerminal(),
          close swapfiles properly in test_termcodes,
          use CheckFeature in test_termencoding

Signed-off-by: Christian Brabandt <cb@256bit.org>
diff --git a/src/testdir/term_util.vim b/src/testdir/term_util.vim
index 1a06db7..67b21cb 100644
--- a/src/testdir/term_util.vim
+++ b/src/testdir/term_util.vim
@@ -57,6 +57,7 @@
 " "wait_for_ruler" - if zero then don't wait for ruler to show
 " "no_clean" - if non-zero then remove "--clean" from the command
 " "cmd"  - run any other command, e.g. "xxd" (used in xxd test)
+" "env"  - additional environment variables, e.g. $TERM variable
 func RunVimInTerminal(arguments, options)
   " If Vim doesn't exit a swap file remains, causing other tests to fail.
   " Remove it here.
@@ -109,6 +110,10 @@
 
   " Accept other options whose name starts with 'term_'.
   call extend(options, filter(copy(a:options), 'v:key =~# "^term_"'))
+  " Accept the env dict
+  if !empty(get(a:options, 'env', {}))
+    let options.env = get(a:options, 'env')
+  endif
 
   let buf = term_start(cmd, options)
 
diff --git a/src/testdir/test_termcodes.vim b/src/testdir/test_termcodes.vim
index 2b44b15..25034ed 100644
--- a/src/testdir/test_termcodes.vim
+++ b/src/testdir/test_termcodes.vim
@@ -301,7 +301,7 @@
   let &ttymouse = save_ttymouse
   let &term = save_term
   let &mouse = save_mouse
-  close!
+  bw!
 endfunc
 
 func Test_term_mouse_middle_click_insert_mode()
@@ -370,7 +370,7 @@
   let &term = save_term
   let &ttymouse = save_ttymouse
   call test_override('no_query_mouse', 0)
-  close!
+  bw!
 endfunc
 
 " Test for using the mouse to increase the height of the cmdline window
@@ -1051,7 +1051,7 @@
   let &ttymouse = save_ttymouse
   set mousetime& mousemodel&
   call test_override('no_query_mouse', 0)
-  close!
+  bw!
 endfunc
 
 func Test_xterm_mouse_click_in_fold_columns()
@@ -1276,7 +1276,7 @@
   let &term = save_term
   let &ttymouse = save_ttymouse
   call test_override('no_query_mouse', 0)
-  close!
+  bw!
 endfunc
 
 " Test for displaying the popup menu using the right mouse click
@@ -1311,7 +1311,7 @@
   let &ttymouse = save_ttymouse
   let &mousemodel = save_mousemodel
   call test_override('no_query_mouse', 0)
-  close!
+  bw!
 endfunc
 
 " Test for 'mousemodel' set to popup_setpos to move the cursor where the popup
@@ -1437,7 +1437,7 @@
   let &ttymouse = save_ttymouse
   let &mousemodel = save_mousemodel
   call test_override('no_query_mouse', 0)
-  close!
+  bw!
 endfunc
 
 " Test for searching for the word under the cursor using Shift-Right or
@@ -1476,7 +1476,7 @@
   let &term = save_term
   let &ttymouse = save_ttymouse
   call test_override('no_query_mouse', 0)
-  close!
+  bw!
 endfunc
 
 " Test for selecting an entry in the quickfix/location list window using the
@@ -2739,5 +2739,4 @@
   call assert_notequal(-1, index(output, 'builtin_dumb'))
 endfunc
 
-
 " vim: shiftwidth=2 sts=2 expandtab
diff --git a/src/testdir/test_termencoding.vim b/src/testdir/test_termencoding.vim
index de812ce..9b7f487 100644
--- a/src/testdir/test_termencoding.vim
+++ b/src/testdir/test_termencoding.vim
@@ -1,10 +1,10 @@
 " Test for setting 'encoding' to something else than the terminal uses, then
 " setting 'termencoding' to make it work.
 
+source check.vim
+
 " This only works with "iconv".
-if !has('iconv')
-  throw 'Skipped: iconv feature missing'
-endif
+CheckFeature iconv
 
 source screendump.vim
 if !CanRunVimInTerminal()
diff --git a/src/version.c b/src/version.c
index 53cecb3..235c4f3 100644
--- a/src/version.c
+++ b/src/version.c
@@ -705,6 +705,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1051,
+/**/
     1050,
 /**/
     1049,