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 | 3f12a24 | 2015-12-05 20:56:57 +0100 | [diff] [blame] | 7 | # VIMPROG = ../gvim |
| 8 | |
Bram Moolenaar | efa304d | 2014-04-01 14:08:28 +0200 | [diff] [blame] | 9 | SCRIPTSOURCE = ../../runtime |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 10 | |
Bram Moolenaar | 0c77b7b | 2009-06-24 16:08:18 +0000 | [diff] [blame] | 11 | # Uncomment this line to use valgrind for memory leaks and extra warnings. |
| 12 | # The output goes into a file "valgrind.testN" |
| 13 | # Vim should be compiled with EXITFREE to avoid false warnings. |
| 14 | # This will make testing about 10 times as slow. |
Bram Moolenaar | af6c12c | 2016-05-28 13:40:10 +0200 | [diff] [blame] | 15 | # VALGRIND = valgrind --tool=memcheck --leak-check=yes --num-callers=25 --log-file=valgrind.$* |
Bram Moolenaar | 4d2fffc | 2007-08-14 15:29:16 +0000 | [diff] [blame] | 16 | |
Bram Moolenaar | 40bbcee | 2015-12-28 22:24:41 +0100 | [diff] [blame] | 17 | default: nongui |
Bram Moolenaar | 680eeca | 2010-10-20 17:44:42 +0200 | [diff] [blame] | 18 | |
Bram Moolenaar | 7b6156f | 2015-12-28 16:01:26 +0100 | [diff] [blame] | 19 | # The list of tests is common to all systems. |
| 20 | # This defines NEW_TESTS, SCRIPTS_ALL, SCRIPTS_MORE* and SCRIPTS_GUI. |
| 21 | include Make_all.mak |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 22 | |
Bram Moolenaar | 4334554 | 2015-11-29 17:35:35 +0100 | [diff] [blame] | 23 | |
Bram Moolenaar | 7b6156f | 2015-12-28 16:01:26 +0100 | [diff] [blame] | 24 | SCRIPTS = $(SCRIPTS_ALL) \ |
| 25 | $(SCRIPTS_MORE1) \ |
| 26 | $(SCRIPTS_MORE2) \ |
| 27 | $(SCRIPTS_MORE3) \ |
| 28 | $(SCRIPTS_MORE4) |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 29 | |
Bram Moolenaar | fda3729 | 2014-11-05 14:27:36 +0100 | [diff] [blame] | 30 | SCRIPTS_BENCH = bench_re_freeze.out |
| 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 | a608243 | 2015-12-28 16:26:45 +0100 | [diff] [blame] | 34 | nongui: nolog $(SCRIPTS_FIRST) $(SCRIPTS) newtests report |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 35 | |
Bram Moolenaar | a608243 | 2015-12-28 16:26:45 +0100 | [diff] [blame] | 36 | gui: nolog $(SCRIPTS_FIRST) $(SCRIPTS) $(SCRIPTS_GUI) newtests report |
Bram Moolenaar | f2e53da | 2008-09-10 16:26:04 +0000 | [diff] [blame] | 37 | |
Bram Moolenaar | fda3729 | 2014-11-05 14:27:36 +0100 | [diff] [blame] | 38 | benchmark: $(SCRIPTS_BENCH) |
| 39 | |
Bram Moolenaar | f2e53da | 2008-09-10 16:26:04 +0000 | [diff] [blame] | 40 | report: |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 41 | @echo |
Bram Moolenaar | f2e53da | 2008-09-10 16:26:04 +0000 | [diff] [blame] | 42 | @echo 'Test results:' |
| 43 | @/bin/sh -c "if test -f test.log; \ |
| 44 | then cat test.log; echo TEST FAILURE; exit 1; \ |
| 45 | else echo ALL DONE; \ |
| 46 | fi" |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 47 | |
Bram Moolenaar | a608243 | 2015-12-28 16:26:45 +0100 | [diff] [blame] | 48 | $(SCRIPTS_FIRST) $(SCRIPTS) $(SCRIPTS_GUI) $(NEW_TESTS): $(VIMPROG) |
| 49 | |
| 50 | # Must run test1 first to create small.vim. |
| 51 | $(SCRIPTS) $(SCRIPTS_GUI) $(NEW_TESTS): $(SCRIPTS_FIRST) |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 52 | |
Bram Moolenaar | 60ec5f3 | 2012-12-05 18:21:32 +0100 | [diff] [blame] | 53 | RM_ON_RUN = test.out X* viminfo |
Bram Moolenaar | fda3729 | 2014-11-05 14:27:36 +0100 | [diff] [blame] | 54 | RM_ON_START = tiny.vim small.vim mbyte.vim mzscheme.vim lua.vim test.ok benchmark.out |
Bram Moolenaar | af6c12c | 2016-05-28 13:40:10 +0200 | [diff] [blame] | 55 | RUN_VIM = VIMRUNTIME=$(SCRIPTSOURCE); export VIMRUNTIME; $(VALGRIND) $(VIMPROG) -f $(GUI_FLAG) -u unix.vim $(NO_PLUGIN) -s dotest.in |
Bram Moolenaar | 60ec5f3 | 2012-12-05 18:21:32 +0100 | [diff] [blame] | 56 | |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 57 | clean: |
Bram Moolenaar | 096c8bb | 2015-12-29 14:26:57 +0100 | [diff] [blame] | 58 | -rm -rf *.out *.failed *.res *.rej *.orig test.log messages $(RM_ON_RUN) $(RM_ON_START) valgrind.* |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 59 | |
| 60 | test1.out: test1.in |
Bram Moolenaar | 6848c8b | 2013-09-22 15:03:38 +0200 | [diff] [blame] | 61 | -rm -rf $*.failed $(RM_ON_RUN) $(RM_ON_START) wrongtermsize |
Bram Moolenaar | 60ec5f3 | 2012-12-05 18:21:32 +0100 | [diff] [blame] | 62 | $(RUN_VIM) $*.in |
Bram Moolenaar | f7dc2b5 | 2014-03-12 15:50:22 +0100 | [diff] [blame] | 63 | @/bin/sh -c "if test -f wrongtermsize; \ |
Bram Moolenaar | 6848c8b | 2013-09-22 15:03:38 +0200 | [diff] [blame] | 64 | then echo; \ |
| 65 | echo test1 FAILED - terminal size must be 80x24 or larger; \ |
| 66 | echo; exit 1; \ |
| 67 | elif diff test.out $*.ok; \ |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 68 | then mv -f test.out $*.out; \ |
| 69 | else echo; \ |
| 70 | echo test1 FAILED - Something basic is wrong; \ |
| 71 | echo; exit 1; fi" |
| 72 | -rm -rf X* viminfo |
| 73 | |
| 74 | .in.out: |
Bram Moolenaar | 60ec5f3 | 2012-12-05 18:21:32 +0100 | [diff] [blame] | 75 | -rm -rf $*.failed test.ok $(RM_ON_RUN) |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 76 | cp $*.ok test.ok |
Bram Moolenaar | 3f99152 | 2013-04-24 12:56:19 +0200 | [diff] [blame] | 77 | # Sleep a moment to avoid that the xterm title is messed up. |
| 78 | # 200 msec is sufficient, but only modern sleep supports a fraction of |
| 79 | # a second, fall back to a second if it fails. |
| 80 | @-/bin/sh -c "sleep .2 > /dev/null 2>&1 || sleep 1" |
Bram Moolenaar | 60ec5f3 | 2012-12-05 18:21:32 +0100 | [diff] [blame] | 81 | -$(RUN_VIM) $*.in |
| 82 | |
| 83 | # For flaky tests retry one time. |
| 84 | @/bin/sh -c "if test -f test.out -a $* = test61; then \ |
| 85 | if diff test.out $*.ok; \ |
| 86 | then echo flaky test ok first time; \ |
| 87 | else rm -rf $*.failed $(RM_ON_RUN); \ |
| 88 | $(RUN_VIM) $*.in; \ |
| 89 | fi \ |
| 90 | fi" |
| 91 | |
| 92 | # Check if the test.out file matches test.ok. |
Bram Moolenaar | fbc0d2e | 2013-05-19 19:40:29 +0200 | [diff] [blame] | 93 | @/bin/sh -c "if test -f test.out; then \ |
Bram Moolenaar | 5313dcb | 2005-02-22 08:56:13 +0000 | [diff] [blame] | 94 | if diff test.out $*.ok; \ |
| 95 | then mv -f test.out $*.out; \ |
| 96 | else echo $* FAILED >>test.log; mv -f test.out $*.failed; \ |
| 97 | fi \ |
| 98 | else echo $* NO OUTPUT >>test.log; \ |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 99 | fi" |
Bram Moolenaar | fbc0d2e | 2013-05-19 19:40:29 +0200 | [diff] [blame] | 100 | @/bin/sh -c "if test -f valgrind; then\ |
| 101 | mv -f valgrind valgrind.$*; \ |
| 102 | fi" |
Bram Moolenaar | b35c338 | 2012-10-06 19:10:35 +0200 | [diff] [blame] | 103 | -rm -rf X* test.ok viminfo |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 104 | |
Bram Moolenaar | fda3729 | 2014-11-05 14:27:36 +0100 | [diff] [blame] | 105 | bench_re_freeze.out: bench_re_freeze.vim |
| 106 | -rm -rf benchmark.out $(RM_ON_RUN) |
| 107 | # Sleep a moment to avoid that the xterm title is messed up. |
| 108 | # 200 msec is sufficient, but only modern sleep supports a fraction of |
| 109 | # a second, fall back to a second if it fails. |
| 110 | @-/bin/sh -c "sleep .2 > /dev/null 2>&1 || sleep 1" |
| 111 | -$(RUN_VIM) $*.in |
| 112 | @/bin/sh -c "if test -f benchmark.out; then cat benchmark.out; fi" |
| 113 | |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 114 | nolog: |
Bram Moolenaar | 096c8bb | 2015-12-29 14:26:57 +0100 | [diff] [blame] | 115 | -rm -f test.log messages |
Bram Moolenaar | 4334554 | 2015-11-29 17:35:35 +0100 | [diff] [blame] | 116 | |
| 117 | |
| 118 | # New style of tests uses Vim script with assert calls. These are easier |
| 119 | # to write and a lot easier to read and debug. |
| 120 | # Limitation: Only works with the +eval feature. |
Bram Moolenaar | af6c12c | 2016-05-28 13:40:10 +0200 | [diff] [blame] | 121 | RUN_VIMTEST = VIMRUNTIME=$(SCRIPTSOURCE); export VIMRUNTIME; $(VALGRIND) $(VIMPROG) -f $(GUI_FLAG) -u unix.vim $(NO_PLUGIN) |
Bram Moolenaar | 4334554 | 2015-11-29 17:35:35 +0100 | [diff] [blame] | 122 | |
Bram Moolenaar | e7893a4 | 2016-01-06 21:23:56 +0100 | [diff] [blame] | 123 | newtests: newtestssilent |
| 124 | @/bin/sh -c "if test -f messages && grep -q 'FAILED' messages; then cat messages && cat test.log; fi" |
| 125 | |
| 126 | newtestssilent: $(NEW_TESTS) |
| 127 | |
Bram Moolenaar | 4334554 | 2015-11-29 17:35:35 +0100 | [diff] [blame] | 128 | |
| 129 | .vim.res: |
Bram Moolenaar | 42c9cfa | 2016-01-17 18:49:57 +0100 | [diff] [blame] | 130 | $(RUN_VIMTEST) -u NONE -U NONE -S runtest.vim $*.vim |