Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 1 | # |
Bram Moolenaar | 6ee1016 | 2007-07-26 20:58:42 +0000 | [diff] [blame] | 2 | # Makefile to run all tests for Vim |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 3 | # |
| 4 | |
Bram Moolenaar | 3f12a24 | 2015-12-05 20:56:57 +0100 | [diff] [blame] | 5 | # Use console or GUI. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 6 | VIMPROG = ../vim |
Bram Moolenaar | 29f9ed2 | 2018-04-10 19:20:31 +0200 | [diff] [blame] | 7 | XXDPROG = ../xxd/xxd |
Bram Moolenaar | 3f12a24 | 2015-12-05 20:56:57 +0100 | [diff] [blame] | 8 | # VIMPROG = ../gvim |
| 9 | |
Bram Moolenaar | efa304d | 2014-04-01 14:08:28 +0200 | [diff] [blame] | 10 | SCRIPTSOURCE = ../../runtime |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 11 | |
Bram Moolenaar | d8f27b3 | 2018-10-07 15:42:07 +0200 | [diff] [blame] | 12 | # Comment out this line to see the verbose output of tests. |
| 13 | # |
| 14 | # Catches SwapExists to avoid hanging at the ATTENTION prompt. |
Bram Moolenaar | 592f57f | 2021-03-20 16:44:25 +0100 | [diff] [blame] | 15 | REDIR_TEST_TO_NULL = --cmd 'au SwapExists * let v:swapchoice = "e"' | LC_ALL=C LANG=C LANGUAGE=C awk '/Executing Test_/{match($$0, "Executing Test_[^\\)]*\\)"); print substr($$0, RSTART, RLENGTH) "\r"; fflush()}' |
Bram Moolenaar | e76d7a6 | 2018-09-21 16:37:25 +0200 | [diff] [blame] | 16 | |
Bram Moolenaar | 0c77b7b | 2009-06-24 16:08:18 +0000 | [diff] [blame] | 17 | # Uncomment this line to use valgrind for memory leaks and extra warnings. |
| 18 | # The output goes into a file "valgrind.testN" |
| 19 | # Vim should be compiled with EXITFREE to avoid false warnings. |
| 20 | # This will make testing about 10 times as slow. |
shane.xb.qian | 5a8fad3 | 2022-05-16 11:14:09 +0100 | [diff] [blame] | 21 | # VALGRIND = valgrind --tool=memcheck --leak-check=yes --num-callers=35 --log-file=valgrind.$* |
Bram Moolenaar | 4d2fffc | 2007-08-14 15:29:16 +0000 | [diff] [blame] | 22 | |
Bram Moolenaar | 40bbcee | 2015-12-28 22:24:41 +0100 | [diff] [blame] | 23 | default: nongui |
Bram Moolenaar | 680eeca | 2010-10-20 17:44:42 +0200 | [diff] [blame] | 24 | |
Bram Moolenaar | 7b6156f | 2015-12-28 16:01:26 +0100 | [diff] [blame] | 25 | # The list of tests is common to all systems. |
Bram Moolenaar | b96a32e | 2020-08-13 18:59:55 +0200 | [diff] [blame] | 26 | # This defines SCRIPTS_TINY_OUT, NEW_TESTS and NEW_TESTS_RES. |
Bram Moolenaar | 7b6156f | 2015-12-28 16:01:26 +0100 | [diff] [blame] | 27 | include Make_all.mak |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 28 | |
Bram Moolenaar | 46fd6bf | 2019-01-11 19:19:44 +0100 | [diff] [blame] | 29 | # Explicit dependencies. |
Bram Moolenaar | 46fd6bf | 2019-01-11 19:19:44 +0100 | [diff] [blame] | 30 | test_options.res test_alot.res: opt_test.vim |
| 31 | |
Bram Moolenaar | 4334554 | 2015-11-29 17:35:35 +0100 | [diff] [blame] | 32 | .SUFFIXES: .in .out .res .vim |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 33 | |
Bram Moolenaar | b96a32e | 2020-08-13 18:59:55 +0200 | [diff] [blame] | 34 | nongui: nolog tinytests newtests report |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +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 | f2e53da | 2008-09-10 16:26:04 +0000 | [diff] [blame] | 39 | |
Bram Moolenaar | fda3729 | 2014-11-05 14:27:36 +0100 | [diff] [blame] | 40 | benchmark: $(SCRIPTS_BENCH) |
| 41 | |
Bram Moolenaar | f2e53da | 2008-09-10 16:26:04 +0000 | [diff] [blame] | 42 | report: |
K.Takata | c512599 | 2021-05-26 21:49:18 +0200 | [diff] [blame] | 43 | @# without the +eval feature test_result.log is a copy of test.log |
Bram Moolenaar | 18250e2 | 2019-06-06 14:28:54 +0200 | [diff] [blame] | 44 | @/bin/sh -c "if test -f test.log; \ |
| 45 | then cp test.log test_result.log; \ |
| 46 | else echo No failures reported > test_result.log; \ |
| 47 | fi" |
Bram Moolenaar | 7d23204 | 2019-11-05 22:37:20 +0100 | [diff] [blame] | 48 | $(VIMPROG) -u NONE $(NO_INITS) -S summarize.vim messages $(REDIR_TEST_TO_NULL) |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 49 | @echo |
Bram Moolenaar | f2e53da | 2008-09-10 16:26:04 +0000 | [diff] [blame] | 50 | @echo 'Test results:' |
Bram Moolenaar | 9c0cec6 | 2019-06-06 13:38:15 +0200 | [diff] [blame] | 51 | @cat test_result.log |
Bram Moolenaar | f2e53da | 2008-09-10 16:26:04 +0000 | [diff] [blame] | 52 | @/bin/sh -c "if test -f test.log; \ |
Bram Moolenaar | 9c0cec6 | 2019-06-06 13:38:15 +0200 | [diff] [blame] | 53 | then echo TEST FAILURE; exit 1; \ |
Bram Moolenaar | f2e53da | 2008-09-10 16:26:04 +0000 | [diff] [blame] | 54 | else echo ALL DONE; \ |
| 55 | fi" |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 56 | |
Bram Moolenaar | b96a32e | 2020-08-13 18:59:55 +0200 | [diff] [blame] | 57 | $(SCRIPTS_TINY_OUT) $(NEW_TESTS_RES): $(VIMPROG) |
Bram Moolenaar | ec50401 | 2019-01-11 17:30:16 +0100 | [diff] [blame] | 58 | |
| 59 | |
| 60 | # Execute an individual new style test, e.g.: |
| 61 | # make test_largefile |
| 62 | $(NEW_TESTS): |
| 63 | rm -f $@.res test.log messages |
Bram Moolenaar | 85683ec | 2020-02-20 22:35:02 +0100 | [diff] [blame] | 64 | @MAKEFLAGS=--no-print-directory $(MAKE) -f Makefile $@.res VIMPROG=$(VIMPROG) XXDPROG=$(XXDPROG) SCRIPTSOURCE=$(SCRIPTSOURCE) |
Bram Moolenaar | ba08930 | 2019-10-19 18:56:58 +0200 | [diff] [blame] | 65 | @cat messages |
Bram Moolenaar | 4e0bf84 | 2019-06-07 22:40:25 +0200 | [diff] [blame] | 66 | @if test -f test.log; then \ |
| 67 | exit 1; \ |
| 68 | fi |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 69 | |
Bram Moolenaar | ec5929d | 2020-04-07 20:53:39 +0200 | [diff] [blame] | 70 | # Run only tests specific for Vim9 script |
| 71 | test_vim9: |
| 72 | rm -f test_vim9_*.res test.log messages |
| 73 | @MAKEFLAGS=--no-print-directory $(MAKE) -f Makefile $(TEST_VIM9_RES) VIMPROG=$(VIMPROG) XXDPROG=$(XXDPROG) SCRIPTSOURCE=$(SCRIPTSOURCE) |
| 74 | @cat messages |
| 75 | @MAKEFLAGS=--no-print-directory $(MAKE) -f Makefile report VIMPROG=$(VIMPROG) XXDPROG=$(XXDPROG) SCRIPTSOURCE=$(SCRIPTSOURCE) |
| 76 | @if test -f test.log; then \ |
| 77 | exit 1; \ |
| 78 | fi |
| 79 | |
Bram Moolenaar | 60ec5f3 | 2012-12-05 18:21:32 +0100 | [diff] [blame] | 80 | RM_ON_RUN = test.out X* viminfo |
Bram Moolenaar | b96a32e | 2020-08-13 18:59:55 +0200 | [diff] [blame] | 81 | RM_ON_START = test.ok benchmark.out |
Bram Moolenaar | 41a8260 | 2019-07-14 21:54:26 +0200 | [diff] [blame] | 82 | RUN_VIM = VIMRUNTIME=$(SCRIPTSOURCE) $(VALGRIND) $(VIMPROG) -f $(GUI_FLAG) -u unix.vim $(NO_INITS) -s dotest.in |
Bram Moolenaar | 60ec5f3 | 2012-12-05 18:21:32 +0100 | [diff] [blame] | 83 | |
Bram Moolenaar | d9b0d83 | 2019-09-14 15:46:32 +0200 | [diff] [blame] | 84 | # Delete files that may interfere with running tests. This includes some files |
| 85 | # that may result from working on the tests, not only from running them. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 86 | clean: |
Bram Moolenaar | 4f5b0e5 | 2019-07-05 20:43:52 +0200 | [diff] [blame] | 87 | -rm -rf *.out *.failed *.res *.rej *.orig XfakeHOME Xdir1 Xfind |
Bram Moolenaar | 8ed75cb | 2019-06-09 14:39:13 +0200 | [diff] [blame] | 88 | -rm -f opt_test.vim test.log test_result.log messages |
shane.xb.qian | 5a8fad3 | 2022-05-16 11:14:09 +0100 | [diff] [blame] | 89 | -rm -rf $(RM_ON_RUN) $(RM_ON_START) |
Bram Moolenaar | 8ed75cb | 2019-06-09 14:39:13 +0200 | [diff] [blame] | 90 | -rm -f valgrind.* |
Bram Moolenaar | 95a467e | 2020-04-23 14:41:46 +0200 | [diff] [blame] | 91 | -rm -f asan.* |
Bram Moolenaar | 2d12c25 | 2022-06-13 21:42:45 +0100 | [diff] [blame] | 92 | -rm -f guidialog guidialogfile |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 93 | |
Bram Moolenaar | 76381a5 | 2022-05-27 20:13:28 +0100 | [diff] [blame] | 94 | # Delete the files produced by benchmarking, so they can run again. |
| 95 | benchmarkclean: |
| 96 | rm -f $(SCRIPTS_BENCH) |
| 97 | |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 98 | nolog: |
Bram Moolenaar | b96a32e | 2020-08-13 18:59:55 +0200 | [diff] [blame] | 99 | -rm -f test.log test_result.log messages |
| 100 | |
| 101 | |
| 102 | # Tiny tests. Works even without the +eval feature. |
| 103 | tinytests: $(SCRIPTS_TINY_OUT) |
| 104 | |
| 105 | .in.out: |
| 106 | -rm -rf $*.failed test.ok $(RM_ON_RUN) |
| 107 | cp $*.ok test.ok |
| 108 | @# Sleep a moment to avoid that the xterm title is messed up. |
| 109 | @# 200 msec is sufficient, but only modern sleep supports a fraction of |
| 110 | @# a second, fall back to a second if it fails. |
| 111 | @-/bin/sh -c "sleep .2 > /dev/null 2>&1 || sleep 1" |
| 112 | $(RUN_VIM) $*.in $(REDIR_TEST_TO_NULL) |
| 113 | |
| 114 | @# Check if the test.out file matches test.ok. |
| 115 | @/bin/sh -c "if test -f test.out; then \ |
| 116 | if diff test.out $*.ok; \ |
| 117 | then mv -f test.out $*.out; \ |
| 118 | else echo $* FAILED >>test.log; mv -f test.out $*.failed; \ |
| 119 | fi \ |
| 120 | else echo $* NO OUTPUT >>test.log; \ |
| 121 | fi" |
| 122 | @/bin/sh -c "if test -f valgrind; then\ |
| 123 | mv -f valgrind valgrind.$*; \ |
| 124 | fi" |
| 125 | -rm -rf X* test.ok viminfo |
Bram Moolenaar | 4334554 | 2015-11-29 17:35:35 +0100 | [diff] [blame] | 126 | |
| 127 | |
| 128 | # New style of tests uses Vim script with assert calls. These are easier |
| 129 | # to write and a lot easier to read and debug. |
| 130 | # Limitation: Only works with the +eval feature. |
Bram Moolenaar | 2d12c25 | 2022-06-13 21:42:45 +0100 | [diff] [blame] | 131 | # Add --gui-dialog-file to avoid getting stuck in a dialog. |
| 132 | RUN_VIMTEST = VIMRUNTIME=$(SCRIPTSOURCE) $(VALGRIND) $(VIMPROG) -f $(GUI_FLAG) -u unix.vim --gui-dialog-file guidialog |
Bram Moolenaar | 4334554 | 2015-11-29 17:35:35 +0100 | [diff] [blame] | 133 | |
Bram Moolenaar | e7893a4 | 2016-01-06 21:23:56 +0100 | [diff] [blame] | 134 | newtests: newtestssilent |
Bram Moolenaar | 6e3aeec | 2020-08-26 22:29:57 +0200 | [diff] [blame] | 135 | @/bin/sh -c "if test -f messages; then cat messages; fi" |
Bram Moolenaar | e7893a4 | 2016-01-06 21:23:56 +0100 | [diff] [blame] | 136 | |
Bram Moolenaar | ec50401 | 2019-01-11 17:30:16 +0100 | [diff] [blame] | 137 | newtestssilent: $(NEW_TESTS_RES) |
Bram Moolenaar | e7893a4 | 2016-01-06 21:23:56 +0100 | [diff] [blame] | 138 | |
Bram Moolenaar | 4334554 | 2015-11-29 17:35:35 +0100 | [diff] [blame] | 139 | |
Bram Moolenaar | 1417031 | 2019-02-21 21:50:46 +0100 | [diff] [blame] | 140 | .vim.res: |
Bram Moolenaar | 6318205 | 2017-10-07 20:03:23 +0200 | [diff] [blame] | 141 | @echo "$(VIMPROG)" > vimcmd |
| 142 | @echo "$(RUN_VIMTEST)" >> vimcmd |
Bram Moolenaar | e76d7a6 | 2018-09-21 16:37:25 +0200 | [diff] [blame] | 143 | $(RUN_VIMTEST) $(NO_INITS) -S runtest.vim $*.vim $(REDIR_TEST_TO_NULL) |
Bram Moolenaar | 8be2fbb | 2017-02-23 19:32:47 +0100 | [diff] [blame] | 144 | @rm vimcmd |
| 145 | |
| 146 | test_gui.res: test_gui.vim |
Bram Moolenaar | 6318205 | 2017-10-07 20:03:23 +0200 | [diff] [blame] | 147 | @echo "$(VIMPROG)" > vimcmd |
| 148 | @echo "$(RUN_GVIMTEST)" >> vimcmd |
Bram Moolenaar | 8be2fbb | 2017-02-23 19:32:47 +0100 | [diff] [blame] | 149 | $(RUN_VIMTEST) -u NONE $(NO_INITS) -S runtest.vim $< |
| 150 | @rm vimcmd |
| 151 | |
| 152 | test_gui_init.res: test_gui_init.vim |
Bram Moolenaar | 6318205 | 2017-10-07 20:03:23 +0200 | [diff] [blame] | 153 | @echo "$(VIMPROG)" > vimcmd |
| 154 | @echo "$(RUN_GVIMTEST_WITH_GVIMRC)" >> vimcmd |
Bram Moolenaar | 8774845 | 2017-03-12 17:10:33 +0100 | [diff] [blame] | 155 | $(RUN_VIMTEST) -u gui_preinit.vim -U gui_init.vim $(NO_PLUGINS) -S runtest.vim $< |
Bram Moolenaar | 66459b7 | 2016-08-06 19:01:55 +0200 | [diff] [blame] | 156 | @rm vimcmd |
Bram Moolenaar | 65408f7 | 2017-03-07 21:31:27 +0100 | [diff] [blame] | 157 | |
Bram Moolenaar | d9b0d83 | 2019-09-14 15:46:32 +0200 | [diff] [blame] | 158 | opt_test.vim: ../optiondefs.h gen_opt_test.vim |
| 159 | $(VIMPROG) -u NONE -S gen_opt_test.vim --noplugin --not-a-term ../optiondefs.h |
Bram Moolenaar | 29f9ed2 | 2018-04-10 19:20:31 +0200 | [diff] [blame] | 160 | |
| 161 | test_xxd.res: |
| 162 | XXD=$(XXDPROG); export XXD; $(RUN_VIMTEST) $(NO_INITS) -S runtest.vim test_xxd.vim |
Bram Moolenaar | ad48e6c | 2020-04-21 22:19:45 +0200 | [diff] [blame] | 163 | |
| 164 | test_bench_regexp.res: test_bench_regexp.vim |
| 165 | -rm -rf benchmark.out $(RM_ON_RUN) |
Bram Moolenaar | b96a32e | 2020-08-13 18:59:55 +0200 | [diff] [blame] | 166 | @# Sleep a moment to avoid that the xterm title is messed up. |
| 167 | @# 200 msec is sufficient, but only modern sleep supports a fraction of |
| 168 | @# a second, fall back to a second if it fails. |
Bram Moolenaar | ad48e6c | 2020-04-21 22:19:45 +0200 | [diff] [blame] | 169 | @-/bin/sh -c "sleep .2 > /dev/null 2>&1 || sleep 1" |
| 170 | $(RUN_VIMTEST) $(NO_INITS) -S runtest.vim $*.vim $(REDIR_TEST_TO_NULL) |
| 171 | @/bin/sh -c "if test -f benchmark.out; then cat benchmark.out; fi" |