mirror of
https://github.com/vim/vim
synced 2025-07-15 16:51:57 +00:00
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 <cb@256bit.org>
164 lines
4.9 KiB
Makefile
164 lines
4.9 KiB
Makefile
#
|
|
# Makefile to run all tests for Vim, on Dos-like machines.
|
|
#
|
|
# Requires a set of Unix tools: echo, diff, etc.
|
|
|
|
# Testing may be done with a debug build
|
|
!IF EXIST(..\\vimd.exe) && !EXIST(..\\vim.exe)
|
|
VIMPROG = ..\\vimd.exe
|
|
!ELSE
|
|
VIMPROG = ..\\vim.exe
|
|
!ENDIF
|
|
|
|
|
|
default: nongui
|
|
|
|
!include Make_all.mak
|
|
|
|
# Explicit dependencies.
|
|
test_options_all.res: opt_test.vim
|
|
|
|
TEST_OUTFILES = $(SCRIPTS_TINY_OUT)
|
|
DOSTMP = dostmp
|
|
DOSTMP_OUTFILES = $(TEST_OUTFILES:test=dostmp\test)
|
|
DOSTMP_INFILES = $(DOSTMP_OUTFILES:.out=.in)
|
|
|
|
.SUFFIXES: .in .out .res .vim
|
|
|
|
# Add --gui-dialog-file to avoid getting stuck in a dialog.
|
|
COMMON_ARGS = $(NO_INITS) --gui-dialog-file guidialog
|
|
|
|
nongui: nolog tinytests newtests report
|
|
|
|
gui: nolog tinytests newtests report
|
|
|
|
tiny: nolog tinytests report
|
|
|
|
benchmark: $(SCRIPTS_BENCH)
|
|
|
|
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 util\summarize.vim messages
|
|
-if exist starttime del starttime
|
|
@echo:
|
|
@echo Test results:
|
|
@cmd /c type test_result.log
|
|
@if exist test.log ( echo TEST FAILURE & exit /b 1 ) \
|
|
else ( echo ALL DONE )
|
|
|
|
|
|
# Execute an individual new style test, e.g.:
|
|
# nmake -f Make_mvc.mak test_largefile
|
|
$(NEW_TESTS):
|
|
-if exist $@.res del $@.res
|
|
-if exist test.log del test.log
|
|
-if exist messages del messages
|
|
-if exist starttime del starttime
|
|
@$(MAKE) -nologo -f Make_mvc.mak VIMPROG=$(VIMPROG) $@.res
|
|
@type messages
|
|
@if exist test.log exit 1
|
|
|
|
|
|
# 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.
|
|
clean:
|
|
-if exist *.out del *.out
|
|
-if exist *.failed del *.failed
|
|
-if exist *.res del *.res
|
|
-if exist $(DOSTMP) rd /s /q $(DOSTMP)
|
|
-if exist test.in del test.in
|
|
-if exist test.ok del test.ok
|
|
-if exist Xdir1 rd /s /q Xdir1
|
|
-if exist Xfind rd /s /q Xfind
|
|
-if exist XfakeHOME rd /s /q XfakeHOME
|
|
-if exist X* del X*
|
|
-for /d %i in (X*) do @rd /s/q %i
|
|
-if exist viminfo del viminfo
|
|
-if exist test.log del test.log
|
|
-if exist test_result.log del test_result.log
|
|
-if exist messages del messages
|
|
-if exist starttime del starttime
|
|
-if exist benchmark.out del benchmark.out
|
|
-if exist opt_test.vim del opt_test.vim
|
|
-if exist guidialog del guidialog
|
|
-if exist guidialogfile del guidialogfile
|
|
|
|
nolog:
|
|
-if exist test.log del test.log
|
|
-if exist test_result.log del test_result.log
|
|
-if exist messages del messages
|
|
-if exist starttime del starttime
|
|
|
|
|
|
# Tiny tests. Works even without the +eval feature.
|
|
tinytests: $(SCRIPTS_TINY_OUT)
|
|
|
|
# Copy the input files to dostmp, changing the fileformat to dos.
|
|
$(DOSTMP_INFILES): $(*B).in
|
|
if not exist $(DOSTMP)\NUL md $(DOSTMP)
|
|
if exist $@ del $@
|
|
$(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.
|
|
$(TEST_OUTFILES): $(DOSTMP)\$(*B).in
|
|
-@if exist test.out DEL test.out
|
|
-@if exist $(DOSTMP)\$(*B).out DEL $(DOSTMP)\$(*B).out
|
|
move $(*B).in $(*B).in.bak > nul
|
|
copy $(DOSTMP)\$(*B).in $(*B).in > nul
|
|
copy $(*B).ok test.ok > nul
|
|
$(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
|
|
-@if exist Xdir1 rd /s /q Xdir1
|
|
-@if exist Xfind rd /s /q Xfind
|
|
-@if exist XfakeHOME rd /s /q XfakeHOME
|
|
-@del X*
|
|
-@if exist viminfo del viminfo
|
|
$(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 \
|
|
& del $(DOSTMP)\$(*B).out \
|
|
& echo $* FAILED >> test.log ) \
|
|
else ( move /y test.out $*.out > nul )
|
|
|
|
|
|
# New style of tests uses Vim script with assert calls. These are easier
|
|
# to write and a lot easier to read and debug.
|
|
# Limitation: Only works with the +eval feature.
|
|
|
|
newtests: newtestssilent
|
|
@if exist messages type messages
|
|
|
|
newtestssilent: $(NEW_TESTS_RES)
|
|
|
|
.vim.res:
|
|
@echo $(VIMPROG) > vimcmd
|
|
$(VIMPROG) -u NONE $(COMMON_ARGS) -S runtest.vim $*.vim
|
|
@del vimcmd
|
|
|
|
test_gui.res: test_gui.vim
|
|
@echo $(VIMPROG) > vimcmd
|
|
$(VIMPROG) -u NONE $(COMMON_ARGS) -S runtest.vim $*.vim
|
|
@del vimcmd
|
|
|
|
test_gui_init.res: test_gui_init.vim
|
|
@echo $(VIMPROG) > vimcmd
|
|
$(VIMPROG) -u util\gui_preinit.vim -U util\gui_init.vim $(NO_PLUGINS) -S runtest.vim $*.vim
|
|
@del vimcmd
|
|
|
|
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 )
|
|
|
|
test_bench_regexp.res: test_bench_regexp.vim
|
|
-if exist benchmark.out del benchmark.out
|
|
@echo $(VIMPROG) > vimcmd
|
|
$(VIMPROG) -u NONE $(COMMON_ARGS) -S runtest.vim $*.vim
|
|
@del vimcmd
|
|
@IF EXIST benchmark.out ( type benchmark.out )
|