Bram Moolenaar | 6839272 | 2010-07-30 22:04:17 +0200 | [diff] [blame] | 1 | # |
| 2 | # Makefile to run all tests for Vim, on Dos-like machines |
Bram Moolenaar | 34b6cb1 | 2008-09-20 14:27:03 +0000 | [diff] [blame] | 3 | # with sh.exe or zsh.exe in the path or not. |
| 4 | # |
| 5 | # Author: Bill McCarthy |
| 6 | # |
Bram Moolenaar | 34b6cb1 | 2008-09-20 14:27:03 +0000 | [diff] [blame] | 7 | # Requires a set of Unix tools: echo, diff, etc. |
| 8 | |
Bram Moolenaar | b96a32e | 2020-08-13 18:59:55 +0200 | [diff] [blame] | 9 | # Don't use unix-like shell. |
| 10 | SHELL = cmd.exe |
| 11 | |
Bram Moolenaar | 34b6cb1 | 2008-09-20 14:27:03 +0000 | [diff] [blame] | 12 | DEL = del |
Bram Moolenaar | acf92d2 | 2016-01-02 16:00:20 +0100 | [diff] [blame] | 13 | DELDIR = rd /s /q |
Bram Moolenaar | b96a32e | 2020-08-13 18:59:55 +0200 | [diff] [blame] | 14 | MV = move /y |
| 15 | CP = copy /y |
Bram Moolenaar | fda3729 | 2014-11-05 14:27:36 +0100 | [diff] [blame] | 16 | CAT = type |
Bram Moolenaar | 34b6cb1 | 2008-09-20 14:27:03 +0000 | [diff] [blame] | 17 | |
Bram Moolenaar | b96a32e | 2020-08-13 18:59:55 +0200 | [diff] [blame] | 18 | VIMPROG = ..\\vim |
Bram Moolenaar | 34b6cb1 | 2008-09-20 14:27:03 +0000 | [diff] [blame] | 19 | |
Bram Moolenaar | b96a32e | 2020-08-13 18:59:55 +0200 | [diff] [blame] | 20 | default: nongui |
Bram Moolenaar | 40bbcee | 2015-12-28 22:24:41 +0100 | [diff] [blame] | 21 | |
Bram Moolenaar | 7b6156f | 2015-12-28 16:01:26 +0100 | [diff] [blame] | 22 | include Make_all.mak |
| 23 | |
Bram Moolenaar | b96a32e | 2020-08-13 18:59:55 +0200 | [diff] [blame] | 24 | # Explicit dependencies. |
| 25 | test_options.res test_alot.res: opt_test.vim |
Bram Moolenaar | fda3729 | 2014-11-05 14:27:36 +0100 | [diff] [blame] | 26 | |
Bram Moolenaar | b96a32e | 2020-08-13 18:59:55 +0200 | [diff] [blame] | 27 | TEST_OUTFILES = $(SCRIPTS_TINY_OUT) |
| 28 | DOSTMP = dostmp |
| 29 | # Keep $(DOSTMP)/*.in |
| 30 | .PRECIOUS: $(patsubst %.out, $(DOSTMP)/%.in, $(TEST_OUTFILES)) |
Bram Moolenaar | a608243 | 2015-12-28 16:26:45 +0100 | [diff] [blame] | 31 | |
Bram Moolenaar | 9bd3186 | 2016-06-13 22:58:39 +0200 | [diff] [blame] | 32 | .SUFFIXES: .in .out .res .vim |
Bram Moolenaar | 34b6cb1 | 2008-09-20 14:27:03 +0000 | [diff] [blame] | 33 | |
Bram Moolenaar | b96a32e | 2020-08-13 18:59:55 +0200 | [diff] [blame] | 34 | nongui: nolog tinytests newtests report |
Bram Moolenaar | 34b6cb1 | 2008-09-20 14:27:03 +0000 | [diff] [blame] | 35 | |
Bram Moolenaar | b96a32e | 2020-08-13 18:59:55 +0200 | [diff] [blame] | 36 | gui: nolog tinytests newtests report |
| 37 | |
| 38 | tiny: nolog tinytests report |
Bram Moolenaar | 34b6cb1 | 2008-09-20 14:27:03 +0000 | [diff] [blame] | 39 | |
Bram Moolenaar | fda3729 | 2014-11-05 14:27:36 +0100 | [diff] [blame] | 40 | benchmark: $(SCRIPTS_BENCH) |
| 41 | |
Bram Moolenaar | b96a32e | 2020-08-13 18:59:55 +0200 | [diff] [blame] | 42 | report: |
| 43 | @rem without the +eval feature test_result.log is a copy of test.log |
| 44 | @if exist test.log ( copy /y test.log test_result.log > nul ) \ |
| 45 | else ( echo No failures reported > test_result.log ) |
| 46 | $(VIMPROG) -u NONE $(NO_INITS) -S summarize.vim messages |
| 47 | @echo. |
| 48 | @echo Test results: |
| 49 | @cmd /c type test_result.log |
| 50 | @if exist test.log ( echo TEST FAILURE & exit /b 1 ) \ |
| 51 | else ( echo ALL DONE ) |
Bram Moolenaar | 34b6cb1 | 2008-09-20 14:27:03 +0000 | [diff] [blame] | 52 | |
Bram Moolenaar | 34b6cb1 | 2008-09-20 14:27:03 +0000 | [diff] [blame] | 53 | |
Bram Moolenaar | b96a32e | 2020-08-13 18:59:55 +0200 | [diff] [blame] | 54 | # Execute an individual new style test, e.g.: |
| 55 | # mingw32-make -f Make_ming.mak test_largefile |
| 56 | $(NEW_TESTS): |
| 57 | -if exist $@.res del $@.res |
| 58 | -if exist test.log del test.log |
| 59 | -if exist messages del messages |
| 60 | @$(MAKE) -f Make_ming.mak $@.res VIMPROG=$(VIMPROG) --no-print-directory |
| 61 | @type messages |
| 62 | @if exist test.log exit 1 |
Bram Moolenaar | 34b6cb1 | 2008-09-20 14:27:03 +0000 | [diff] [blame] | 63 | |
Bram Moolenaar | 34b6cb1 | 2008-09-20 14:27:03 +0000 | [diff] [blame] | 64 | |
Bram Moolenaar | b96a32e | 2020-08-13 18:59:55 +0200 | [diff] [blame] | 65 | # Delete files that may interfere with running tests. This includes some files |
| 66 | # that may result from working on the tests, not only from running them. |
Bram Moolenaar | 34b6cb1 | 2008-09-20 14:27:03 +0000 | [diff] [blame] | 67 | clean: |
Bram Moolenaar | 9bd3186 | 2016-06-13 22:58:39 +0200 | [diff] [blame] | 68 | -@if exist *.out $(DEL) *.out |
| 69 | -@if exist *.failed $(DEL) *.failed |
| 70 | -@if exist *.res $(DEL) *.res |
Bram Moolenaar | b96a32e | 2020-08-13 18:59:55 +0200 | [diff] [blame] | 71 | -@if exist $(DOSTMP) rd /s /q $(DOSTMP) |
Bram Moolenaar | 9bd3186 | 2016-06-13 22:58:39 +0200 | [diff] [blame] | 72 | -@if exist test.in $(DEL) test.in |
| 73 | -@if exist test.ok $(DEL) test.ok |
Bram Moolenaar | 9bd3186 | 2016-06-13 22:58:39 +0200 | [diff] [blame] | 74 | -@if exist Xdir1 $(DELDIR) Xdir1 |
| 75 | -@if exist Xfind $(DELDIR) Xfind |
Bram Moolenaar | 30fe886 | 2017-07-29 23:01:57 +0200 | [diff] [blame] | 76 | -@if exist XfakeHOME $(DELDIR) XfakeHOME |
Bram Moolenaar | 9bd3186 | 2016-06-13 22:58:39 +0200 | [diff] [blame] | 77 | -@if exist X* $(DEL) X* |
Bram Moolenaar | b96a32e | 2020-08-13 18:59:55 +0200 | [diff] [blame] | 78 | -@for /d %%i in (X*) do @rd /s/q %%i |
Bram Moolenaar | 9bd3186 | 2016-06-13 22:58:39 +0200 | [diff] [blame] | 79 | -@if exist viminfo $(DEL) viminfo |
| 80 | -@if exist test.log $(DEL) test.log |
Bram Moolenaar | b96a32e | 2020-08-13 18:59:55 +0200 | [diff] [blame] | 81 | -@if exist test_result.log del test_result.log |
Bram Moolenaar | 9bd3186 | 2016-06-13 22:58:39 +0200 | [diff] [blame] | 82 | -@if exist messages $(DEL) messages |
Bram Moolenaar | b96a32e | 2020-08-13 18:59:55 +0200 | [diff] [blame] | 83 | -@if exist benchmark.out del benchmark.out |
Bram Moolenaar | 65408f7 | 2017-03-07 21:31:27 +0100 | [diff] [blame] | 84 | -@if exist opt_test.vim $(DEL) opt_test.vim |
Bram Moolenaar | 34b6cb1 | 2008-09-20 14:27:03 +0000 | [diff] [blame] | 85 | |
Bram Moolenaar | 9bd3186 | 2016-06-13 22:58:39 +0200 | [diff] [blame] | 86 | nolog: |
| 87 | -@if exist test.log $(DEL) test.log |
Bram Moolenaar | b96a32e | 2020-08-13 18:59:55 +0200 | [diff] [blame] | 88 | -@if exist test_result.log del test_result.log |
Bram Moolenaar | 9bd3186 | 2016-06-13 22:58:39 +0200 | [diff] [blame] | 89 | -@if exist messages $(DEL) messages |
Bram Moolenaar | fda3729 | 2014-11-05 14:27:36 +0100 | [diff] [blame] | 90 | |
Bram Moolenaar | b96a32e | 2020-08-13 18:59:55 +0200 | [diff] [blame] | 91 | |
| 92 | # Tiny tests. Works even without the +eval feature. |
| 93 | tinytests: $(SCRIPTS_TINY_OUT) |
| 94 | |
| 95 | # Copy the input files to dostmp, changing the fileformat to dos. |
| 96 | $(DOSTMP)/%.in : %.in |
| 97 | if not exist $(DOSTMP)\nul mkdir $(DOSTMP) |
Bram Moolenaar | 05c1acd | 2020-09-13 21:01:22 +0200 | [diff] [blame] | 98 | if exist $(DOSTMP)\$< $(DEL) $(DOSTMP)\$< |
Bram Moolenaar | b96a32e | 2020-08-13 18:59:55 +0200 | [diff] [blame] | 99 | $(VIMPROG) -u dos.vim $(NO_INITS) "+set ff=dos|f $@|wq" $< |
| 100 | |
| 101 | # For each input file dostmp/test99.in run the tests. |
| 102 | # This moves test99.in to test99.in.bak temporarily. |
| 103 | %.out : $(DOSTMP)/%.in |
| 104 | -@if exist test.out $(DEL) test.out |
| 105 | -@if exist $(DOSTMP)\$@ $(DEL) $(DOSTMP)\$@ |
| 106 | $(MV) $(notdir $<) $(notdir $<).bak > NUL |
| 107 | $(CP) $(DOSTMP)\$(notdir $<) $(notdir $<) > NUL |
| 108 | $(CP) $(basename $@).ok test.ok > NUL |
| 109 | $(VIMPROG) -u dos.vim $(NO_INITS) -s dotest.in $(notdir $<) |
| 110 | -@if exist test.out $(MV) test.out $(DOSTMP)\$@ > NUL |
| 111 | -@if exist $(notdir $<).bak $(MV) $(notdir $<).bak $(notdir $<) > NUL |
| 112 | -@if exist test.ok $(DEL) test.ok |
| 113 | -@if exist Xdir1 $(DELDIR) /s /q Xdir1 |
| 114 | -@if exist Xfind $(DELDIR) Xfind |
| 115 | -@if exist XfakeHOME $(DELDIR) XfakeHOME |
| 116 | -@del X* |
| 117 | -@if exist viminfo del viminfo |
| 118 | $(VIMPROG) -u dos.vim $(NO_INITS) "+set ff=unix|f test.out|wq" \ |
| 119 | $(DOSTMP)\$@ |
| 120 | @diff test.out $(basename $@).ok & if errorlevel 1 \ |
| 121 | ( $(MV) test.out $(basename $@).failed > NUL \ |
| 122 | & del $(DOSTMP)\$@ \ |
| 123 | & echo $(basename $@) FAILED >> test.log ) \ |
| 124 | else ( $(MV) test.out $(basename $@).out > NUL ) |
| 125 | |
Bram Moolenaar | 9bd3186 | 2016-06-13 22:58:39 +0200 | [diff] [blame] | 126 | |
| 127 | # New style of tests uses Vim script with assert calls. These are easier |
| 128 | # to write and a lot easier to read and debug. |
| 129 | # Limitation: Only works with the +eval feature. |
| 130 | |
Bram Moolenaar | b96a32e | 2020-08-13 18:59:55 +0200 | [diff] [blame] | 131 | newtests: newtestssilent |
Bram Moolenaar | 6e3aeec | 2020-08-26 22:29:57 +0200 | [diff] [blame] | 132 | @if exist messages type messages |
Bram Moolenaar | b96a32e | 2020-08-13 18:59:55 +0200 | [diff] [blame] | 133 | |
| 134 | newtestssilent: $(NEW_TESTS_RES) |
Bram Moolenaar | 9bd3186 | 2016-06-13 22:58:39 +0200 | [diff] [blame] | 135 | |
| 136 | .vim.res: |
Bram Moolenaar | 4635e11 | 2017-10-07 21:05:18 +0200 | [diff] [blame] | 137 | @echo $(VIMPROG) > vimcmd |
Bram Moolenaar | 8be2fbb | 2017-02-23 19:32:47 +0100 | [diff] [blame] | 138 | $(VIMPROG) -u NONE $(NO_INITS) -S runtest.vim $*.vim |
| 139 | @$(DEL) vimcmd |
| 140 | |
| 141 | test_gui.res: test_gui.vim |
Bram Moolenaar | 4635e11 | 2017-10-07 21:05:18 +0200 | [diff] [blame] | 142 | @echo $(VIMPROG) > vimcmd |
Bram Moolenaar | 8be2fbb | 2017-02-23 19:32:47 +0100 | [diff] [blame] | 143 | $(VIMPROG) -u NONE $(NO_INITS) -S runtest.vim $< |
| 144 | @$(DEL) vimcmd |
| 145 | |
| 146 | test_gui_init.res: test_gui_init.vim |
Bram Moolenaar | 4635e11 | 2017-10-07 21:05:18 +0200 | [diff] [blame] | 147 | @echo $(VIMPROG) > vimcmd |
Bram Moolenaar | 84be8b6 | 2017-03-13 22:41:42 +0100 | [diff] [blame] | 148 | $(VIMPROG) -u gui_preinit.vim -U gui_init.vim $(NO_PLUGINS) -S runtest.vim $< |
Bram Moolenaar | 5b4a376 | 2016-08-06 20:36:34 +0200 | [diff] [blame] | 149 | @$(DEL) vimcmd |
Bram Moolenaar | 9bd3186 | 2016-06-13 22:58:39 +0200 | [diff] [blame] | 150 | |
Bram Moolenaar | d9b0d83 | 2019-09-14 15:46:32 +0200 | [diff] [blame] | 151 | opt_test.vim: ../optiondefs.h gen_opt_test.vim |
| 152 | $(VIMPROG) -u NONE -S gen_opt_test.vim --noplugin --not-a-term ../optiondefs.h |
Bram Moolenaar | b96a32e | 2020-08-13 18:59:55 +0200 | [diff] [blame] | 153 | |
| 154 | test_bench_regexp.res: test_bench_regexp.vim |
| 155 | -$(DEL) benchmark.out |
| 156 | @echo $(VIMPROG) > vimcmd |
| 157 | $(VIMPROG) -u NONE $(NO_INITS) -S runtest.vim $*.vim |
| 158 | @$(DEL) vimcmd |
| 159 | $(CAT) benchmark.out |