diff options
author | Bram Moolenaar <Bram@vim.org> | 2022-03-30 21:12:27 +0100 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2022-03-30 21:12:27 +0100 |
commit | c0ceeeb839b8c6bebd3a2abd1c07d40ec3c6edca (patch) | |
tree | 2f51e084f45dbe3437520d32f83e67fb9704aa6b /src/testdir/test_vim9_import.vim | |
parent | b4ad3b0deac12674a7773311890b48fd39c6807c (diff) |
patch 8.2.4650: "import autoload" only works with using 'runtimepath'v8.2.4650
Problem: "import autoload" only works with using 'runtimepath'.
Solution: Also support a relative and absolute file name.
Diffstat (limited to 'src/testdir/test_vim9_import.vim')
-rw-r--r-- | src/testdir/test_vim9_import.vim | 133 |
1 files changed, 131 insertions, 2 deletions
diff --git a/src/testdir/test_vim9_import.vim b/src/testdir/test_vim9_import.vim index 2ce825f2ba..b1e96c5ea3 100644 --- a/src/testdir/test_vim9_import.vim +++ b/src/testdir/test_vim9_import.vim @@ -840,6 +840,135 @@ def Test_use_autoload_import_in_fold_expression() &rtp = save_rtp enddef +def Test_autoload_import_relative() + var lines =<< trim END + vim9script + + g:loaded = 'yes' + export def RelFunc(): string + return 'relfunc' + enddef + def NotExported() + echo 'not' + enddef + + export var someText = 'some text' + var notexp = 'bad' + END + writefile(lines, 'XimportRel.vim') + writefile(lines, 'XimportRel2.vim') + writefile(lines, 'XimportRel3.vim') + + lines =<< trim END + vim9script + g:loaded = 'no' + import autoload './XimportRel.vim' + assert_equal('no', g:loaded) + + def AFunc(): string + var res = '' + res ..= XimportRel.RelFunc() + res ..= '/' + res ..= XimportRel.someText + XimportRel.someText = 'from AFunc' + return res + enddef + # script not loaded when compiling + defcompile + assert_equal('no', g:loaded) + + assert_equal('relfunc/some text', AFunc()) + assert_equal('yes', g:loaded) + unlet g:loaded + + assert_equal('from AFunc', XimportRel.someText) + XimportRel.someText = 'from script' + assert_equal('from script', XimportRel.someText) + END + v9.CheckScriptSuccess(lines) + + lines =<< trim END + vim9script + import autoload './XimportRel.vim' + echo XimportRel.NotExported() + END + v9.CheckScriptFailure(lines, 'E1049: Item not exported in script: NotExported', 3) + + lines =<< trim END + vim9script + import autoload './XimportRel.vim' + echo XimportRel.notexp + END + v9.CheckScriptFailure(lines, 'E1049: Item not exported in script: notexp', 3) + + lines =<< trim END + vim9script + import autoload './XimportRel.vim' + XimportRel.notexp = 'bad' + END + v9.CheckScriptFailure(lines, 'E1049: Item not exported in script: notexp', 3) + + lines =<< trim END + vim9script + import autoload './XimportRel.vim' + def Func() + echo XimportRel.NotExported() + enddef + Func() + END + v9.CheckScriptFailure(lines, 'E1049: Item not exported in script: NotExported', 1) + + lines =<< trim END + vim9script + import autoload './XimportRel.vim' + def Func() + echo XimportRel.notexp + enddef + Func() + END + v9.CheckScriptFailure(lines, 'E1049: Item not exported in script: notexp', 1) + + 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) + + # does not fail if the script wasn't loaded yet + g:loaded = 'no' + lines =<< trim END + vim9script + import autoload './XimportRel2.vim' + def Func() + echo XimportRel2.notexp + enddef + defcompile + END + v9.CheckScriptSuccess(lines) + assert_equal('no', g:loaded) + + # fails with a not loaded import + lines =<< trim END + vim9script + import autoload './XimportRel3.vim' + def Func() + XimportRel3.notexp = 'bad' + enddef + Func() + END + v9.CheckScriptFailure(lines, 'E1049: Item not exported in script: notexp', 1) + assert_equal('yes', g:loaded) + unlet g:loaded + + delete('XimportRel.vim') + delete('XimportRel2.vim') + delete('XimportRel3.vim') +enddef + func Test_import_in_diffexpr() CheckExecutable diff @@ -2379,13 +2508,13 @@ def Test_import_autoload_fails() vim9script import autoload './doesNotExist.vim' END - v9.CheckScriptFailure(lines, 'E1264:') + v9.CheckScriptSuccess(lines) lines =<< trim END vim9script import autoload '/dir/doesNotExist.vim' END - v9.CheckScriptFailure(lines, 'E1264:') + v9.CheckScriptSuccess(lines) lines =<< trim END vim9script |