blob: f97b3e9bb4a2a4b0f9bf072a8f73d5faf0dc6dbb [file] [log] [blame]
Bram Moolenaar071d4272004-06-13 20:20:40 +00001#
Bram Moolenaar68392722010-07-30 22:04:17 +02002# Makefile to run all tests for Vim, on Dos-like machines.
Bram Moolenaar071d4272004-06-13 20:20:40 +00003#
4# Requires a set of Unix tools: echo, diff, etc.
5
6VIMPROG = ..\\vim
7
Bram Moolenaar40bbcee2015-12-28 22:24:41 +01008default: nongui
9
Bram Moolenaar7b6156f2015-12-28 16:01:26 +010010!include Make_all.mak
11
Bram Moolenaar071d4272004-06-13 20:20:40 +000012# Omitted:
Bram Moolenaarda9888a2015-12-28 21:35:14 +010013# test49 fails in various ways
Bram Moolenaar071d4272004-06-13 20:20:40 +000014
Bram Moolenaar53f0c962017-10-22 14:23:59 +020015SCRIPTS = $(SCRIPTS_ALL) $(SCRIPTS_MORE1) $(SCRIPTS_MORE4)
Bram Moolenaar071d4272004-06-13 20:20:40 +000016
Bram Moolenaara6082432015-12-28 16:26:45 +010017TEST_OUTFILES = $(SCRIPTS_FIRST) $(SCRIPTS) $(SCRIPTS_WIN32) $(SCRIPTS_GUI)
Bram Moolenaar13cf77b2015-02-27 21:11:02 +010018DOSTMP = dostmp
19DOSTMP_OUTFILES = $(TEST_OUTFILES:test=dostmp\test)
20DOSTMP_INFILES = $(DOSTMP_OUTFILES:.out=.in)
Bram Moolenaar071d4272004-06-13 20:20:40 +000021
Bram Moolenaar4e5a31c2015-12-29 17:11:15 +010022.SUFFIXES: .in .out .res .vim
Bram Moolenaar071d4272004-06-13 20:20:40 +000023
Bram Moolenaar4e5a31c2015-12-29 17:11:15 +010024nongui: nolog $(SCRIPTS_FIRST) $(SCRIPTS) newtests report
Bram Moolenaar071d4272004-06-13 20:20:40 +000025
Bram Moolenaar13cf77b2015-02-27 21:11:02 +010026small: nolog report
Bram Moolenaar071d4272004-06-13 20:20:40 +000027
Bram Moolenaar4e5a31c2015-12-29 17:11:15 +010028gui: nolog $(SCRIPTS_FIRST) $(SCRIPTS) $(SCRIPTS_GUI) newtests report
Bram Moolenaar071d4272004-06-13 20:20:40 +000029
Bram Moolenaar4e5a31c2015-12-29 17:11:15 +010030win32: nolog $(SCRIPTS_FIRST) $(SCRIPTS) $(SCRIPTS_WIN32) newtests report
Bram Moolenaar071d4272004-06-13 20:20:40 +000031
Bram Moolenaar13cf77b2015-02-27 21:11:02 +010032# Copy the input files to dostmp, changing the fileformat to dos.
33$(DOSTMP_INFILES): $(*B).in
34 if not exist $(DOSTMP)\NUL md $(DOSTMP)
35 if exist $@ del $@
Bram Moolenaar8be2fbb2017-02-23 19:32:47 +010036 $(VIMPROG) -u dos.vim $(NO_INITS) "+set ff=dos|f $@|wq" $(*B).in
Bram Moolenaar13cf77b2015-02-27 21:11:02 +010037
38# For each input file dostmp/test99.in run the tests.
39# This moves test99.in to test99.in.bak temporarily.
40$(TEST_OUTFILES): $(DOSTMP)\$(*B).in
41 -@if exist test.out DEL test.out
Bram Moolenaarb27523f2017-03-16 14:04:51 +010042 -@if exist $(DOSTMP)\$(*B).out DEL $(DOSTMP)\$(*B).out
Bram Moolenaar29891c42017-01-06 18:00:12 +010043 move $(*B).in $(*B).in.bak > nul
44 copy $(DOSTMP)\$(*B).in $(*B).in > nul
45 copy $(*B).ok test.ok > nul
Bram Moolenaar8be2fbb2017-02-23 19:32:47 +010046 $(VIMPROG) -u dos.vim $(NO_INITS) -s dotest.in $(*B).in
Bram Moolenaar29891c42017-01-06 18:00:12 +010047 -@if exist test.out MOVE /y test.out $(DOSTMP)\$(*B).out > nul
48 -@if exist $(*B).in.bak move /y $(*B).in.bak $(*B).in > nul
Bram Moolenaar13cf77b2015-02-27 21:11:02 +010049 -@if exist test.ok del test.ok
50 -@if exist Xdir1 rd /s /q Xdir1
51 -@if exist Xfind rd /s /q Xfind
Bram Moolenaar30fe8862017-07-29 23:01:57 +020052 -@if exist XfakeHOME rd /s /q XfakeHOME
Bram Moolenaaracf92d22016-01-02 16:00:20 +010053 -@del X*
Bram Moolenaar13cf77b2015-02-27 21:11:02 +010054 -@if exist viminfo del viminfo
Bram Moolenaar8be2fbb2017-02-23 19:32:47 +010055 $(VIMPROG) -u dos.vim $(NO_INITS) "+set ff=unix|f test.out|wq" \
Bram Moolenaar13cf77b2015-02-27 21:11:02 +010056 $(DOSTMP)\$(*B).out
57 @diff test.out $*.ok & if errorlevel 1 \
Bram Moolenaar29891c42017-01-06 18:00:12 +010058 ( move /y test.out $*.failed > nul \
Bram Moolenaar13cf77b2015-02-27 21:11:02 +010059 & del $(DOSTMP)\$(*B).out \
60 & echo $* FAILED >> test.log ) \
Bram Moolenaar29891c42017-01-06 18:00:12 +010061 else ( move /y test.out $*.out > nul )
Bram Moolenaarb78b0b02005-01-02 11:32:29 +000062
Bram Moolenaar60461972015-12-30 17:17:10 +010063# Must run test1 first to create small.vim.
64# This rule must come after the one that copies the input files to dostmp to
65# allow for running an individual test.
Bram Moolenaarec504012019-01-11 17:30:16 +010066$(SCRIPTS) $(SCRIPTS_GUI) $(SCRIPTS_WIN32) $(NEW_TESTS_RES): $(SCRIPTS_FIRST)
Bram Moolenaar60461972015-12-30 17:17:10 +010067
Bram Moolenaar6949eea2013-06-16 16:57:46 +020068report:
Bram Moolenaard53ebfc2019-10-20 21:47:20 +020069 @rem without the +eval feature test_result.log is a copy of test.log
70 @if exist test.log ( copy /y test.log test_result.log > nul ) \
71 else ( echo No failures reported > test_result.log )
72 $(VIMPROG) -u NONE $(NO_INITS) -S summarize.vim messages
73 @echo.
Bram Moolenaar6949eea2013-06-16 16:57:46 +020074 @echo Test results:
Bram Moolenaar7d232042019-11-05 22:37:20 +010075 @cmd /c type test_result.log
Bram Moolenaard53ebfc2019-10-20 21:47:20 +020076 @if exist test.log ( echo TEST FAILURE & exit /b 1 ) \
Bram Moolenaar13cf77b2015-02-27 21:11:02 +010077 else ( echo ALL DONE )
Bram Moolenaar6949eea2013-06-16 16:57:46 +020078
Bram Moolenaar071d4272004-06-13 20:20:40 +000079clean:
80 -del *.out
Bram Moolenaar555d2a82013-06-17 21:53:37 +020081 -del *.failed
Bram Moolenaar4e5a31c2015-12-29 17:11:15 +010082 -del *.res
Bram Moolenaar13cf77b2015-02-27 21:11:02 +010083 -if exist $(DOSTMP) rd /s /q $(DOSTMP)
84 -if exist test.in del test.in
Bram Moolenaar9c039782007-08-14 15:55:42 +000085 -if exist test.ok del test.ok
86 -if exist small.vim del small.vim
87 -if exist tiny.vim del tiny.vim
88 -if exist mbyte.vim del mbyte.vim
Bram Moolenaar2498b3a2010-03-02 17:59:44 +010089 -if exist mzscheme.vim del mzscheme.vim
Bram Moolenaar555d2a82013-06-17 21:53:37 +020090 -if exist Xdir1 rd /s /q Xdir1
91 -if exist Xfind rd /s /q Xfind
Bram Moolenaar30fe8862017-07-29 23:01:57 +020092 -if exist XfakeHOME rd /s /q XfakeHOME
Bram Moolenaaracf92d22016-01-02 16:00:20 +010093 -del X*
Bram Moolenaard0232912016-01-17 16:15:32 +010094 -for /d %i in (X*) do @rmdir /s/q %i
Bram Moolenaar9c039782007-08-14 15:55:42 +000095 -if exist viminfo del viminfo
Bram Moolenaar13cf77b2015-02-27 21:11:02 +010096 -if exist test.log del test.log
Bram Moolenaard53ebfc2019-10-20 21:47:20 +020097 -if exist test_result.log del test_result.log
Bram Moolenaar4e5a31c2015-12-29 17:11:15 +010098 -if exist messages del messages
Bram Moolenaar9c7d98d2014-11-05 15:46:09 +010099 -if exist benchmark.out del benchmark.out
Bram Moolenaar65408f72017-03-07 21:31:27 +0100100 -if exist opt_test.vim del opt_test.vim
Bram Moolenaar071d4272004-06-13 20:20:40 +0000101
Bram Moolenaar6949eea2013-06-16 16:57:46 +0200102nolog:
Bram Moolenaar13cf77b2015-02-27 21:11:02 +0100103 -if exist test.log del test.log
Bram Moolenaard53ebfc2019-10-20 21:47:20 +0200104 -if exist test_result.log del test_result.log
Bram Moolenaar4e5a31c2015-12-29 17:11:15 +0100105 -if exist messages del messages
Bram Moolenaarfda37292014-11-05 14:27:36 +0100106
Bram Moolenaarad48e6c2020-04-21 22:19:45 +0200107benchmark: test_bench_regexp.res
Bram Moolenaarfda37292014-11-05 14:27:36 +0100108
Bram Moolenaarad48e6c2020-04-21 22:19:45 +0200109test_bench_regexp.res: test_bench_regexp.vim
Bram Moolenaarfda37292014-11-05 14:27:36 +0100110 -if exist benchmark.out del benchmark.out
Bram Moolenaarad48e6c2020-04-21 22:19:45 +0200111 @echo $(VIMPROG) > vimcmd
112 $(VIMPROG) -u NONE $(NO_INITS) -S runtest.vim $*.vim
113 @del vimcmd
Bram Moolenaarfda37292014-11-05 14:27:36 +0100114 @IF EXIST benchmark.out ( type benchmark.out )
Bram Moolenaar4e5a31c2015-12-29 17:11:15 +0100115
116# New style of tests uses Vim script with assert calls. These are easier
117# to write and a lot easier to read and debug.
118# Limitation: Only works with the +eval feature.
119
Bram Moolenaar933bef72018-09-20 21:39:33 +0200120newtests: newtestssilent
121 @if exist messages (findstr "SKIPPED FAILED" messages > nul) && type messages
122
Bram Moolenaarec504012019-01-11 17:30:16 +0100123newtestssilent: $(NEW_TESTS_RES)
Bram Moolenaar4e5a31c2015-12-29 17:11:15 +0100124
125.vim.res:
Bram Moolenaar4635e112017-10-07 21:05:18 +0200126 @echo $(VIMPROG) > vimcmd
Bram Moolenaar8be2fbb2017-02-23 19:32:47 +0100127 $(VIMPROG) -u NONE $(NO_INITS) -S runtest.vim $*.vim
128 @del vimcmd
129
130test_gui.res: test_gui.vim
Bram Moolenaar4635e112017-10-07 21:05:18 +0200131 @echo $(VIMPROG) > vimcmd
Bram Moolenaar10c60292017-02-23 20:17:13 +0100132 $(VIMPROG) -u NONE $(NO_INITS) -S runtest.vim $*.vim
Bram Moolenaar8be2fbb2017-02-23 19:32:47 +0100133 @del vimcmd
134
135test_gui_init.res: test_gui_init.vim
Bram Moolenaar4635e112017-10-07 21:05:18 +0200136 @echo $(VIMPROG) > vimcmd
Bram Moolenaar87748452017-03-12 17:10:33 +0100137 $(VIMPROG) -u gui_preinit.vim -U gui_init.vim $(NO_PLUGINS) -S runtest.vim $*.vim
Bram Moolenaar5b4a3762016-08-06 20:36:34 +0200138 @del vimcmd
Bram Moolenaar65408f72017-03-07 21:31:27 +0100139
Bram Moolenaar46fd6bf2019-01-11 19:19:44 +0100140test_options.res test_alot.res: opt_test.vim
141
Bram Moolenaard9b0d832019-09-14 15:46:32 +0200142opt_test.vim: ../optiondefs.h gen_opt_test.vim
143 $(VIMPROG) -u NONE -S gen_opt_test.vim --noplugin --not-a-term ../optiondefs.h