summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2022-01-13 22:05:09 +0000
committerBram Moolenaar <Bram@vim.org>2022-01-13 22:05:09 +0000
commit3e4fa3d7d37162cd08fc0c6e83f52fd323f63eba (patch)
tree69a8b9b5f02e2424d86a2671e53df5b07175413b
parentd9d2fd0aa33dd9f7460d6f1e403505a60f7ce2fc (diff)
patch 8.2.4087: cannot test items from an autoload script easilyv8.2.4087
Problem: Cannot test items from an autoload script easily. Solution: Add the "autoload" value for test_override().
-rw-r--r--runtime/doc/testing.txt16
-rw-r--r--src/globals.h1
-rw-r--r--src/testdir/test_vim9_import.vim36
-rw-r--r--src/testing.c2
-rw-r--r--src/version.c2
-rw-r--r--src/vim9script.c3
6 files changed, 53 insertions, 7 deletions
diff --git a/runtime/doc/testing.txt b/runtime/doc/testing.txt
index 44296f0e71..3ff1450653 100644
--- a/runtime/doc/testing.txt
+++ b/runtime/doc/testing.txt
@@ -188,23 +188,25 @@ test_override({name}, {val}) *test_override()*
to run tests. Only to be used for testing Vim!
The override is enabled when {val} is non-zero and removed
when {val} is zero.
- Current supported values for name are:
+ Current supported values for {name} are:
- name effect when {val} is non-zero ~
- redraw disable the redrawing() function
- redraw_flag ignore the RedrawingDisabled flag
+ {name} effect when {val} is non-zero ~
+ autoload `import autoload` will load the script right
+ away, not postponed until an item is used
char_avail disable the char_avail() function
- starting reset the "starting" variable, see below
nfa_fail makes the NFA regexp engine fail to force a
fallback to the old engine
no_query_mouse do not query the mouse position for "dec"
terminals
no_wait_return set the "no_wait_return" flag. Not restored
with "ALL".
- ui_delay time in msec to use in ui_delay(); overrules a
- wait time of up to 3 seconds for messages
+ redraw disable the redrawing() function
+ redraw_flag ignore the RedrawingDisabled flag
+ starting reset the "starting" variable, see below
term_props reset all terminal properties when the version
string is detected
+ ui_delay time in msec to use in ui_delay(); overrules a
+ wait time of up to 3 seconds for messages
uptime overrules sysinfo.uptime
ALL clear all overrides ({val} is not used)
diff --git a/src/globals.h b/src/globals.h
index f04b29e8b3..94da8e0c51 100644
--- a/src/globals.h
+++ b/src/globals.h
@@ -1643,6 +1643,7 @@ EXTERN int no_query_mouse_for_testing INIT(= FALSE);
EXTERN int ui_delay_for_testing INIT(= 0);
EXTERN int reset_term_props_on_termresponse INIT(= FALSE);
EXTERN long override_sysinfo_uptime INIT(= -1);
+EXTERN int override_autoload INIT(= FALSE);
EXTERN int in_free_unref_items INIT(= FALSE);
#endif
diff --git a/src/testdir/test_vim9_import.vim b/src/testdir/test_vim9_import.vim
index 553ef8fdcc..2e57fe2527 100644
--- a/src/testdir/test_vim9_import.vim
+++ b/src/testdir/test_vim9_import.vim
@@ -1288,6 +1288,42 @@ def Test_import_autoload_postponed()
&rtp = save_rtp
enddef
+def Test_import_autoload_override()
+ mkdir('Xdir/autoload', 'p')
+ var save_rtp = &rtp
+ exe 'set rtp^=' .. getcwd() .. '/Xdir'
+ test_override('autoload', 1)
+
+ var lines =<< trim END
+ vim9script autoload
+
+ g:loaded_override = 'true'
+ export var variable = 'bla'
+ export def Function(): string
+ return 'bla'
+ enddef
+ END
+ writefile(lines, 'Xdir/autoload/override.vim')
+
+ lines =<< trim END
+ vim9script
+
+ import autoload 'override.vim'
+ assert_equal('true', g:loaded_override)
+
+ def Tryit()
+ echo override.doesNotExist
+ enddef
+ defcompile
+ END
+ CheckScriptFailure(lines, 'E1048: Item not found in script: doesNotExist', 1)
+
+ test_override('autoload', 0)
+ unlet g:loaded_override
+ delete('Xdir', 'rf')
+ &rtp = save_rtp
+enddef
+
def Test_autoload_mapping()
mkdir('Xdir/autoload', 'p')
var save_rtp = &rtp
diff --git a/src/testing.c b/src/testing.c
index eef5e0d768..34826826fc 100644
--- a/src/testing.c
+++ b/src/testing.c
@@ -1055,6 +1055,8 @@ f_test_override(typval_T *argvars, typval_T *rettv UNUSED)
reset_term_props_on_termresponse = val;
else if (STRCMP(name, (char_u *)"uptime") == 0)
override_sysinfo_uptime = val;
+ else if (STRCMP(name, (char_u *)"autoload") == 0)
+ override_autoload = val;
else if (STRCMP(name, (char_u *)"ALL") == 0)
{
disable_char_avail_for_testing = FALSE;
diff --git a/src/version.c b/src/version.c
index 728d2b8a7f..782a64a115 100644
--- a/src/version.c
+++ b/src/version.c
@@ -751,6 +751,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 4087,
+/**/
4086,
/**/
4085,
diff --git a/src/vim9script.c b/src/vim9script.c
index baf2019f52..2038c78a08 100644
--- a/src/vim9script.c
+++ b/src/vim9script.c
@@ -496,6 +496,9 @@ handle_import(
if (si->sn_autoload_prefix == NULL)
si->sn_autoload_prefix = get_autoload_prefix(si);
res = OK;
+ if (override_autoload && si->sn_state == SN_STATE_NOT_LOADED)
+ // testing override: load autoload script right away
+ (void)do_source(si->sn_name, FALSE, DOSO_NONE, NULL);
}
else
res = FAIL;