patch 9.1.1525: tests: testdir/ is a bit messy

Commit: 
https://github.com/vim/vim/commit/eb380b991c9d85f4622a27d1d35364615b7a71f4
Author: Christian Brabandt <c...@256bit.org>
Date:   Mon Jul 7 20:53:55 2025 +0200

    patch 9.1.1525: tests: testdir/ is a bit messy
    
    Problem:  tests: testdir is a bit messy
    Solution: move test scripts into testdir/util/ directory
    
    src/testdir/ has become a dumping ground mixing test cases with utility
    functions. Let's fix this by moving all utility functions into the
    testdir/util/ directory
    
    Also a few related changes had to be done:
    - Update Filelist
    - update README.txt and mention the new directory layout
    - fix shadowbuild by linking the util directory into the shadow dir
    
    closes: #17677
    
    Signed-off-by: Christian Brabandt <c...@256bit.org>

diff --git a/Filelist b/Filelist
index a598b22e9..79dabf2b1 100644
--- a/Filelist
+++ b/Filelist
@@ -184,64 +184,64 @@ SRC_ALL = \
                src/winclip.c \
                src/window.c \
                src/xxd/xxd.c \
-               src/testdir/gen_opt_test.vim \
-               src/testdir/README.txt \
-               src/testdir/Make_all.mak \
                src/testdir/*.in \
                src/testdir/*.py \
-               src/testdir/keycode_check.vim \
+               src/testdir/Make_all.mak \
+               src/testdir/README.txt \
+               src/testdir/commondumps.vim \
+               src/testdir/crash/* \
+               src/testdir/dumps/*.dump \
+               src/testdir/dumps/*.vim \
                src/testdir/keycode_check.json \
+               src/testdir/keycode_check.vim \
                src/testdir/lsan-suppress.txt \
-               src/testdir/sautest/autoload/*.vim \
-               src/testdir/testluaplugin/lua/testluaplugin/*.lua \
-               src/testdir/check.vim \
-               src/testdir/commondumps.vim \
-               src/testdir/gui_init.vim \
-               src/testdir/gui_preinit.vim \
-               src/testdir/mouse.vim \
-               src/testdir/runtest.vim \
-               src/testdir/screendump.vim \
-               src/testdir/setup.vim \
-               src/testdir/setup_gui.vim \
-               src/testdir/shared.vim \
-               src/testdir/vim9.vim \
-               src/testdir/script_util.vim \
-               src/testdir/summarize.vim \
-               src/testdir/term_util.vim \
-               src/testdir/view_util.vim \
-               src/testdir/viewdumps.vim \
-               src/testdir/test[0-9]*.ok \
-               src/testdir/test77a.ok \
-               src/testdir/test77a.com \
-               src/testdir/test_*.vim \
                src/testdir/python2/*.py \
                src/testdir/python3/*.py \
+               src/testdir/python_after/*.py \
+               src/testdir/python_before/*.py \
                src/testdir/pythonx/*.py \
                src/testdir/pythonx/topmodule/__init__.py \
                src/testdir/pythonx/topmodule/submodule/__init__.py \
                
src/testdir/pythonx/topmodule/submodule/subsubmodule/__init__.py \
                
src/testdir/pythonx/topmodule/submodule/subsubmodule/subsubsubmodule.py \
-               src/testdir/python_after/*.py \
-               src/testdir/python_before/*.py \
                src/testdir/pyxfile/*.py \
-               src/testdir/dumps/*.dump \
-               src/testdir/dumps/*.vim \
+               src/testdir/ru_RU/LC_MESSAGES/Makefile \
+               src/testdir/ru_RU/LC_MESSAGES/__PACKAGE__.mo \
+               src/testdir/ru_RU/LC_MESSAGES/__PACKAGE__.po \
+               src/testdir/runtest.vim \
                src/testdir/samples/*.html \
                src/testdir/samples/*.txt \
                src/testdir/samples/*.vim \
                src/testdir/samples/poc.zip \
-               src/testdir/samples/test000 \
                src/testdir/samples/test.zip \
+               src/testdir/samples/test000 \
                src/testdir/samples/test_undo.txt.undo \
                src/testdir/samples/testa.zip \
-               src/testdir/color_ramp.vim \
+               src/testdir/sautest/autoload/*.vim \
                src/testdir/silent.wav \
-               src/testdir/popupbounce.vim \
-               src/testdir/crash/* \
-               src/testdir/ru_RU/LC_MESSAGES/Makefile \
-               src/testdir/ru_RU/LC_MESSAGES/__PACKAGE__.po \
-               src/testdir/ru_RU/LC_MESSAGES/__PACKAGE__.mo \
-               src/testdir/window_manager.vim \
+               src/testdir/test77a.com \
+               src/testdir/test77a.ok \
+               src/testdir/test[0-9]*.ok \
+               src/testdir/test_*.vim \
+               src/testdir/testluaplugin/lua/testluaplugin/*.lua \
+               src/testdir/util/check.vim \
+               src/testdir/util/color_ramp.vim \
+               src/testdir/util/gen_opt_test.vim \
+               src/testdir/util/gui_init.vim \
+               src/testdir/util/gui_preinit.vim \
+               src/testdir/util/mouse.vim \
+               src/testdir/util/popupbounce.vim \
+               src/testdir/util/screendump.vim \
+               src/testdir/util/script_util.vim \
+               src/testdir/util/setup.vim \
+               src/testdir/util/setup_gui.vim \
+               src/testdir/util/shared.vim \
+               src/testdir/util/summarize.vim \
+               src/testdir/util/term_util.vim \
+               src/testdir/util/view_util.vim \
+               src/testdir/util/vim9.vim \
+               src/testdir/util/window_manager.vim \
+               src/testdir/viewdumps.vim \
                src/proto.h \
                src/protodef.h \
                src/proto/alloc.pro \
@@ -521,7 +521,7 @@ SRC_UNIX =  \
                src/proto/pty.pro \
                src/pty.c \
                src/testdir/Makefile \
-               src/testdir/unix.vim \
+               src/testdir/util/unix.vim \
                src/toolcheck \
                src/vim_icon.xbm \
                src/vim_mask.xbm \
@@ -615,7 +615,7 @@ SRC_DOS =   \
                src/testdir/Make_dos.mak \
                src/testdir/Make_mvc.mak \
                src/testdir/Make_ming.mak \
-               src/testdir/dos.vim \
+               src/testdir/util/dos.vim \
                src/uninstall.c \
                src/vim.rc \
                src/vim.manifest \
@@ -668,7 +668,7 @@ SRC_AMI =   \
                src/os_amiga.h \
                src/proto/os_amiga.pro \
                src/testdir/Make_amiga.mak \
-               src/testdir/amiga.vim \
+               src/testdir/util/amiga.vim \
                src/xxd/Make_amiga.mak \
 
 # Source files for Haiku (also in the extra archive).
@@ -699,7 +699,7 @@ SRC_VMS =   \
                src/os_vms_mms.c \
                src/proto/os_vms.pro \
                src/testdir/Make_vms.mms \
-               src/testdir/vms.vim \
+               src/testdir/util/vms.vim \
                src/xxd/Make_vms.mms \
                vimtutor.com \
 
diff --git a/runtime/syntax/testdir/runtest.vim 
b/runtime/syntax/testdir/runtest.vim
index 767510cb1..3d4b350d0 100644
--- a/runtime/syntax/testdir/runtest.vim
+++ b/runtime/syntax/testdir/runtest.vim
@@ -69,7 +69,8 @@ endif
 " Use the script for source code screendump testing.  It sources other scripts,
 " therefore we must "cd" there.
 cd ../../src/testdir
-source screendump.vim
+source util/screendump.vim
+source util/term_util.vim
 exe 'cd ' .. fnameescape(syntaxDir)
 
 " For these tests we need to be able to run terminal Vim with 256 colors.  On
diff --git a/src/Makefile b/src/Makefile
index 3f305752d..0cf9f8836 100644
--- a/src/Makefile
+++ b/src/Makefile
@@ -3022,6 +3022,7 @@ shadow:   runtime pixmaps
                                 ../../testdir/ru_RU \
                                 ../../testdir/sautest \
                                 ../../testdir/samples \
+                                ../../testdir/util \
                                 ../../testdir/dumps \
                                 ../../testdir/*.ok \
                                 ../../testdir/testluaplugin \
diff --git a/src/testdir/Make_amiga.mak b/src/testdir/Make_amiga.mak
index 843ea1e13..6ffc12dfc 100644
--- a/src/testdir/Make_amiga.mak
+++ b/src/testdir/Make_amiga.mak
@@ -21,7 +21,7 @@ clean:
 
 .in.out:
        copy $*.ok test.ok
-       $(VIMPROG) -u amiga.vim -U NONE --noplugin --not-a-term -s dotest.in 
$*.in
+       $(VIMPROG) -u util/amiga.vim -U NONE --noplugin --not-a-term -s 
dotest.in $*.in
        diff test.out $*.ok
        rename test.out $*.out
        -delete X#? ALL QUIET
diff --git a/src/testdir/Make_ming.mak b/src/testdir/Make_ming.mak
index 2ffe4025e..b11d2ea8e 100644
--- a/src/testdir/Make_ming.mak
+++ b/src/testdir/Make_ming.mak
@@ -46,7 +46,7 @@ report:
        @rem without the +eval feature test_result.log is a copy of test.log
        @if exist test.log ( copy /y test.log test_result.log > nul ) \
                else ( echo No failures reported > test_result.log )
-       $(VIMPROG) -u NONE $(COMMON_ARGS) -S summarize.vim messages
+       $(VIMPROG) -u NONE $(COMMON_ARGS) -S util\summarize.vim messages
        -if exist starttime del starttime
        @echo.
        @echo Test results:
@@ -105,7 +105,7 @@ tinytests: $(SCRIPTS_TINY_OUT)
 $(DOSTMP)/%.in : %.in
        if not exist $(DOSTMP)
ul mkdir $(DOSTMP)
        if exist $(DOSTMP)\$< $(DEL) $(DOSTMP)\$<
-       $(VIMPROG) -u dos.vim $(COMMON_ARGS) "+set ff=dos|f $@|wq" $<
+       $(VIMPROG) -u util\dos.vim $(COMMON_ARGS) "+set ff=dos|f $@|wq" $<
 
 # For each input file dostmp/test99.in run the tests.
 # This moves test99.in to test99.in.bak temporarily.
@@ -115,7 +115,7 @@ $(DOSTMP)/%.in : %.in
        $(MV) $(notdir $<) $(notdir $<).bak > NUL
        $(CP) $(DOSTMP)\$(notdir $<) $(notdir $<) > NUL
        $(CP) $(basename $@).ok test.ok > NUL
-       $(VIMPROG) -u dos.vim $(COMMON_ARGS) -s dotest.in $(notdir $<)
+       $(VIMPROG) -u util\dos.vim $(COMMON_ARGS) -s dotest.in $(notdir $<)
        -@if exist test.out $(MV) test.out $(DOSTMP)\$@ > NUL
        -@if exist $(notdir $<).bak $(MV) $(notdir $<).bak $(notdir $<) > NUL
        -@if exist test.ok $(DEL) test.ok
@@ -124,7 +124,7 @@ $(DOSTMP)/%.in : %.in
        -@if exist XfakeHOME $(DELDIR) XfakeHOME
        -@del X*
        -@if exist viminfo del viminfo
-       $(VIMPROG) -u dos.vim $(COMMON_ARGS) "+set ff=unix|f test.out|wq" \
+       $(VIMPROG) -u util\dos.vim $(COMMON_ARGS) "+set ff=unix|f test.out|wq" \
                $(DOSTMP)\$@
        @diff test.out $(basename $@).ok & if errorlevel 1 \
                ( $(MV) test.out $(basename $@).failed > NUL \
@@ -154,10 +154,10 @@ test_gui.res: test_gui.vim
 
 test_gui_init.res: test_gui_init.vim
        @echo $(VIMPROG) > vimcmd
-       $(VIMPROG) -u gui_preinit.vim -U gui_init.vim $(NO_PLUGINS) -S 
runtest.vim $<
+       $(VIMPROG) -u util\gui_preinit.vim -U util\gui_init.vim $(NO_PLUGINS) 
-S runtest.vim $<
        @$(DEL) vimcmd
 
-opt_test.vim: gen_opt_test.vim ../optiondefs.h ../../runtime/doc/options.txt
+opt_test.vim: util/gen_opt_test.vim ../optiondefs.h 
../../runtime/doc/options.txt
        $(VIMPROG) -e -s -u NONE $(COMMON_ARGS) --nofork -S $^
        @if test -f test.log; then \
                cat test.log; \
diff --git a/src/testdir/Make_mvc.mak b/src/testdir/Make_mvc.mak
index 1a54823e5..02eb801b3 100644
--- a/src/testdir/Make_mvc.mak
+++ b/src/testdir/Make_mvc.mak
@@ -40,7 +40,7 @@ report:
        @rem without the +eval feature test_result.log is a copy of test.log
        @if exist test.log ( copy /y test.log test_result.log > nul ) \
                else ( echo No failures reported > test_result.log )
-       $(VIMPROG) -u NONE $(COMMON_ARGS) -S summarize.vim messages
+       $(VIMPROG) -u NONE $(COMMON_ARGS) -S util\summarize.vim messages
        -if exist starttime del starttime
        @echo:
        @echo Test results:
@@ -99,7 +99,7 @@ tinytests: $(SCRIPTS_TINY_OUT)
 $(DOSTMP_INFILES): $(*B).in
        if not exist $(DOSTMP)\NUL md $(DOSTMP)
        if exist $@ del $@
-       $(VIMPROG) -u dos.vim $(COMMON_ARGS) "+set ff=dos|f $@|wq" $(*B).in
+       $(VIMPROG) -u util\dos.vim $(COMMON_ARGS) "+set ff=dos|f $@|wq" $(*B).in
 
 # For each input file dostmp/test99.in run the tests.
 # This moves test99.in to test99.in.bak temporarily.
@@ -109,7 +109,7 @@ $(TEST_OUTFILES): $(DOSTMP)\$(*B).in
        move $(*B).in $(*B).in.bak > nul
        copy $(DOSTMP)\$(*B).in $(*B).in > nul
        copy $(*B).ok test.ok > nul
-       $(VIMPROG) -u dos.vim $(COMMON_ARGS) -s dotest.in $(*B).in
+       $(VIMPROG) -u util\dos.vim $(COMMON_ARGS) -s dotest.in $(*B).in
        -@if exist test.out MOVE /y test.out $(DOSTMP)\$(*B).out > nul
        -@if exist $(*B).in.bak move /y $(*B).in.bak $(*B).in > nul
        -@if exist test.ok del test.ok
@@ -118,7 +118,7 @@ $(TEST_OUTFILES): $(DOSTMP)\$(*B).in
        -@if exist XfakeHOME rd /s /q XfakeHOME
        -@del X*
        -@if exist viminfo del viminfo
-       $(VIMPROG) -u dos.vim $(COMMON_ARGS) "+set ff=unix|f test.out|wq" \
+       $(VIMPROG) -u util\dos.vim $(COMMON_ARGS) "+set ff=unix|f test.out|wq" \
                $(DOSTMP)\$(*B).out
        @diff test.out $*.ok & if errorlevel 1 \
                ( move /y test.out $*.failed > nul \
@@ -148,10 +148,10 @@ test_gui.res: test_gui.vim
 
 test_gui_init.res: test_gui_init.vim
        @echo $(VIMPROG) > vimcmd
-       $(VIMPROG) -u gui_preinit.vim -U gui_init.vim $(NO_PLUGINS) -S 
runtest.vim $*.vim
+       $(VIMPROG) -u util\gui_preinit.vim -U util\gui_init.vim $(NO_PLUGINS) 
-S runtest.vim $*.vim
        @del vimcmd
 
-opt_test.vim: gen_opt_test.vim ../optiondefs.h ../../runtime/doc/options.txt
+opt_test.vim: util/gen_opt_test.vim ../optiondefs.h 
../../runtime/doc/options.txt
        $(VIMPROG) -e -s -u NONE $(COMMON_ARGS) --nofork -S $**
        @if exist test.log ( type test.log & exit /b 1 )
 
diff --git a/src/testdir/Make_vms.mms b/src/testdir/Make_vms.mms
index b6c6fabae..ad2139500 100644
--- a/src/testdir/Make_vms.mms
+++ b/src/testdir/Make_vms.mms
@@ -56,7 +56,7 @@ GUI_OPTION = -g
        -@ write sys$output "                "$*" "
        -@ write sys$output "-----------------------------------------------"
        -@ !run the test
-       -@ create/term/wait/nodetach mcr $(VIMPROG) $(GUI_OPTION) -u vms.vim 
--noplugin -s dotest.in $*.in
+       -@ create/term/wait/nodetach mcr $(VIMPROG) $(GUI_OPTION) -u 
util/vms.vim --noplugin -s dotest.in $*.in
        -@ !analyse the result
        -@ directory /size/date test.out
        -@ if "''F$SEARCH("test.out.*")'" .NES. "" then rename/nolog test.out 
$*.out 
@@ -89,9 +89,9 @@ nolog :
        -@ write sys$output "-----------------------------------------------"
        -@ write sys$output "MAKE_VMS.MMS options:"
        -@ write sys$output "   WANT_GUI   = ""$(WANT_GUI)"" "
-       -@ write sys$output "Default vimrc file is VMS.VIM:"
+       -@ write sys$output "Default vimrc file is util/VMS.VIM:"
        -@ write sys$output "-----------------------------------------------"
-       -@ type VMS.VIM
+       -@ type util/VMS.VIM
 
 clean :
        -@ if "''F$SEARCH("*.out")'"        .NES. "" then 
delete/noconfirm/nolog *.out.*
diff --git a/src/testdir/Makefile b/src/testdir/Makefile
index 680d1a121..f784d80de 100644
--- a/src/testdir/Makefile
+++ b/src/testdir/Makefile
@@ -21,7 +21,7 @@ REDIR_TEST_TO_NULL = --cmd 'au SwapExists * let v:swapchoice 
= "e"' | LC_ALL=C a
 # VALGRIND = valgrind --tool=memcheck --leak-check=yes --num-callers=45 
--log-file=valgrind.$*
 
 # To execute one test, e.g. in gdb, use something like this:
-# run -f -u unix.vim --gui-dialog-file guidialog -U NONE --noplugin 
--not-a-term -S runtest.vim test_name.vim
+# run -f -u util/unix.vim --gui-dialog-file guidialog -U NONE --noplugin 
--not-a-term -S runtest.vim test_name.vim
 
 default: nongui
 
@@ -48,7 +48,7 @@ report:
                then cp test.log test_result.log; \
                else echo No failures reported > test_result.log; \
                fi"
-       $(VIMPROG) -u NONE $(NO_INITS) -S summarize.vim messages 
$(REDIR_TEST_TO_NULL)
+       $(VIMPROG) -u NONE $(NO_INITS) -S util/summarize.vim messages 
$(REDIR_TEST_TO_NULL)
        @rm -f starttime
        @echo
        @echo 'Test results:'
@@ -87,7 +87,7 @@ test_vim9:
 
 RM_ON_RUN = test.out X* viminfo
 RM_ON_START = test.ok benchmark.out
-RUN_VIMPROG = VIMRUNTIME=$(SCRIPTSOURCE) $(VALGRIND) $(VIMPROG) -f $(GUI_FLAG) 
-u unix.vim $(NO_INITS) -s dotest.in
+RUN_VIMPROG = VIMRUNTIME=$(SCRIPTSOURCE) $(VALGRIND) $(VIMPROG) -f $(GUI_FLAG) 
-u util/unix.vim $(NO_INITS) -s dotest.in
 
 # Delete files that may interfere with running tests.  This includes some files
 # that may result from working on the tests, not only from running them.
@@ -141,7 +141,7 @@ tinytests: $(SCRIPTS_TINY_OUT)
 # to write and a lot easier to read and debug.
 # Limitation: Only works with the +eval feature.
 # Add --gui-dialog-file to avoid getting stuck in a dialog.
-RUN_VIMTEST = VIMRUNTIME=$(SCRIPTSOURCE) $(VALGRIND) $(VIMPROG) -f $(GUI_FLAG) 
-u unix.vim --gui-dialog-file guidialog
+RUN_VIMTEST = VIMRUNTIME=$(SCRIPTSOURCE) $(VALGRIND) $(VIMPROG) -f $(GUI_FLAG) 
-u util/unix.vim --gui-dialog-file guidialog
 
 newtests: newtestssilent
        @/bin/sh -c "if test -f messages; then cat messages; fi"
@@ -174,13 +174,13 @@ test_gui_init.res: test_gui_init.vim
        @echo "$(VIMPROG)" > vimcmd
        @echo "$(RUN_GVIMTEST_WITH_GVIMRC)" >> vimcmd
        if test -n "$${ASAN_OPTIONS}"; then \
-               ASAN_OPTIONS="$${ASAN_OPTIONS}_$*" 
UBSAN_OPTIONS="$${UBSAN_OPTIONS}_$*" $(RUN_VIMTEST) -u gui_preinit.vim -U 
gui_init.vim $(NO_PLUGINS) -S runtest.vim $< ; \
+               ASAN_OPTIONS="$${ASAN_OPTIONS}_$*" 
UBSAN_OPTIONS="$${UBSAN_OPTIONS}_$*" $(RUN_VIMTEST) -u util/gui_preinit.vim -U 
util/gui_init.vim $(NO_PLUGINS) -S runtest.vim $< ; \
        else \
-               $(RUN_VIMTEST) -u gui_preinit.vim -U gui_init.vim $(NO_PLUGINS) 
-S runtest.vim $< ; \
+               $(RUN_VIMTEST) -u util/gui_preinit.vim -U util/gui_init.vim 
$(NO_PLUGINS) -S runtest.vim $< ; \
        fi
        @rm vimcmd
 
-GEN_OPT_DEPS = gen_opt_test.vim ../optiondefs.h ../../runtime/doc/options.txt
+GEN_OPT_DEPS = util/gen_opt_test.vim ../optiondefs.h 
../../runtime/doc/options.txt
 
 opt_test.vim: $(GEN_OPT_DEPS)
        if test -n "$${ASAN_OPTIONS}"; then \
diff --git a/src/testdir/README.txt b/src/testdir/README.txt
index c7067ac02..1ae0d28ae 100644
--- a/src/testdir/README.txt
+++ b/src/testdir/README.txt
@@ -1,5 +1,8 @@
-This directory contains tests for various Vim features.
+This directory contains test cases for various Vim features.
+The auxiliary functions to perform the tests are in the util/ folder.
+
 For testing an indent script see runtime/indent/testdir/README.txt.
+For testing a syntax script see runtime/syntax/testdir/README.txt.
 
 If it makes sense, add a new test method to an already existing file.  You may
 want to separate it from other tests with comment lines.
diff --git a/src/testdir/runtest.vim b/src/testdir/runtest.vim
index a56679c82..7822da915 100644
--- a/src/testdir/runtest.vim
+++ b/src/testdir/runtest.vim
@@ -101,13 +101,13 @@ endif
 set shellslash
 
 " Common with all tests on all systems.
-source setup.vim
+source util/setup.vim
 
 " Needed for RunningWithValgrind().
-source shared.vim
+source util/shared.vim
 
 " Needed for the various Check commands
-source check.vim
+source util/check.vim
 
 " For consistency run all tests with 'nocompatible' set.
 " This also enables use of line continuation.
diff --git a/src/testdir/test_autocmd.vim b/src/testdir/test_autocmd.vim
index c78088d0c..43605f7e1 100644
--- a/src/testdir/test_autocmd.vim
+++ b/src/testdir/test_autocmd.vim
@@ -1,7 +1,7 @@
 " Tests for autocommands
 
-source screendump.vim
-import './vim9.vim' as v9
+source util/screendump.vim
+import './util/vim9.vim' as v9
 
 func s:cleanup_buffers() abort
   for bnr in range(1, bufnr('$'))
diff --git a/src/testdir/test_balloon.vim b/src/testdir/test_balloon.vim
index 6f89f2fa9..1fe0ae890 100644
--- a/src/testdir/test_balloon.vim
+++ b/src/testdir/test_balloon.vim
@@ -4,7 +4,7 @@
 CheckNotGui
 CheckFeature balloon_eval_term
 
-source screendump.vim
+source util/screendump.vim
 
 let s:common_script =<< trim [CODE]
   call setline(1, ["one one one", "two tXo two", "three three three"])
diff --git a/src/testdir/test_blob.vim b/src/testdir/test_blob.vim
index addb39503..93005a617 100644
--- a/src/testdir/test_blob.vim
+++ b/src/testdir/test_blob.vim
@@ -1,6 +1,6 @@
 " Tests for the Blob types
 
-import './vim9.vim' as v9
+import './util/vim9.vim' as v9
 
 func TearDown()
   " Run garbage collection after every test
diff --git a/src/testdir/test_breakindent.vim b/src/testdir/test_breakindent.vim
index e081307ab..bb164f70e 100644
--- a/src/testdir/test_breakindent.vim
+++ b/src/testdir/test_breakindent.vim
@@ -6,7 +6,7 @@
 " Test_breakindent08())
 CheckOption breakindent
 
-source screendump.vim
+source util/screendump.vim
 
 func SetUp()
   let s:input ="       abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOP"
diff --git a/src/testdir/test_bufline.vim b/src/testdir/test_bufline.vim
index 1aa0c017c..9f0a0a6b3 100644
--- a/src/testdir/test_bufline.vim
+++ b/src/testdir/test_bufline.vim
@@ -1,6 +1,6 @@
 " Tests for setbufline(), getbufline(), appendbufline(), deletebufline()
 
-source screendump.vim
+source util/screendump.vim
 
 func Test_setbufline_getbufline()
   " similar to Test_set_get_bufline()
diff --git a/src/testdir/test_channel.vim b/src/testdir/test_channel.vim
index 6a0ee5410..dcd052669 100644
--- a/src/testdir/test_channel.vim
+++ b/src/testdir/test_channel.vim
@@ -3,7 +3,7 @@
 " When +channel is supported then +job is too, so we don't check for that.
 CheckFeature channel
 
-source screendump.vim
+source util/screendump.vim
 
 let s:python = PythonProg()
 if s:python == ''
diff --git a/src/testdir/test_clientserver.vim 
b/src/testdir/test_clientserver.vim
index 3d69eed75..6fe0f6969 100644
--- a/src/testdir/test_clientserver.vim
+++ b/src/testdir/test_clientserver.vim
@@ -8,7 +8,7 @@ endif
 
 CheckFeature clientserver
 
-source shared.vim
+source util/shared.vim
 
 func Check_X11_Connection()
   if has('x11')
diff --git a/src/testdir/test_clipmethod.vim b/src/testdir/test_clipmethod.vim
index 31a381c14..9b3465842 100644
--- a/src/testdir/test_clipmethod.vim
+++ b/src/testdir/test_clipmethod.vim
@@ -1,6 +1,6 @@
 " Tests for clipmethod
 
-source window_manager.vim
+source util/window_manager.vim
 
 CheckFeature clipboard_working
 CheckFeature xterm_clipboard
@@ -123,7 +123,7 @@ func Test_clipreset_switches()
 
   let l:lines =<< trim END
     set cpm=x11
-    source shared.vim
+    source util/shared.vim
 
     func Test()
       clipreset
diff --git a/src/testdir/test_cmdline.vim b/src/testdir/test_cmdline.vim
index cfc64f79d..a68d3e123 100644
--- a/src/testdir/test_cmdline.vim
+++ b/src/testdir/test_cmdline.vim
@@ -1,7 +1,7 @@
 " Tests for editing the command line.
 
-source screendump.vim
-import './vim9.vim' as v9
+source util/screendump.vim
+import './util/vim9.vim' as v9
 
 func SetUp()
   func SaveLastScreenLine()
diff --git a/src/testdir/test_cmdwin.vim b/src/testdir/test_cmdwin.vim
index 9c37f2052..6b2850a02 100644
--- a/src/testdir/test_cmdwin.vim
+++ b/src/testdir/test_cmdwin.vim
@@ -1,6 +1,6 @@
 " Tests for editing the command line.
 
-source screendump.vim
+source util/screendump.vim
 
 func Test_getcmdwintype()
   call feedkeys("q/:let a = getcmdwintype()\<CR>:q\<CR>", 'x!')
diff --git a/src/testdir/test_conceal.vim b/src/testdir/test_conceal.vim
index ac27dba57..360e600b4 100644
--- a/src/testdir/test_conceal.vim
+++ b/src/testdir/test_conceal.vim
@@ -2,7 +2,7 @@
 
 CheckFeature conceal
 
-source screendump.vim
+source util/screendump.vim
 
 func Test_conceal_two_windows()
   CheckScreendump
diff --git a/src/testdir/test_crash.vim b/src/testdir/test_crash.vim
index f497d9ed4..ff9b63ba3 100644
--- a/src/testdir/test_crash.vim
+++ b/src/testdir/test_crash.vim
@@ -1,5 +1,5 @@
 " Some tests, that used to crash Vim
-source screendump.vim
+source util/screendump.vim
 
 CheckScreendump
 
diff --git a/src/testdir/test_cursorline.vim b/src/testdir/test_cursorline.vim
index a497d0e39..01a94baae 100644
--- a/src/testdir/test_cursorline.vim
+++ b/src/testdir/test_cursorline.vim
@@ -1,6 +1,6 @@
 " Test for cursorline and cursorlineopt
 
-source screendump.vim
+source util/screendump.vim
 
 func s:screen_attr(lnum) abort
   return map(range(1, 8), 'screenattr(a:lnum, v:val)')
diff --git a/src/testdir/test_debugger.vim b/src/testdir/test_debugger.vim
index be881b5b2..264420998 100644
--- a/src/testdir/test_debugger.vim
+++ b/src/testdir/test_debugger.vim
@@ -1,6 +1,6 @@
 " Tests for the Vim script debug commands
 
-source screendump.vim
+source util/screendump.vim
 
 CheckRunVimInTerminal
 
diff --git a/src/testdir/test_delete.vim b/src/testdir/test_delete.vim
index 59d569f31..63e83d3b7 100644
--- a/src/testdir/test_delete.vim
+++ b/src/testdir/test_delete.vim
@@ -1,6 +1,6 @@
 " Test for delete().
 
-source screendump.vim
+source util/screendump.vim
 
 func Test_file_delete()
   split Xfdelfile
diff --git a/src/testdir/test_diffmode.vim b/src/testdir/test_diffmode.vim
index 5c3873835..6af3fb0d8 100644
--- a/src/testdir/test_diffmode.vim
+++ b/src/testdir/test_diffmode.vim
@@ -1,6 +1,6 @@
 " Tests for diff mode
 
-source screendump.vim
+source util/screendump.vim
 
 func Test_diff_fold_sync()
   enew!
diff --git a/src/testdir/test_display.vim b/src/testdir/test_display.vim
index be6ca7b0f..5f597f133 100644
--- a/src/testdir/test_display.vim
+++ b/src/testdir/test_display.vim
@@ -4,7 +4,7 @@ if !has('gui_running') && has('unix')
   set term=ansi
 endif
 
-source screendump.vim
+source util/screendump.vim
 
 func Test_display_foldcolumn()
   CheckFeature folding
diff --git a/src/testdir/test_edit.vim b/src/testdir/test_edit.vim
index f8ef1d8c5..c951f3a7b 100644
--- a/src/testdir/test_edit.vim
+++ b/src/testdir/test_edit.vim
@@ -4,7 +4,7 @@ if exists("+t_kD")
   let &t_kD=" [3;*~"
 endif
 
-source screendump.vim
+source util/screendump.vim
 
 " Needs to come first until the bug in getchar() is
 " fixed: https://groups.google.com/d/msg/vim_dev/fXL9yme4H4c/bOR-U6_bAQAJ
diff --git a/src/testdir/test_eval_stuff.vim b/src/testdir/test_eval_stuff.vim
index ada466723..39bb4ba9f 100644
--- a/src/testdir/test_eval_stuff.vim
+++ b/src/testdir/test_eval_stuff.vim
@@ -1,7 +1,7 @@
 " Tests for various eval things.
 
-source shared.vim
-import './vim9.vim' as v9
+source util/shared.vim
+import './util/vim9.vim' as v9
 
 function s:foo() abort
   try
diff --git a/src/testdir/test_excmd.vim b/src/testdir/test_excmd.vim
index 66ef50177..8c3282855 100644
--- a/src/testdir/test_excmd.vim
+++ b/src/testdir/test_excmd.vim
@@ -1,6 +1,6 @@
 " Tests for various Ex commands.
 
-source screendump.vim
+source util/screendump.vim
 
 func Test_ex_delete()
   new
diff --git a/src/testdir/test_execute_func.vim 
b/src/testdir/test_execute_func.vim
index e1c85b097..3e6c2fe92 100644
--- a/src/testdir/test_execute_func.vim
+++ b/src/testdir/test_execute_func.vim
@@ -1,6 +1,6 @@
 " test execute()
 
-import './vim9.vim' as v9
+import './util/vim9.vim' as v9
 
 func NestedEval()
   let nested = execute('echo "nested
lines"')
diff --git a/src/testdir/test_exists.vim b/src/testdir/test_exists.vim
index 404b15c0d..c886f0b9f 100644
--- a/src/testdir/test_exists.vim
+++ b/src/testdir/test_exists.vim
@@ -1,6 +1,6 @@
 " Tests for the exists() function
 
-import './vim9.vim' as v9
+import './util/vim9.vim' as v9
 
 func Test_exists()
   augroup myagroup
diff --git a/src/testdir/test_expr.vim b/src/testdir/test_expr.vim
index e08019a2e..ec44d8092 100644
--- a/src/testdir/test_expr.vim
+++ b/src/testdir/test_expr.vim
@@ -1,6 +1,6 @@
 " Tests for expressions.
 
-import './vim9.vim' as v9
+import './util/vim9.vim' as v9
 
 func Test_equal()
   let base = {}
diff --git a/src/testdir/test_filter_map.vim b/src/testdir/test_filter_map.vim
index 39da767fa..138ca18b5 100644
--- a/src/testdir/test_filter_map.vim
+++ b/src/testdir/test_filter_map.vim
@@ -1,6 +1,6 @@
 " Test filter() and map()
 
-import './vim9.vim' as v9
+import './util/vim9.vim' as v9
 
 " list with expression string
 func Test_filter_map_list_expr_string()
diff --git a/src/testdir/test_findfile.vim b/src/testdir/test_findfile.vim
index ec380cbb4..acb26e0e5 100644
--- a/src/testdir/test_findfile.vim
+++ b/src/testdir/test_findfile.vim
@@ -1,6 +1,6 @@
 " Test findfile() and finddir()
 
-import './vim9.vim' as v9
+import './util/vim9.vim' as v9
 
 let s:files = [ 'Xfinddir1/foo',
       \         'Xfinddir1/bar',
diff --git a/src/testdir/test_float_func.vim b/src/testdir/test_float_func.vim
index 23e3c314c..db08dd501 100644
--- a/src/testdir/test_float_func.vim
+++ b/src/testdir/test_float_func.vim
@@ -1,6 +1,6 @@
 " test float functions
 
-import './vim9.vim' as v9
+import './util/vim9.vim' as v9
 
 func Test_abs()
   call assert_equal('1.23', string(abs(1.23)))
diff --git a/src/testdir/test_fold.vim b/src/testdir/test_fold.vim
index 0fc99bc55..fc63b1572 100644
--- a/src/testdir/test_fold.vim
+++ b/src/testdir/test_fold.vim
@@ -1,6 +1,6 @@
 " Test for folding
 
-source screendump.vim
+source util/screendump.vim
 
 func PrepIndent(arg)
   return [a:arg] + repeat(["   ".a:arg], 5)
diff --git a/src/testdir/test_format.vim b/src/testdir/test_format.vim
index b6be20401..b192938d4 100644
--- a/src/testdir/test_format.vim
+++ b/src/testdir/test_format.vim
@@ -1,6 +1,6 @@
 " Tests for expressions.
 
-import './vim9.vim' as v9
+import './util/vim9.vim' as v9
 
 func Test_printf_pos_misc()
   let lines =<< trim END
diff --git a/src/testdir/test_functions.vim b/src/testdir/test_functions.vim
index ae16d1e85..4fac4726f 100644
--- a/src/testdir/test_functions.vim
+++ b/src/testdir/test_functions.vim
@@ -1,7 +1,7 @@
 " Tests for various functions.
 
-source screendump.vim
-import './vim9.vim' as v9
+source util/screendump.vim
+import './util/vim9.vim' as v9
 
 " Must be done first, since the alternate buffer must be unset.
 func Test_00_bufexists()
diff --git a/src/testdir/test_glob2regpat.vim b/src/testdir/test_glob2regpat.vim
index 965ca5c4a..66ace12ad 100644
--- a/src/testdir/test_glob2regpat.vim
+++ b/src/testdir/test_glob2regpat.vim
@@ -1,6 +1,6 @@
 " Test glob2regpat()
 
-import './vim9.vim' as v9
+import './util/vim9.vim' as v9
 
 func Test_glob2regpat_invalid()
   call assert_equal('^1\.33$', glob2regpat(1.33))
diff --git a/src/testdir/test_gui.vim b/src/testdir/test_gui.vim
index 45966eba5..9fd840a53 100644
--- a/src/testdir/test_gui.vim
+++ b/src/testdir/test_gui.vim
@@ -2,7 +2,7 @@
 
 CheckCanRunGui
 
-source setup_gui.vim
+source util/setup_gui.vim
 
 func Setup()
   call GUISetUpCommon()
diff --git a/src/testdir/test_gui_init.vim b/src/testdir/test_gui_init.vim
index f3effff48..1a60a49ec 100644
--- a/src/testdir/test_gui_init.vim
+++ b/src/testdir/test_gui_init.vim
@@ -3,7 +3,7 @@
 
 CheckCanRunGui
 
-source setup_gui.vim
+source util/setup_gui.vim
 
 func Setup()
   call GUISetUpCommon()
diff --git a/src/testdir/test_help.vim b/src/testdir/test_help.vim
index e87d31258..dac153d86 100644
--- a/src/testdir/test_help.vim
+++ b/src/testdir/test_help.vim
@@ -1,6 +1,6 @@
 " Tests for :help
 
-import './vim9.vim' as v9
+import './util/vim9.vim' as v9
 
 func Test_help_restore_snapshot()
   help
diff --git a/src/testdir/test_highlight.vim b/src/testdir/test_highlight.vim
index 487eb8dc1..5ce4f1ede 100644
--- a/src/testdir/test_highlight.vim
+++ b/src/testdir/test_highlight.vim
@@ -1,8 +1,8 @@
 " Tests for ":highlight" and highlighting.
 
-source screendump.vim
-source script_util.vim
-import './vim9.vim' as v9
+source util/screendump.vim
+source util/script_util.vim
+import './util/vim9.vim' as v9
 
 func ClearDict(d)
   for k in keys(a:d)
diff --git a/src/testdir/test_hlsearch.vim b/src/testdir/test_hlsearch.vim
index 18992d32b..8bf7f0aae 100644
--- a/src/testdir/test_hlsearch.vim
+++ b/src/testdir/test_hlsearch.vim
@@ -1,6 +1,6 @@
 " Test for v:hlsearch
 
-source screendump.vim
+source util/screendump.vim
 
 func Test_hlsearch()
   new
diff --git a/src/testdir/test_iminsert.vim b/src/testdir/test_iminsert.vim
index e20cddd3c..918f17d4c 100644
--- a/src/testdir/test_iminsert.vim
+++ b/src/testdir/test_iminsert.vim
@@ -1,6 +1,6 @@
 " Test for 'iminsert'
 
-import './vim9.vim' as v9
+import './util/vim9.vim' as v9
 
 let s:imactivatefunc_called = 0
 let s:imstatusfunc_called = 0
diff --git a/src/testdir/test_ins_complete.vim 
b/src/testdir/test_ins_complete.vim
index d906e7ad6..9ee7876c2 100644
--- a/src/testdir/test_ins_complete.vim
+++ b/src/testdir/test_ins_complete.vim
@@ -1,7 +1,7 @@
 " Test for insert completion
 
-source screendump.vim
-import './vim9.vim' as v9
+source util/screendump.vim
+import './util/vim9.vim' as v9
 
 " Test for insert expansion
 func Test_ins_complete()
diff --git a/src/testdir/test_lambda.vim b/src/testdir/test_lambda.vim
index 42f53b1eb..d1daa127a 100644
--- a/src/testdir/test_lambda.vim
+++ b/src/testdir/test_lambda.vim
@@ -1,6 +1,6 @@
 " Test for lambda and closure
 
-import './vim9.vim' as v9
+import './util/vim9.vim' as v9
 
 func Test_lambda_feature()
   call assert_equal(1, has('lambda'))
diff --git a/src/testdir/test_let.vim b/src/testdir/test_let.vim
index a90b55cb4..0aa8b1643 100644
--- a/src/testdir/test_let.vim
+++ b/src/testdir/test_let.vim
@@ -1,6 +1,6 @@
 " Tests for the :let command.
 
-import './vim9.vim' as v9
+import './util/vim9.vim' as v9
 
 func Test_let()
   " Test to not autoload when assigning.  It causes internal error.
diff --git a/src/testdir/test_listchars.vim b/src/testdir/test_listchars.vim
index 387f6afd6..38963fa48 100644
--- a/src/testdir/test_listchars.vim
+++ b/src/testdir/test_listchars.vim
@@ -1,6 +1,6 @@
 " Tests for 'listchars' display with 'list' and :list
 
-source screendump.vim
+source util/screendump.vim
 
 func Check_listchars(expected, end_lnum, end_scol = -1, leftcol = 0)
   if a:leftcol > 0
diff --git a/src/testdir/test_listdict.vim b/src/testdir/test_listdict.vim
index a7e9cb795..f806eb897 100644
--- a/src/testdir/test_listdict.vim
+++ b/src/testdir/test_listdict.vim
@@ -1,7 +1,7 @@
 " Tests for the List and Dict types
 scriptencoding utf-8
 
-import './vim9.vim' as v9
+import './util/vim9.vim' as v9
 
 func TearDown()
   " Run garbage collection after every test
diff --git a/src/testdir/test_listlbr.vim b/src/testdir/test_listlbr.vim
index d1869838e..7430ec626 100644
--- a/src/testdir/test_listlbr.vim
+++ b/src/testdir/test_listlbr.vim
@@ -6,7 +6,7 @@ scriptencoding latin1
 CheckOption linebreak
 CheckFeature conceal
 
-source screendump.vim
+source util/screendump.vim
 
 function s:screen_lines(lnum, width) abort
   return ScreenLines(a:lnum, a:width)
diff --git a/src/testdir/test_listlbr_utf8.vim 
b/src/testdir/test_listlbr_utf8.vim
index d69cae76d..be77566a7 100644
--- a/src/testdir/test_listlbr_utf8.vim
+++ b/src/testdir/test_listlbr_utf8.vim
@@ -7,7 +7,7 @@ CheckOption linebreak
 CheckFeature conceal
 CheckFeature signs
 
-source screendump.vim
+source util/screendump.vim
 
 func s:screen_lines(lnum, width) abort
   return ScreenLines(a:lnum, a:width)
diff --git a/src/testdir/test_mapping.vim b/src/testdir/test_mapping.vim
index 28b0188b7..01f2d1f94 100644
--- a/src/testdir/test_mapping.vim
+++ b/src/testdir/test_mapping.vim
@@ -1,7 +1,7 @@
 " Tests for mappings and abbreviations
 
-source screendump.vim
-import './vim9.vim' as v9
+source util/screendump.vim
+import './util/vim9.vim' as v9
 
 func Test_abbreviation()
   new
diff --git a/src/testdir/test_match.vim b/src/testdir/test_match.vim
index 35311d432..5d598eb23 100644
--- a/src/testdir/test_match.vim
+++ b/src/testdir/test_match.vim
@@ -1,7 +1,7 @@
 " Test for :match, :2match, :3match, clearmatches(), getmatches(), matchadd(),
 " matchaddpos(), matcharg(), matchdelete(), and setmatches().
 
-source screendump.vim
+source util/screendump.vim
 
 function Test_match()
   highlight MyGroup1 term=bold ctermbg=red guibg=red
diff --git a/src/testdir/test_menu.vim b/src/testdir/test_menu.vim
index f441190d9..e42dd0cc4 100644
--- a/src/testdir/test_menu.vim
+++ b/src/testdir/test_menu.vim
@@ -2,7 +2,7 @@
 
 CheckFeature menu
 
-source screendump.vim
+source util/screendump.vim
 
 func Test_load_menu()
   try
diff --git a/src/testdir/test_messages.vim b/src/testdir/test_messages.vim
index e9eb0991d..61193dfd3 100644
--- a/src/testdir/test_messages.vim
+++ b/src/testdir/test_messages.vim
@@ -1,6 +1,6 @@
 " Tests for :messages, :echomsg, :echoerr
 
-source screendump.vim
+source util/screendump.vim
 
 func Test_messages()
   let oldmore = &more
diff --git a/src/testdir/test_modeless.vim b/src/testdir/test_modeless.vim
index d96be4bd0..ef597ada1 100644
--- a/src/testdir/test_modeless.vim
+++ b/src/testdir/test_modeless.vim
@@ -4,7 +4,7 @@
 CheckNotGui
 CheckUnix
 
-source mouse.vim
+source util/mouse.vim
 
 " Test for modeless characterwise selection (single click)
 func Test_modeless_characterwise_selection()
diff --git a/src/testdir/test_move.vim b/src/testdir/test_move.vim
index c45157f27..d0b68f731 100644
--- a/src/testdir/test_move.vim
+++ b/src/testdir/test_move.vim
@@ -1,6 +1,6 @@
 " Test the ":move" command.
 
-source screendump.vim
+source util/screendump.vim
 
 func Test_move()
   enew!
diff --git a/src/testdir/test_mswin_event.vim b/src/testdir/test_mswin_event.vim
index 0a4407c31..96d1247db 100644
--- a/src/testdir/test_mswin_event.vim
+++ b/src/testdir/test_mswin_event.vim
@@ -2,7 +2,7 @@
 " Most of this works the same in Windows GUI as well as Windows console.
 
 CheckMSWindows
-source mouse.vim
+source util/mouse.vim
 
 " Helper function for sending a grouped sequence of low level key presses
 " The modifier key(s) can be included as VK Key Codes in the sequence
diff --git a/src/testdir/test_netbeans.vim b/src/testdir/test_netbeans.vim
index cfb973692..d3d5e8baf 100644
--- a/src/testdir/test_netbeans.vim
+++ b/src/testdir/test_netbeans.vim
@@ -876,7 +876,7 @@ func Nb_quit_with_conn(port)
   call delete("Xnetbeans")
   call writefile([], "Xnetbeans", 'D')
   let after =<< trim END
-    source shared.vim
+    source util/shared.vim
     set cpo&vim
 
     func ReadXnetbeans()
diff --git a/src/testdir/test_normal.vim b/src/testdir/test_normal.vim
index aa1fa1034..374696443 100644
--- a/src/testdir/test_normal.vim
+++ b/src/testdir/test_normal.vim
@@ -1,7 +1,7 @@
 " Test for various Normal mode commands
 
-import './vim9.vim' as v9
-source screendump.vim
+import './util/vim9.vim' as v9
+source util/screendump.vim
 
 func Setup_NewWindow()
   10new
diff --git a/src/testdir/test_number.vim b/src/testdir/test_number.vim
index 10b69881f..bac01d142 100644
--- a/src/testdir/test_number.vim
+++ b/src/testdir/test_number.vim
@@ -1,6 +1,6 @@
 " Test for 'number' and 'relativenumber'
 
-source screendump.vim
+source util/screendump.vim
 
 func s:screen_lines(start, end) abort
   return ScreenLines([a:start, a:end], 8)
diff --git a/src/testdir/test_options.vim b/src/testdir/test_options.vim
index e4bf63a6b..084646699 100644
--- a/src/testdir/test_options.vim
+++ b/src/testdir/test_options.vim
@@ -340,12 +340,12 @@ func Test_set_completion()
   " Expand directories.
   call feedkeys(":set cdpath=./\<C-A>\<C-B>\"\<CR>", 'tx')
   call assert_match(' ./samples/ ', @:)
-  call assert_notmatch(' ./summarize.vim ', @:)
+  call assert_notmatch(' ./util/summarize.vim ', @:)
   set cdpath&
 
   " Expand files and directories.
   call feedkeys(":set tags=./\<C-A>\<C-B>\"\<CR>", 'tx')
-  call assert_match(' ./samples/.* ./summarize.vim', @:)
+  call assert_match(' ./samples/.* ./test10.in', @:)
 
   call feedkeys(":set tags=./\\ dif\<C-A>\<C-B>\"\<CR>", 'tx')
   call assert_equal('"set tags=./\ diff diffexpr diffopt', @:)
diff --git a/src/testdir/test_options_all.vim b/src/testdir/test_options_all.vim
index a2330ecb9..e6da82b3b 100644
--- a/src/testdir/test_options_all.vim
+++ b/src/testdir/test_options_all.vim
@@ -1,7 +1,7 @@
 " Test for options
 
 " opt_test.vim is generated from src/optiondefs.h and runtime/doc/options.txt
-" using gen_opt_test.vim
+" using util/gen_opt_test.vim
 if filereadable('opt_test.vim')
   source opt_test.vim
 else
diff --git a/src/testdir/test_plugin_matchparen.vim 
b/src/testdir/test_plugin_matchparen.vim
index 47fd3ed05..a05fc5ddd 100644
--- a/src/testdir/test_plugin_matchparen.vim
+++ b/src/testdir/test_plugin_matchparen.vim
@@ -4,7 +4,7 @@ if !has('gui_running') && has('unix')
   set term=ansi
 endif
 
-source screendump.vim
+source util/screendump.vim
 
 " Test for scrolling that modifies buffer during visual block
 func Test_visual_block_scroll()
diff --git a/src/testdir/test_plugin_termdebug.vim 
b/src/testdir/test_plugin_termdebug.vim
index 9017bda9f..ed20247b5 100644
--- a/src/testdir/test_plugin_termdebug.vim
+++ b/src/testdir/test_plugin_termdebug.vim
@@ -1,6 +1,6 @@
 " Test for the termdebug plugin
 
-source screendump.vim
+source util/screendump.vim
 
 CheckUnix
 CheckFeature terminal
diff --git a/src/testdir/test_plugin_tutor.vim 
b/src/testdir/test_plugin_tutor.vim
index 5c3dcd949..da97fcf5c 100644
--- a/src/testdir/test_plugin_tutor.vim
+++ b/src/testdir/test_plugin_tutor.vim
@@ -1,7 +1,7 @@
 " Test for the new-tutor plugin
 
-source screendump.vim
-source script_util.vim
+source util/screendump.vim
+source util/script_util.vim
 
 func SetUp()
   set nocompatible
diff --git a/src/testdir/test_popup.vim b/src/testdir/test_popup.vim
index 7e268e80c..2ae01656f 100644
--- a/src/testdir/test_popup.vim
+++ b/src/testdir/test_popup.vim
@@ -1,6 +1,6 @@
 " Test for completion menu
 
-source screendump.vim
+source util/screendump.vim
 
 let g:months = ['January', 'February', 'March', 'April', 'May', 'June', 
'July', 'August', 'September', 'October', 'November', 'December']
 let g:setting = ''
diff --git a/src/testdir/test_popupwin.vim b/src/testdir/test_popupwin.vim
index 6464e1eab..21d6819a4 100644
--- a/src/testdir/test_popupwin.vim
+++ b/src/testdir/test_popupwin.vim
@@ -2,7 +2,7 @@
 
 CheckFeature popupwin
 
-source screendump.vim
+source util/screendump.vim
 
 func Test_simple_popup()
   CheckScreendump
diff --git a/src/testdir/test_popupwin_textprop.vim 
b/src/testdir/test_popupwin_textprop.vim
index a09938320..2f30831f5 100644
--- a/src/testdir/test_popupwin_textprop.vim
+++ b/src/testdir/test_popupwin_textprop.vim
@@ -3,7 +3,7 @@
 CheckFeature popupwin
 CheckFeature textprop
 
-source screendump.vim
+source util/screendump.vim
 
 func Test_textprop_popup()
   CheckScreendump
diff --git a/src/testdir/test_profile.vim b/src/testdir/test_profile.vim
index 8c0260cbb..fe35e49c2 100644
--- a/src/testdir/test_profile.vim
+++ b/src/testdir/test_profile.vim
@@ -2,7 +2,7 @@
 
 CheckFeature profile
 
-source screendump.vim
+source util/screendump.vim
 
 if has('prof_nsec')
   let s:header = 'count     total (s)      self (s)'
diff --git a/src/testdir/test_prompt_buffer.vim 
b/src/testdir/test_prompt_buffer.vim
index 414ed6e6c..72882e29e 100644
--- a/src/testdir/test_prompt_buffer.vim
+++ b/src/testdir/test_prompt_buffer.vim
@@ -2,7 +2,7 @@
 
 CheckFeature channel
 
-source screendump.vim
+source util/screendump.vim
 
 func CanTestPromptBuffer()
   " We need to use a terminal window to be able to feed keys without leaving
diff --git a/src/testdir/test_put.vim b/src/testdir/test_put.vim
index 91a01a4f2..514a24ea0 100644
--- a/src/testdir/test_put.vim
+++ b/src/testdir/test_put.vim
@@ -1,6 +1,6 @@
 " Tests for put commands, e.g. ":put", "p", "gp", "P", "gP", etc.
 
-source screendump.vim
+source util/screendump.vim
 
 func Test_put_block()
   new
diff --git a/src/testdir/test_quickfix.vim b/src/testdir/test_quickfix.vim
index 7047d8c2b..fed9dcf8d 100644
--- a/src/testdir/test_quickfix.vim
+++ b/src/testdir/test_quickfix.vim
@@ -1,9 +1,9 @@
 " Test for the quickfix feature.
 
-import './vim9.vim' as v9
+import './util/vim9.vim' as v9
 CheckFeature quickfix
 
-source screendump.vim
+source util/screendump.vim
 
 set encoding=utf-8
 
diff --git a/src/testdir/test_remote.vim b/src/testdir/test_remote.vim
index a10cb1250..742c8e283 100644
--- a/src/testdir/test_remote.vim
+++ b/src/testdir/test_remote.vim
@@ -3,8 +3,8 @@
 CheckFeature clientserver
 CheckFeature terminal
 
-source screendump.vim
-source mouse.vim
+source util/screendump.vim
+source util/mouse.vim
 
 let s:remote_works = 0
 let s:skip = 'Skipped: --remote feature is not possible'
diff --git a/src/testdir/test_scroll_opt.vim b/src/testdir/test_scroll_opt.vim
index b4780ebc3..4e2997617 100644
--- a/src/testdir/test_scroll_opt.vim
+++ b/src/testdir/test_scroll_opt.vim
@@ -1,7 +1,7 @@
 " Test for 'scroll', 'scrolloff', 'smoothscroll', etc.
 
-source screendump.vim
-source mouse.vim
+source util/screendump.vim
+source util/mouse.vim
 
 func Test_reset_scroll()
   let scr = &l:scroll
diff --git a/src/testdir/test_search.vim b/src/testdir/test_search.vim
index 2921e1958..4e5fd0620 100644
--- a/src/testdir/test_search.vim
+++ b/src/testdir/test_search.vim
@@ -1,6 +1,6 @@
 " Test for the search command
 
-source screendump.vim
+source util/screendump.vim
 
 func Test_search_cmdline()
   CheckOption incsearch
diff --git a/src/testdir/test_search_stat.vim b/src/testdir/test_search_stat.vim
index 72d4bcd36..5a0f16303 100644
--- a/src/testdir/test_search_stat.vim
+++ b/src/testdir/test_search_stat.vim
@@ -1,6 +1,6 @@
 " Tests for search_stats, when "S" is not in 'shortmess'
 
-source screendump.vim
+source util/screendump.vim
 
 func Test_search_stat()
   new
diff --git a/src/testdir/test_selectmode.vim b/src/testdir/test_selectmode.vim
index 705c4ce90..285ccb47b 100644
--- a/src/testdir/test_selectmode.vim
+++ b/src/testdir/test_selectmode.vim
@@ -4,7 +4,7 @@
 CheckNotGui
 CheckUnix
 
-source mouse.vim
+source util/mouse.vim
 
 " Test for select mode
 func Test_selectmode_basic()
diff --git a/src/testdir/test_signs.vim b/src/testdir/test_signs.vim
index 78988b246..83cfc5f2f 100644
--- a/src/testdir/test_signs.vim
+++ b/src/testdir/test_signs.vim
@@ -2,7 +2,7 @@
 
 CheckFeature signs
 
-source screendump.vim
+source util/screendump.vim
 
 func Test_sign()
   new
diff --git a/src/testdir/test_spell.vim b/src/testdir/test_spell.vim
index 0d8ec9953..170ea5792 100644
--- a/src/testdir/test_spell.vim
+++ b/src/testdir/test_spell.vim
@@ -3,7 +3,7 @@
 
 CheckFeature spell
 
-source screendump.vim
+source util/screendump.vim
 
 func TearDown()
   set nospell
diff --git a/src/testdir/test_stacktrace.vim b/src/testdir/test_stacktrace.vim
index fc8510a2d..77ea28f94 100644
--- a/src/testdir/test_stacktrace.vim
+++ b/src/testdir/test_stacktrace.vim
@@ -1,6 +1,6 @@
 " Test for getstacktrace() and v:stacktrace
 
-import './vim9.vim' as v9
+import './util/vim9.vim' as v9
 
 let s:thisfile = expand('%:p')
 let s:testdir = s:thisfile->fnamemodify(':h')
diff --git a/src/testdir/test_startup.vim b/src/testdir/test_startup.vim
index cd9935527..02d1adf14 100644
--- a/src/testdir/test_startup.vim
+++ b/src/testdir/test_startup.vim
@@ -1,6 +1,6 @@
 " Tests for startup.
 
-source screendump.vim
+source util/screendump.vim
 
 " Check that loading startup.vim works.
 func Test_startup_script()
diff --git a/src/testdir/test_startup_utf8.vim 
b/src/testdir/test_startup_utf8.vim
index f31c15067..f4de09034 100644
--- a/src/testdir/test_startup_utf8.vim
+++ b/src/testdir/test_startup_utf8.vim
@@ -1,6 +1,6 @@
 " Tests for startup using utf-8.
 
-source screendump.vim
+source util/screendump.vim
 
 func Test_read_stdin_utf8()
   let linesin = ['テスト', '€ÀÈÌÒÙ']
diff --git a/src/testdir/test_statusline.vim b/src/testdir/test_statusline.vim
index 7883af342..401eb2a04 100644
--- a/src/testdir/test_statusline.vim
+++ b/src/testdir/test_statusline.vim
@@ -3,7 +3,7 @@
 " Not tested yet:
 "   %N
 
-source screendump.vim
+source util/screendump.vim
 
 func SetUp()
   set laststatus=2
diff --git a/src/testdir/test_substitute.vim b/src/testdir/test_substitute.vim
index ef352b963..710814386 100644
--- a/src/testdir/test_substitute.vim
+++ b/src/testdir/test_substitute.vim
@@ -1,6 +1,6 @@
 " Tests for the substitute (:s) command
 
-source screendump.vim
+source util/screendump.vim
 
 " NOTE: This needs to be the first test to be
 "       run in the file, since it depends on
diff --git a/src/testdir/test_syntax.vim b/src/testdir/test_syntax.vim
index 6c56ceba1..0374077bd 100644
--- a/src/testdir/test_syntax.vim
+++ b/src/testdir/test_syntax.vim
@@ -2,7 +2,7 @@
 
 CheckFeature syntax
 
-source screendump.vim
+source util/screendump.vim
 
 func GetSyntaxItem(pat)
   let c = ''
diff --git a/src/testdir/test_tabline.vim b/src/testdir/test_tabline.vim
index d00626a6c..ce8cb58ae 100644
--- a/src/testdir/test_tabline.vim
+++ b/src/testdir/test_tabline.vim
@@ -1,6 +1,6 @@
 " Test for tabline
 
-source screendump.vim
+source util/screendump.vim
 
 func TablineWithCaughtError()
   let s:func_in_tabline_called = 1
diff --git a/src/testdir/test_tabpage.vim b/src/testdir/test_tabpage.vim
index a99753ef1..05c566967 100644
--- a/src/testdir/test_tabpage.vim
+++ b/src/testdir/test_tabpage.vim
@@ -1,6 +1,6 @@
 " Tests for tabpage
 
-source screendump.vim
+source util/screendump.vim
 
 function Test_tabpage()
   CheckFeature quickfix
diff --git a/src/testdir/test_tabpanel.vim b/src/testdir/test_tabpanel.vim
index 257c38da8..f2925504c 100644
--- a/src/testdir/test_tabpanel.vim
+++ b/src/testdir/test_tabpanel.vim
@@ -1,6 +1,6 @@
 " Tests for tabpanel
 
-source screendump.vim
+source util/screendump.vim
 CheckFeature tabpanel
 
 function s:reset()
diff --git a/src/testdir/test_tagfunc.vim b/src/testdir/test_tagfunc.vim
index cceaf45c2..11a105b63 100644
--- a/src/testdir/test_tagfunc.vim
+++ b/src/testdir/test_tagfunc.vim
@@ -1,7 +1,7 @@
 " Test 'tagfunc'
 
-import './vim9.vim' as v9
-source screendump.vim
+import './util/vim9.vim' as v9
+source util/screendump.vim
 
 func TagFunc(pat, flag, info)
   let g:tagfunc_args = [a:pat, a:flag, a:info]
diff --git a/src/testdir/test_tagjump.vim b/src/testdir/test_tagjump.vim
index 1947ab2d3..47618d077 100644
--- a/src/testdir/test_tagjump.vim
+++ b/src/testdir/test_tagjump.vim
@@ -1,6 +1,6 @@
 " Tests for tagjump (tags and special searches)
 
-source screendump.vim
+source util/screendump.vim
 
 " SEGV occurs in older versions.  (At least 7.4.1748 or older)
 func Test_ptag_with_notagstack()
diff --git a/src/testdir/test_termcodes.vim b/src/testdir/test_termcodes.vim
index e44ca466a..1f2ea7de5 100644
--- a/src/testdir/test_termcodes.vim
+++ b/src/testdir/test_termcodes.vim
@@ -4,7 +4,7 @@
 CheckNotGui
 CheckUnix
 
-source mouse.vim
+source util/mouse.vim
 
 func s:TermGuiColorsTest()
   CheckNotMSWindows
diff --git a/src/testdir/test_termencoding.vim 
b/src/testdir/test_termencoding.vim
index 86b7341a2..f4f523163 100644
--- a/src/testdir/test_termencoding.vim
+++ b/src/testdir/test_termencoding.vim
@@ -4,7 +4,8 @@
 " This only works with "iconv".
 CheckFeature iconv
 
-source screendump.vim
+source util/screendump.vim
+
 if !CanRunVimInTerminal()
   throw 'Skipped: cannot make screendumps'
 endif
diff --git a/src/testdir/test_terminal.vim b/src/testdir/test_terminal.vim
index 7e088b209..0597c36a6 100644
--- a/src/testdir/test_terminal.vim
+++ b/src/testdir/test_terminal.vim
@@ -4,8 +4,8 @@
 
 CheckFeature terminal
 
-source screendump.vim
-source mouse.vim
+source util/screendump.vim
+source util/mouse.vim
 
 let s:python = PythonProg()
 let $PROMPT_COMMAND=''
diff --git a/src/testdir/test_terminal2.vim b/src/testdir/test_terminal2.vim
index 996cd9818..d2fc4fc39 100644
--- a/src/testdir/test_terminal2.vim
+++ b/src/testdir/test_terminal2.vim
@@ -4,8 +4,8 @@
 
 CheckFeature terminal
 
-source screendump.vim
-source mouse.vim
+source util/screendump.vim
+source util/mouse.vim
 
 let $PROMPT_COMMAND=''
 
diff --git a/src/testdir/test_terminal3.vim b/src/testdir/test_terminal3.vim
index e86fdf09a..218b4e6a0 100644
--- a/src/testdir/test_terminal3.vim
+++ b/src/testdir/test_terminal3.vim
@@ -4,10 +4,10 @@
 
 CheckFeature terminal
 
-source screendump.vim
-source mouse.vim
+source util/screendump.vim
+source util/mouse.vim
 
-import './vim9.vim' as v9
+import './util/vim9.vim' as v9
 
 let $PROMPT_COMMAND=''
 
@@ -806,7 +806,7 @@ endfunc
 " Test for sync buffer cwd with shell's pwd
 func Test_terminal_sync_shell_dir()
   CheckUnix
-  " The test always use sh (see src/testdir/unix.vim).
+  " The test always use sh (see src/testdir/util/unix.vim).
   " BSD's sh doesn't seem to play well with the OSC 7 escape sequence.
   CheckNotBSD
 
diff --git a/src/testdir/test_terminal_fail.vim 
b/src/testdir/test_terminal_fail.vim
index 0ee00a1dc..c2bc4bd2c 100644
--- a/src/testdir/test_terminal_fail.vim
+++ b/src/testdir/test_terminal_fail.vim
@@ -4,8 +4,6 @@
 
 CheckFeature terminal
 
-source shared.vim
-
 func Test_terminal_redir_fails()
   CheckUnix
 
diff --git a/src/testdir/test_textprop.vim b/src/testdir/test_textprop.vim
index 856a526ae..b5c9f63f6 100644
--- a/src/testdir/test_textprop.vim
+++ b/src/testdir/test_textprop.vim
@@ -3,8 +3,8 @@
 
 CheckFeature textprop
 
-source screendump.vim
-import './vim9.vim' as v9
+source util/screendump.vim
+import './util/vim9.vim' as v9
 
 func Test_proptype_global()
   call prop_type_add('comment', {'highlight': 'Directory', 'priority': 123, 
'start_incl': 1, 'end_incl': 1})
diff --git a/src/testdir/test_timers.vim b/src/testdir/test_timers.vim
index 0f9fddbbb..9ba5d0f84 100644
--- a/src/testdir/test_timers.vim
+++ b/src/testdir/test_timers.vim
@@ -2,7 +2,7 @@
 
 CheckFeature timers
 
-source screendump.vim
+source util/screendump.vim
 
 func SetUp()
   " The tests here use timers, thus are sensitive to timing.
diff --git a/src/testdir/test_trycatch.vim b/src/testdir/test_trycatch.vim
index 1fde60756..0488861f5 100644
--- a/src/testdir/test_trycatch.vim
+++ b/src/testdir/test_trycatch.vim
@@ -1,7 +1,7 @@
 " Test try-catch-finally exception handling
 " Most of this was formerly in test49.
 
-import './vim9.vim' as v9
+import './util/vim9.vim' as v9
 
 
"-------------------------------------------------------------------------------
 " Test environment                                                         {{{1
diff --git a/src/testdir/test_tuple.vim b/src/testdir/test_tuple.vim
index 45f730d86..c6d8e819a 100644
--- a/src/testdir/test_tuple.vim
+++ b/src/testdir/test_tuple.vim
@@ -1,6 +1,6 @@
 " Tests for the Tuple types
 
-import './vim9.vim' as v9
+import './util/vim9.vim' as v9
 
 func TearDown()
   " Run garbage collection after every test
diff --git a/src/testdir/test_undo.vim b/src/testdir/test_undo.vim
index b4506cb09..a68321f90 100644
--- a/src/testdir/test_undo.vim
+++ b/src/testdir/test_undo.vim
@@ -3,7 +3,7 @@
 " undo-able pieces.  Do that by setting 'undolevels'.
 " Also tests :earlier and :later.
 
-source screendump.vim
+source util/screendump.vim
 
 func Test_undotree()
   new
diff --git a/src/testdir/test_user_func.vim b/src/testdir/test_user_func.vim
index 8a32afe32..d12ad8e40 100644
--- a/src/testdir/test_user_func.vim
+++ b/src/testdir/test_user_func.vim
@@ -3,7 +3,7 @@
 " Also test that a builtin function cannot be replaced.
 " Also test for regression when calling arbitrary expression.
 
-import './vim9.vim' as v9
+import './util/vim9.vim' as v9
 
 func Table(title, ...)
   let ret = a:title
diff --git a/src/testdir/test_usercommands.vim 
b/src/testdir/test_usercommands.vim
index e61a9cebf..636ac2bd1 100644
--- a/src/testdir/test_usercommands.vim
+++ b/src/testdir/test_usercommands.vim
@@ -1,8 +1,8 @@
 " Tests for user defined commands
 
-import './vim9.vim' as v9
+import './util/vim9.vim' as v9
 
-source screendump.vim
+source util/screendump.vim
 
 " Test for <mods> in user defined commands
 function Test_cmdmods()
diff --git a/src/testdir/test_utf8.vim b/src/testdir/test_utf8.vim
index 9c2a7496e..a0cd5bd79 100644
--- a/src/testdir/test_utf8.vim
+++ b/src/testdir/test_utf8.vim
@@ -1,6 +1,6 @@
 " Tests for Unicode manipulations
 
-source screendump.vim
+source util/screendump.vim
 
 " Visual block Insert adjusts for multi-byte char
 func Test_visual_block_insert()
diff --git a/src/testdir/test_vim9_assign.vim b/src/testdir/test_vim9_assign.vim
index dde750b8b..c0f56d9cb 100644
--- a/src/testdir/test_vim9_assign.vim
+++ b/src/testdir/test_vim9_assign.vim
@@ -1,6 +1,6 @@
 " Test Vim9 assignments
 
-import './vim9.vim' as v9
+import './util/vim9.vim' as v9
 
 let s:appendToMe = 'xxx'
 let s:addToMe = 111
diff --git a/src/testdir/test_vim9_builtin.vim 
b/src/testdir/test_vim9_builtin.vim
index a653c7cb8..675dcd00c 100644
--- a/src/testdir/test_vim9_builtin.vim
+++ b/src/testdir/test_vim9_builtin.vim
@@ -1,7 +1,7 @@
 " Test using builtin functions in the Vim9 script language.
 
-source screendump.vim
-import './vim9.vim' as v9
+source util/screendump.vim
+import './util/vim9.vim' as v9
 
 " Test for passing too many or too few arguments to builtin functions
 func Test_internalfunc_arg_error()
diff --git a/src/testdir/test_vim9_class.vim b/src/testdir/test_vim9_class.vim
index e08c40c76..4c8c1cd26 100644
--- a/src/testdir/test_vim9_class.vim
+++ b/src/testdir/test_vim9_class.vim
@@ -1,6 +1,6 @@
 " Test Vim9 classes
 
-import './vim9.vim' as v9
+import './util/vim9.vim' as v9
 
 def Test_class_basic()
   # Class supported only in "vim9script"
diff --git a/src/testdir/test_vim9_cmd.vim b/src/testdir/test_vim9_cmd.vim
index 0d525b481..1380440c4 100644
--- a/src/testdir/test_vim9_cmd.vim
+++ b/src/testdir/test_vim9_cmd.vim
@@ -1,6 +1,6 @@
 " Test commands that are not compiled in a :def function
 
-import './vim9.vim' as v9
+import './util/vim9.vim' as v9
 
 def Test_vim9cmd()
   var lines =<< trim END
diff --git a/src/testdir/test_vim9_disassemble.vim 
b/src/testdir/test_vim9_disassemble.vim
index f1059fbb8..4a86a9b56 100644
--- a/src/testdir/test_vim9_disassemble.vim
+++ b/src/testdir/test_vim9_disassemble.vim
@@ -1,6 +1,6 @@
 " Test the :disassemble command, and compilation as a side effect
 
-import './vim9.vim' as v9
+import './util/vim9.vim' as v9
 
 func s:NotCompiled()
   echo "not"
diff --git a/src/testdir/test_vim9_enum.vim b/src/testdir/test_vim9_enum.vim
index 0ce7dad43..d2ccb77cf 100644
--- a/src/testdir/test_vim9_enum.vim
+++ b/src/testdir/test_vim9_enum.vim
@@ -1,6 +1,6 @@
 " Test Vim9 enums
 
-import './vim9.vim' as v9
+import './util/vim9.vim' as v9
 
 " Test for parsing an enum definition
 def Test_enum_parse()
diff --git a/src/testdir/test_vim9_expr.vim b/src/testdir/test_vim9_expr.vim
index 22d66810f..d47c4511e 100644
--- a/src/testdir/test_vim9_expr.vim
+++ b/src/testdir/test_vim9_expr.vim
@@ -1,6 +1,6 @@
 " Tests for Vim9 script expressions
 
-import './vim9.vim' as v9
+import './util/vim9.vim' as v9
 
 let g:cond = v:false
 def FuncOne(arg: number): string
diff --git a/src/testdir/test_vim9_func.vim b/src/testdir/test_vim9_func.vim
index 42b8b4f2b..e214d9583 100644
--- a/src/testdir/test_vim9_func.vim
+++ b/src/testdir/test_vim9_func.vim
@@ -1,7 +1,7 @@
 " Test various aspects of the Vim9 script language.
 
-import './vim9.vim' as v9
-source screendump.vim
+import './util/vim9.vim' as v9
+source util/screendump.vim
 
 func Test_def_basic()
   def SomeFunc(): string
diff --git a/src/testdir/test_vim9_import.vim b/src/testdir/test_vim9_import.vim
index 0eeaa7f43..191008ecb 100644
--- a/src/testdir/test_vim9_import.vim
+++ b/src/testdir/test_vim9_import.vim
@@ -1,7 +1,7 @@
 " Test import/export of the Vim9 script language.
 " Also the autoload mechanism.
 
-import './vim9.vim' as v9
+import './util/vim9.vim' as v9
 
 let s:export_script_lines =<< trim END
   vim9script
diff --git a/src/testdir/test_vim9_python3.vim 
b/src/testdir/test_vim9_python3.vim
index 9817dd860..42a112a7d 100644
--- a/src/testdir/test_vim9_python3.vim
+++ b/src/testdir/test_vim9_python3.vim
@@ -1,5 +1,5 @@
 
-import './vim9.vim' as v9
+import './util/vim9.vim' as v9
 CheckFeature python3
 
 def Test_python3_py3eval_locals()
diff --git a/src/testdir/test_vim9_script.vim b/src/testdir/test_vim9_script.vim
index 52d64c689..d4043d1db 100644
--- a/src/testdir/test_vim9_script.vim
+++ b/src/testdir/test_vim9_script.vim
@@ -1,7 +1,7 @@
 " Test various aspects of the Vim9 script language.
 
-import './vim9.vim' as v9
-source screendump.vim
+import './util/vim9.vim' as v9
+source util/screendump.vim
 
 def Test_vim9script_feature()
   # example from the help, here the feature is always present
@@ -3652,12 +3652,12 @@ def Test_vim9_comment()
       ], 'E1144:')
   v9.CheckScriptSuccess([
       'vim9script',
-      'import "./vim9.vim" as v9',
+      'import "./util/vim9.vim" as v9',
       'function v9.CheckScriptSuccess # comment',
       ])
   v9.CheckScriptFailure([
       'vim9script',
-      'import "./vim9.vim" as v9',
+      'import "./util/vim9.vim" as v9',
       'function v9.CheckScriptSuccess# comment',
       ], 'E1048: Item not found in script: CheckScriptSuccess#')
 
diff --git a/src/testdir/test_vim9_typealias.vim 
b/src/testdir/test_vim9_typealias.vim
index 9d7bd8927..f09f5d8b6 100644
--- a/src/testdir/test_vim9_typealias.vim
+++ b/src/testdir/test_vim9_typealias.vim
@@ -1,6 +1,6 @@
 " Test Vim9 type aliases
 
-import './vim9.vim' as v9
+import './util/vim9.vim' as v9
 
 " Test for :type command to create type aliases
 def Test_typealias()
diff --git a/src/testdir/test_vimscript.vim b/src/testdir/test_vimscript.vim
index e1000fbee..af78d1c93 100644
--- a/src/testdir/test_vimscript.vim
+++ b/src/testdir/test_vimscript.vim
@@ -2,7 +2,7 @@
 " Most of this was formerly in test49.vim (developed by Servatius Brandt
 " <servatius.bra...@fujitsu-siemens.com>)
 
-source script_util.vim
+source util/script_util.vim
 
 
"-------------------------------------------------------------------------------
 " Test environment                                                         {{{1
@@ -23,7 +23,7 @@ com! -nargs=1      Xout     call Xout(<args>)
 func RunInNewVim(test, verify)
   let init =<< trim END
     set cpo-=C            " support line-continuation in sourced script
-    source script_util.vim
+    source util/script_util.vim
     XpathINIT
     XloopINIT
   END
diff --git a/src/testdir/test_visual.vim b/src/testdir/test_visual.vim
index df9fe99e9..4fab92546 100644
--- a/src/testdir/test_visual.vim
+++ b/src/testdir/test_visual.vim
@@ -1,7 +1,7 @@
 " Tests for various Visual modes.
 
-source screendump.vim
-import './vim9.vim' as v9
+source util/screendump.vim
+import './util/vim9.vim' as v9
 
 func Test_block_shift_multibyte()
   " Uses double-wide character.
diff --git a/src/testdir/test_wayland.vim b/src/testdir/test_wayland.vim
index e72a37fa6..8aa9abcd2 100644
--- a/src/testdir/test_wayland.vim
+++ b/src/testdir/test_wayland.vim
@@ -1,4 +1,4 @@
-source window_manager.vim
+source util/window_manager.vim
 
 CheckFeature wayland
 CheckFeature wayland_clipboard
diff --git a/src/testdir/test_winbar.vim b/src/testdir/test_winbar.vim
index f6185f802..59241746b 100644
--- a/src/testdir/test_winbar.vim
+++ b/src/testdir/test_winbar.vim
@@ -2,7 +2,7 @@
 
 CheckFeature menu
 
-source screendump.vim
+source util/screendump.vim
 
 func Test_add_remove_menu()
   new
diff --git a/src/testdir/test_window_cmd.vim b/src/testdir/test_window_cmd.vim
index bc1aaa9fa..2e00ab453 100644
--- a/src/testdir/test_window_cmd.vim
+++ b/src/testdir/test_window_cmd.vim
@@ -1,6 +1,6 @@
 " Tests for window cmd (:wincmd, :split, :vsplit, :resize and etc...)
 
-source screendump.vim
+source util/screendump.vim
 
 func Test_window_cmd_ls0_with_split()
   set ls=0
diff --git a/src/testdir/test_xdg.vim b/src/testdir/test_xdg.vim
index 218714de3..abded4755 100644
--- a/src/testdir/test_xdg.vim
+++ b/src/testdir/test_xdg.vim
@@ -206,7 +206,7 @@ func Test_zzz_xdg_runtime_files()
 
   " Is setup in Github Runner
   unlet $XDG_CONFIG_HOME
-  source setup_gui.vim
+  source util/setup_gui.vim
   call GUISetUpCommon()
 
   " This tests, that the GUI initialization file from
diff --git a/src/testdir/test_xxd.vim b/src/testdir/test_xxd.vim
index b2ef4e5ca..79fc9bf10 100644
--- a/src/testdir/test_xxd.vim
+++ b/src/testdir/test_xxd.vim
@@ -1,6 +1,6 @@
 " Test for the xxd command
 
-source screendump.vim
+source util/screendump.vim
 
 if empty($XXD) && executable('..\xxd\xxd.exe')
   let s:xxd_cmd = '..\xxd\xxd.exe'
diff --git a/src/testdir/amiga.vim b/src/testdir/util/amiga.vim
similarity index 79%
rename from src/testdir/amiga.vim
rename to src/testdir/util/amiga.vim
index 79956d7d9..2837fe564 100644
--- a/src/testdir/amiga.vim
+++ b/src/testdir/util/amiga.vim
@@ -3,4 +3,4 @@ set shell=csh
 map! /tmp t:
 cmap !rm !Delete all
 
-source setup.vim
+source util/setup.vim
diff --git a/src/testdir/check.vim b/src/testdir/util/check.vim
similarity index 99%
rename from src/testdir/check.vim
rename to src/testdir/util/check.vim
index fd160b0aa..aa8eceb62 100644
--- a/src/testdir/check.vim
+++ b/src/testdir/util/check.vim
@@ -1,5 +1,5 @@
-source shared.vim
-source term_util.vim
+source util/shared.vim
+source util/term_util.vim
 
 " uses line-continuation
 let s:cpo_save = &cpo
@@ -154,7 +154,7 @@ func SetupWindowSizeToForVisualDumps()
 endfunc
 
 " Command to check that making screendumps is supported.
-" Caller must source screendump.vim
+" Caller must source util/screendump.vim
 command CheckScreendump call CheckScreendump()
 func CheckScreendump()
   let g:check_screendump_called = v:true
diff --git a/src/testdir/color_ramp.vim b/src/testdir/util/color_ramp.vim
similarity index 100%
rename from src/testdir/color_ramp.vim
rename to src/testdir/util/color_ramp.vim
diff --git a/src/testdir/dos.vim b/src/testdir/util/dos.vim
similarity index 93%
rename from src/testdir/dos.vim
rename to src/testdir/util/dos.vim
index 6301af575..3134d341a 100644
--- a/src/testdir/dos.vim
+++ b/src/testdir/util/dos.vim
@@ -6,4 +6,4 @@ if executable("cmd.exe")
    set shell=cmd.exe shellcmdflag=/D\ /c
 endif
 
-source setup.vim
+source util/setup.vim
diff --git a/src/testdir/gen_opt_test.vim b/src/testdir/util/gen_opt_test.vim
similarity index 99%
rename from src/testdir/gen_opt_test.vim
rename to src/testdir/util/gen_opt_test.vim
index 78a783e50..1e0f39cf4 100644
--- a/src/testdir/gen_opt_test.vim
+++ b/src/testdir/util/gen_opt_test.vim
@@ -50,7 +50,7 @@ let skip_setglobal_reasons = #{
 " Script header.
 " The test values contains multibyte characters.
 let script = [
-      \ '" DO NOT EDIT: Generated with gen_opt_test.vim',
+      \ '" DO NOT EDIT: Generated with util/gen_opt_test.vim',
       \ '" Used by test_options_all.vim.',
       \ '',
       \ 'scriptencoding utf-8',
diff --git a/src/testdir/gui_init.vim b/src/testdir/util/gui_init.vim
similarity index 100%
rename from src/testdir/gui_init.vim
rename to src/testdir/util/gui_init.vim
diff --git a/src/testdir/gui_preinit.vim b/src/testdir/util/gui_preinit.vim
similarity index 100%
rename from src/testdir/gui_preinit.vim
rename to src/testdir/util/gui_preinit.vim
diff --git a/src/testdir/mouse.vim b/src/testdir/util/mouse.vim
similarity index 100%
rename from src/testdir/mouse.vim
rename to src/testdir/util/mouse.vim
diff --git a/src/testdir/popupbounce.vim b/src/testdir/util/popupbounce.vim
similarity index 96%
rename from src/testdir/popupbounce.vim
rename to src/testdir/util/popupbounce.vim
index b9f7bd179..5e63aca34 100644
--- a/src/testdir/popupbounce.vim
+++ b/src/testdir/util/popupbounce.vim
@@ -3,7 +3,7 @@
 "    cd src
 "    # Edit Makefile to uncomment PROFILE_CFLAGS and PROFILE_LIBS
 "    make reconfig
-"    ./vim --clean -S testdir/popupbounce.vim main.c
+"    ./vim --clean -S testdir/util/popupbounce.vim main.c
 "    gprof vim gmon.out | vim -
 
 " using line continuation
diff --git a/src/testdir/screendump.vim b/src/testdir/util/screendump.vim
similarity index 100%
rename from src/testdir/screendump.vim
rename to src/testdir/util/screendump.vim
diff --git a/src/testdir/script_util.vim b/src/testdir/util/script_util.vim
similarity index 100%
rename from src/testdir/script_util.vim
rename to src/testdir/util/script_util.vim
diff --git a/src/testdir/setup.vim b/src/testdir/util/setup.vim
similarity index 100%
rename from src/testdir/setup.vim
rename to src/testdir/util/setup.vim
diff --git a/src/testdir/setup_gui.vim b/src/testdir/util/setup_gui.vim
similarity index 100%
rename from src/testdir/setup_gui.vim
rename to src/testdir/util/setup_gui.vim
diff --git a/src/testdir/shared.vim b/src/testdir/util/shared.vim
similarity index 99%
rename from src/testdir/shared.vim
rename to src/testdir/util/shared.vim
index f459d879c..ddd3f3725 100644
--- a/src/testdir/shared.vim
+++ b/src/testdir/util/shared.vim
@@ -5,7 +5,7 @@ if exists('*PythonProg')
   finish
 endif
 
-source view_util.vim
+source util/view_util.vim
 
 " When 'term' is changed some status requests may be sent.  The responses may
 " interfere with what is being tested.  A short sleep is used to process any of
diff --git a/src/testdir/summarize.vim b/src/testdir/util/summarize.vim
similarity index 100%
rename from src/testdir/summarize.vim
rename to src/testdir/util/summarize.vim
diff --git a/src/testdir/term_util.vim b/src/testdir/util/term_util.vim
similarity index 99%
rename from src/testdir/term_util.vim
rename to src/testdir/util/term_util.vim
index 19362aafd..61ff9ce1b 100644
--- a/src/testdir/term_util.vim
+++ b/src/testdir/util/term_util.vim
@@ -5,7 +5,7 @@ if exists('*CanRunVimInTerminal')
   finish
 endif
 
-source shared.vim
+source util/shared.vim
 
 " For most tests we need to be able to run terminal Vim with 256 colors.  On
 " MS-Windows the console only has 16 colors and the GUI can't run in a
diff --git a/src/testdir/unix.vim b/src/testdir/util/unix.vim
similarity index 94%
rename from src/testdir/unix.vim
rename to src/testdir/util/unix.vim
index 366c9b100..8a9712947 100644
--- a/src/testdir/unix.vim
+++ b/src/testdir/util/unix.vim
@@ -10,4 +10,4 @@ if 1
   let g:tester_HOME = $HOME
 endif
 
-source setup.vim
+source util/setup.vim
diff --git a/src/testdir/view_util.vim b/src/testdir/util/view_util.vim
similarity index 100%
rename from src/testdir/view_util.vim
rename to src/testdir/util/view_util.vim
diff --git a/src/testdir/vim9.vim b/src/testdir/util/vim9.vim
similarity index 100%
rename from src/testdir/vim9.vim
rename to src/testdir/util/vim9.vim
diff --git a/src/testdir/vms.vim b/src/testdir/util/vms.vim
similarity index 81%
rename from src/testdir/vms.vim
rename to src/testdir/util/vms.vim
index 64b390e28..0a264e956 100644
--- a/src/testdir/vms.vim
+++ b/src/testdir/util/vms.vim
@@ -3,4 +3,4 @@
 " Do not use any swap files
 set noswapfile
 
-source setup.vim
+source util/setup.vim
diff --git a/src/testdir/window_manager.vim 
b/src/testdir/util/window_manager.vim
similarity index 100%
rename from src/testdir/window_manager.vim
rename to src/testdir/util/window_manager.vim
diff --git a/src/version.c b/src/version.c
index 470104c1d..bf9424f8b 100644
--- a/src/version.c
+++ b/src/version.c
@@ -719,6 +719,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    1525,
 /**/
     1524,
 /**/

-- 
-- 
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to vim_dev+unsubscr...@googlegroups.com.
To view this discussion visit 
https://groups.google.com/d/msgid/vim_dev/E1uYr4P-009CKx-W9%40256bit.org.

Raspunde prin e-mail lui