blob: 0638adef9827e461fbec90d60cab6fd4392bc660 [file] [log] [blame]
Bram Moolenaar68392722010-07-30 22:04:17 +02001#
2# Makefile to run all tests for Vim, on Dos-like machines
Bram Moolenaar34b6cb12008-09-20 14:27:03 +00003# with sh.exe or zsh.exe in the path or not.
4#
5# Author: Bill McCarthy
6#
Bram Moolenaar34b6cb12008-09-20 14:27:03 +00007# Requires a set of Unix tools: echo, diff, etc.
8
Bram Moolenaarb96a32e2020-08-13 18:59:55 +02009# Don't use unix-like shell.
10SHELL = cmd.exe
11
Bram Moolenaar34b6cb12008-09-20 14:27:03 +000012DEL = del
Bram Moolenaaracf92d22016-01-02 16:00:20 +010013DELDIR = rd /s /q
Bram Moolenaarb96a32e2020-08-13 18:59:55 +020014MV = move /y
15CP = copy /y
Bram Moolenaarfda37292014-11-05 14:27:36 +010016CAT = type
Bram Moolenaar34b6cb12008-09-20 14:27:03 +000017
Bram Moolenaarb96a32e2020-08-13 18:59:55 +020018VIMPROG = ..\\vim
Bram Moolenaar34b6cb12008-09-20 14:27:03 +000019
Bram Moolenaarb96a32e2020-08-13 18:59:55 +020020default: nongui
Bram Moolenaar40bbcee2015-12-28 22:24:41 +010021
Bram Moolenaar7b6156f2015-12-28 16:01:26 +010022include Make_all.mak
23
Bram Moolenaarb96a32e2020-08-13 18:59:55 +020024# Explicit dependencies.
25test_options.res test_alot.res: opt_test.vim
Bram Moolenaarfda37292014-11-05 14:27:36 +010026
Bram Moolenaarb96a32e2020-08-13 18:59:55 +020027TEST_OUTFILES = $(SCRIPTS_TINY_OUT)
28DOSTMP = dostmp
29# Keep $(DOSTMP)/*.in
30.PRECIOUS: $(patsubst %.out, $(DOSTMP)/%.in, $(TEST_OUTFILES))
Bram Moolenaara6082432015-12-28 16:26:45 +010031
Bram Moolenaar9bd31862016-06-13 22:58:39 +020032.SUFFIXES: .in .out .res .vim
Bram Moolenaar34b6cb12008-09-20 14:27:03 +000033
Bram Moolenaar2d12c252022-06-13 21:42:45 +010034# Add --gui-dialog-file to avoid getting stuck in a dialog.
35COMMON_ARGS = $(NO_INITS) --gui-dialog-file guidialog
36
Bram Moolenaarb96a32e2020-08-13 18:59:55 +020037nongui: nolog tinytests newtests report
Bram Moolenaar34b6cb12008-09-20 14:27:03 +000038
Bram Moolenaarb96a32e2020-08-13 18:59:55 +020039gui: nolog tinytests newtests report
40
41tiny: nolog tinytests report
Bram Moolenaar34b6cb12008-09-20 14:27:03 +000042
Bram Moolenaarfda37292014-11-05 14:27:36 +010043benchmark: $(SCRIPTS_BENCH)
44
Bram Moolenaarb96a32e2020-08-13 18:59:55 +020045report:
46 @rem without the +eval feature test_result.log is a copy of test.log
47 @if exist test.log ( copy /y test.log test_result.log > nul ) \
48 else ( echo No failures reported > test_result.log )
Bram Moolenaar2d12c252022-06-13 21:42:45 +010049 $(VIMPROG) -u NONE $(COMMON_ARGS) -S summarize.vim messages
Bram Moolenaarb96a32e2020-08-13 18:59:55 +020050 @echo.
51 @echo Test results:
52 @cmd /c type test_result.log
53 @if exist test.log ( echo TEST FAILURE & exit /b 1 ) \
54 else ( echo ALL DONE )
Bram Moolenaar34b6cb12008-09-20 14:27:03 +000055
Bram Moolenaar34b6cb12008-09-20 14:27:03 +000056
Bram Moolenaarb96a32e2020-08-13 18:59:55 +020057# Execute an individual new style test, e.g.:
58# mingw32-make -f Make_ming.mak test_largefile
59$(NEW_TESTS):
60 -if exist $@.res del $@.res
61 -if exist test.log del test.log
62 -if exist messages del messages
63 @$(MAKE) -f Make_ming.mak $@.res VIMPROG=$(VIMPROG) --no-print-directory
64 @type messages
65 @if exist test.log exit 1
Bram Moolenaar34b6cb12008-09-20 14:27:03 +000066
Bram Moolenaar34b6cb12008-09-20 14:27:03 +000067
Bram Moolenaarb96a32e2020-08-13 18:59:55 +020068# Delete files that may interfere with running tests. This includes some files
69# that may result from working on the tests, not only from running them.
Bram Moolenaar34b6cb12008-09-20 14:27:03 +000070clean:
Bram Moolenaar9bd31862016-06-13 22:58:39 +020071 -@if exist *.out $(DEL) *.out
72 -@if exist *.failed $(DEL) *.failed
73 -@if exist *.res $(DEL) *.res
Bram Moolenaarb96a32e2020-08-13 18:59:55 +020074 -@if exist $(DOSTMP) rd /s /q $(DOSTMP)
Bram Moolenaar9bd31862016-06-13 22:58:39 +020075 -@if exist test.in $(DEL) test.in
76 -@if exist test.ok $(DEL) test.ok
Bram Moolenaar9bd31862016-06-13 22:58:39 +020077 -@if exist Xdir1 $(DELDIR) Xdir1
78 -@if exist Xfind $(DELDIR) Xfind
Bram Moolenaar30fe8862017-07-29 23:01:57 +020079 -@if exist XfakeHOME $(DELDIR) XfakeHOME
Bram Moolenaar9bd31862016-06-13 22:58:39 +020080 -@if exist X* $(DEL) X*
Bram Moolenaarb96a32e2020-08-13 18:59:55 +020081 -@for /d %%i in (X*) do @rd /s/q %%i
Bram Moolenaar9bd31862016-06-13 22:58:39 +020082 -@if exist viminfo $(DEL) viminfo
83 -@if exist test.log $(DEL) test.log
Bram Moolenaarb96a32e2020-08-13 18:59:55 +020084 -@if exist test_result.log del test_result.log
Bram Moolenaar9bd31862016-06-13 22:58:39 +020085 -@if exist messages $(DEL) messages
Bram Moolenaarb96a32e2020-08-13 18:59:55 +020086 -@if exist benchmark.out del benchmark.out
Bram Moolenaar65408f72017-03-07 21:31:27 +010087 -@if exist opt_test.vim $(DEL) opt_test.vim
Bram Moolenaar2d12c252022-06-13 21:42:45 +010088 -@if exist guidialog $(DEL) guidialog
89 -@if exist guidialogfile $(DEL) guidialogfile
Bram Moolenaar34b6cb12008-09-20 14:27:03 +000090
Bram Moolenaar9bd31862016-06-13 22:58:39 +020091nolog:
92 -@if exist test.log $(DEL) test.log
Bram Moolenaarb96a32e2020-08-13 18:59:55 +020093 -@if exist test_result.log del test_result.log
Bram Moolenaar9bd31862016-06-13 22:58:39 +020094 -@if exist messages $(DEL) messages
Bram Moolenaarfda37292014-11-05 14:27:36 +010095
Bram Moolenaarb96a32e2020-08-13 18:59:55 +020096
97# Tiny tests. Works even without the +eval feature.
98tinytests: $(SCRIPTS_TINY_OUT)
99
100# Copy the input files to dostmp, changing the fileformat to dos.
101$(DOSTMP)/%.in : %.in
102 if not exist $(DOSTMP)\nul mkdir $(DOSTMP)
Bram Moolenaar05c1acd2020-09-13 21:01:22 +0200103 if exist $(DOSTMP)\$< $(DEL) $(DOSTMP)\$<
Bram Moolenaar2d12c252022-06-13 21:42:45 +0100104 $(VIMPROG) -u dos.vim $(COMMON_ARGS) "+set ff=dos|f $@|wq" $<
Bram Moolenaarb96a32e2020-08-13 18:59:55 +0200105
106# For each input file dostmp/test99.in run the tests.
107# This moves test99.in to test99.in.bak temporarily.
108%.out : $(DOSTMP)/%.in
109 -@if exist test.out $(DEL) test.out
110 -@if exist $(DOSTMP)\$@ $(DEL) $(DOSTMP)\$@
111 $(MV) $(notdir $<) $(notdir $<).bak > NUL
112 $(CP) $(DOSTMP)\$(notdir $<) $(notdir $<) > NUL
113 $(CP) $(basename $@).ok test.ok > NUL
Bram Moolenaar2d12c252022-06-13 21:42:45 +0100114 $(VIMPROG) -u dos.vim $(COMMON_ARGS) -s dotest.in $(notdir $<)
Bram Moolenaarb96a32e2020-08-13 18:59:55 +0200115 -@if exist test.out $(MV) test.out $(DOSTMP)\$@ > NUL
116 -@if exist $(notdir $<).bak $(MV) $(notdir $<).bak $(notdir $<) > NUL
117 -@if exist test.ok $(DEL) test.ok
118 -@if exist Xdir1 $(DELDIR) /s /q Xdir1
119 -@if exist Xfind $(DELDIR) Xfind
120 -@if exist XfakeHOME $(DELDIR) XfakeHOME
121 -@del X*
122 -@if exist viminfo del viminfo
Bram Moolenaar2d12c252022-06-13 21:42:45 +0100123 $(VIMPROG) -u dos.vim $(COMMON_ARGS) "+set ff=unix|f test.out|wq" \
Bram Moolenaarb96a32e2020-08-13 18:59:55 +0200124 $(DOSTMP)\$@
125 @diff test.out $(basename $@).ok & if errorlevel 1 \
126 ( $(MV) test.out $(basename $@).failed > NUL \
127 & del $(DOSTMP)\$@ \
128 & echo $(basename $@) FAILED >> test.log ) \
129 else ( $(MV) test.out $(basename $@).out > NUL )
130
Bram Moolenaar9bd31862016-06-13 22:58:39 +0200131
132# New style of tests uses Vim script with assert calls. These are easier
133# to write and a lot easier to read and debug.
134# Limitation: Only works with the +eval feature.
135
Bram Moolenaarb96a32e2020-08-13 18:59:55 +0200136newtests: newtestssilent
Bram Moolenaar6e3aeec2020-08-26 22:29:57 +0200137 @if exist messages type messages
Bram Moolenaarb96a32e2020-08-13 18:59:55 +0200138
139newtestssilent: $(NEW_TESTS_RES)
Bram Moolenaar9bd31862016-06-13 22:58:39 +0200140
141.vim.res:
Bram Moolenaar4635e112017-10-07 21:05:18 +0200142 @echo $(VIMPROG) > vimcmd
Bram Moolenaar2d12c252022-06-13 21:42:45 +0100143 $(VIMPROG) -u NONE $(COMMON_ARGS) -S runtest.vim $*.vim
Bram Moolenaar8be2fbb2017-02-23 19:32:47 +0100144 @$(DEL) vimcmd
145
146test_gui.res: test_gui.vim
Bram Moolenaar4635e112017-10-07 21:05:18 +0200147 @echo $(VIMPROG) > vimcmd
Bram Moolenaar2d12c252022-06-13 21:42:45 +0100148 $(VIMPROG) -u NONE $(COMMON_ARGS) -S runtest.vim $<
Bram Moolenaar8be2fbb2017-02-23 19:32:47 +0100149 @$(DEL) vimcmd
150
151test_gui_init.res: test_gui_init.vim
Bram Moolenaar4635e112017-10-07 21:05:18 +0200152 @echo $(VIMPROG) > vimcmd
Bram Moolenaar84be8b62017-03-13 22:41:42 +0100153 $(VIMPROG) -u gui_preinit.vim -U gui_init.vim $(NO_PLUGINS) -S runtest.vim $<
Bram Moolenaar5b4a3762016-08-06 20:36:34 +0200154 @$(DEL) vimcmd
Bram Moolenaar9bd31862016-06-13 22:58:39 +0200155
Bram Moolenaard9b0d832019-09-14 15:46:32 +0200156opt_test.vim: ../optiondefs.h gen_opt_test.vim
157 $(VIMPROG) -u NONE -S gen_opt_test.vim --noplugin --not-a-term ../optiondefs.h
Bram Moolenaarb96a32e2020-08-13 18:59:55 +0200158
159test_bench_regexp.res: test_bench_regexp.vim
160 -$(DEL) benchmark.out
161 @echo $(VIMPROG) > vimcmd
Bram Moolenaar2d12c252022-06-13 21:42:45 +0100162 $(VIMPROG) -u NONE $(COMMON_ARGS) -S runtest.vim $*.vim
Bram Moolenaarb96a32e2020-08-13 18:59:55 +0200163 @$(DEL) vimcmd
164 $(CAT) benchmark.out