]> git.ipfire.org Git - thirdparty/vim.git/commitdiff
patch 8.2.4678: Vim9: not all code is tested v8.2.4678
authorBram Moolenaar <Bram@vim.org>
Sun, 3 Apr 2022 20:11:34 +0000 (21:11 +0100)
committerBram Moolenaar <Bram@vim.org>
Sun, 3 Apr 2022 20:11:34 +0000 (21:11 +0100)
Problem:    Vim9: not all code is tested.
Solution:   Add a few more tests.

src/testdir/test_vim9_cmd.vim
src/testdir/test_vim9_import.vim
src/testdir/test_vim9_script.vim
src/version.c
src/vim9execute.c

index 56d3bf231b79eca662812db8f1cc8494f25bc62e..8dea71d5f542adbb01d570005f1b1926bdb640c9 100644 (file)
@@ -1538,6 +1538,14 @@ def Test_lockvar()
   d.a = 7
   assert_equal({a: 7, b: 5}, d)
 
+  caught = false
+  try
+    lockvar d.c
+  catch /E716/
+    caught = true
+  endtry
+  assert_true(caught)
+
   var lines =<< trim END
       vim9script
       g:bl = 0z1122
index 2c7e731006b73ddede47ab3c28c6e3f1c52162d4..5729d73e579a298a6bbae717a428e2a0c9df6a85 100644 (file)
@@ -858,6 +858,8 @@ def Test_autoload_import_relative()
   writefile(lines, 'XimportRel.vim')
   writefile(lines, 'XimportRel2.vim')
   writefile(lines, 'XimportRel3.vim')
+  writefile(lines, 'XimportRel4.vim')
+  writefile(lines, 'XimportRel5.vim')
 
   lines =<< trim END
       vim9script
@@ -928,17 +930,18 @@ def Test_autoload_import_relative()
   END
   v9.CheckScriptFailure(lines, 'E1049: Item not exported in script: notexp', 1)
 
+  # Same, script not imported before
   lines =<< trim END
       vim9script
-      import autoload './XimportRel.vim'
+      import autoload './XimportRel4.vim'
       def Func()
-        XimportRel.notexp = 'bad'
+        echo XimportRel4.notexp
       enddef
       Func()
   END
   v9.CheckScriptFailure(lines, 'E1049: Item not exported in script: notexp', 1)
 
-  # does not fail if the script wasn't loaded yet
+  # does not fail if the script wasn't loaded yet and only compiling
   g:loaded = 'no'
   lines =<< trim END
       vim9script
@@ -951,6 +954,16 @@ def Test_autoload_import_relative()
   v9.CheckScriptSuccess(lines)
   assert_equal('no', g:loaded)
 
+  lines =<< trim END
+      vim9script
+      import autoload './XimportRel.vim'
+      def Func()
+        XimportRel.notexp = 'bad'
+      enddef
+      Func()
+  END
+  v9.CheckScriptFailure(lines, 'E1049: Item not exported in script: notexp', 1)
+
   # fails with a not loaded import
   lines =<< trim END
       vim9script
@@ -964,9 +977,37 @@ def Test_autoload_import_relative()
   assert_equal('yes', g:loaded)
   unlet g:loaded
 
+  lines =<< trim END
+      vim9script
+      import autoload './XimportRel5.vim'
+      def Func()
+        XimportRel5.nosuchvar = 'bad'
+      enddef
+      Func()
+  END
+  v9.CheckScriptFailure(lines, 'E121: Undefined variable: nosuchvar', 1)
+  unlet g:loaded
+
+  # nasty: delete script after compiling function
+  writefile(['vim9script'], 'XimportRelDel.vim')
+  lines =<< trim END
+      vim9script
+
+      import autoload './XimportRelDel.vim'
+      def DoIt()
+        echo XimportRelDel.var
+      enddef
+      defcompile
+      delete('XimportRelDel.vim')
+      DoIt()
+  END
+  v9.CheckScriptFailure(lines, 'E456:')
+
   delete('XimportRel.vim')
   delete('XimportRel2.vim')
   delete('XimportRel3.vim')
+  delete('XimportRel4.vim')
+  delete('XimportRel5.vim')
 enddef
 
 def Test_autoload_import_relative_autoload_dir()
@@ -1576,10 +1617,10 @@ def Test_script_reload_from_function()
   var lines =<< trim END
       vim9script
 
-      if exists('g:loaded')
+      if exists('g:loadedThis')
         finish
       endif
-      g:loaded = 1
+      g:loadedThis = 1
       delcommand CallFunc
       command CallFunc Func()
       def Func()
@@ -1594,7 +1635,7 @@ def Test_script_reload_from_function()
 
   delete('XreloadFunc.vim')
   delcommand CallFunc
-  unlet g:loaded
+  unlet g:loadedThis
   unlet g:didTheFunc
 enddef
 
index 56842b326815e5cbf39583fd03520f2f0a78798b..02946a315c21c89fdccfeb521d5371def60e42ce 100644 (file)
@@ -2130,6 +2130,17 @@ def Test_for_loop()
       endfor
       assert_equal('', res)
 
+      total = 0
+      for c in null_list
+        total += 1
+      endfor
+      assert_equal(0, total)
+
+      for c in null_blob
+        total += 1
+      endfor
+      assert_equal(0, total)
+
       var foo: list<dict<any>> = [
               {a: 'Cat'}
             ]
index b2986d76b877a0f0ec3b7f348bc3218755f66588..22191c9976e282c4dbdade3e1589cc56ffa69c26 100644 (file)
@@ -750,6 +750,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    4678,
 /**/
     4677,
 /**/
index a6789b5999d052b62f61463850709c9f4ba85d94..483fe1e848b0c5d336f93f410ae21492b999b0f4 100644 (file)
@@ -2636,7 +2636,10 @@ exec_instructions(ectx_T *ectx)
                        SOURCING_LNUM = iptr->isn_lnum;
                        if (do_source(si->sn_name, FALSE, DOSO_NONE, NULL)
                                                                       == FAIL)
+                       {
+                           semsg(_(e_cant_open_file_str_2), si->sn_name);
                            goto on_error;
+                       }
                    }
                }
                break;