xref: /vim-8.2.3635/src/testdir/Make_ming.mak (revision 05c1acd5)
1#
2# Makefile to run all tests for Vim, on Dos-like machines
3# with sh.exe or zsh.exe in the path or not.
4#
5# Author: Bill McCarthy
6#
7# Requires a set of Unix tools: echo, diff, etc.
8
9# Don't use unix-like shell.
10SHELL = cmd.exe
11
12DEL = del
13DELDIR = rd /s /q
14MV = move /y
15CP = copy /y
16CAT = type
17
18VIMPROG = ..\\vim
19
20default: nongui
21
22include Make_all.mak
23
24# Explicit dependencies.
25test_options.res test_alot.res: opt_test.vim
26
27TEST_OUTFILES = $(SCRIPTS_TINY_OUT)
28DOSTMP = dostmp
29# Keep $(DOSTMP)/*.in
30.PRECIOUS: $(patsubst %.out, $(DOSTMP)/%.in, $(TEST_OUTFILES))
31
32.SUFFIXES: .in .out .res .vim
33
34nongui:	nolog tinytests newtests report
35
36gui:	nolog tinytests newtests report
37
38tiny:	nolog tinytests report
39
40benchmark: $(SCRIPTS_BENCH)
41
42report:
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 )
52
53
54# Execute an individual new style test, e.g.:
55# 	mingw32-make -f Make_ming.mak test_largefile
56$(NEW_TESTS):
57	-if exist [email protected] del [email protected]
58	-if exist test.log del test.log
59	-if exist messages del messages
60	@$(MAKE) -f Make_ming.mak [email protected] VIMPROG=$(VIMPROG) --no-print-directory
61	@type messages
62	@if exist test.log exit 1
63
64
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.
67clean:
68	-@if exist *.out $(DEL) *.out
69	-@if exist *.failed $(DEL) *.failed
70	-@if exist *.res $(DEL) *.res
71	-@if exist $(DOSTMP) rd /s /q $(DOSTMP)
72	-@if exist test.in $(DEL) test.in
73	-@if exist test.ok $(DEL) test.ok
74	-@if exist Xdir1 $(DELDIR) Xdir1
75	-@if exist Xfind $(DELDIR) Xfind
76	-@if exist XfakeHOME $(DELDIR) XfakeHOME
77	-@if exist X* $(DEL) X*
78	-@for /d %%i in (X*) do @rd /s/q %%i
79	-@if exist viminfo $(DEL) viminfo
80	-@if exist test.log $(DEL) test.log
81	-@if exist test_result.log del test_result.log
82	-@if exist messages $(DEL) messages
83	-@if exist benchmark.out del benchmark.out
84	-@if exist opt_test.vim $(DEL) opt_test.vim
85
86nolog:
87	-@if exist test.log $(DEL) test.log
88	-@if exist test_result.log del test_result.log
89	-@if exist messages $(DEL) messages
90
91
92# Tiny tests.  Works even without the +eval feature.
93tinytests: $(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)
98	if exist $(DOSTMP)\$< $(DEL) $(DOSTMP)\$<
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
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
131newtests: newtestssilent
132	@if exist messages type messages
133
134newtestssilent: $(NEW_TESTS_RES)
135
136.vim.res:
137	@echo $(VIMPROG) > vimcmd
138	$(VIMPROG) -u NONE $(NO_INITS) -S runtest.vim $*.vim
139	@$(DEL) vimcmd
140
141test_gui.res: test_gui.vim
142	@echo $(VIMPROG) > vimcmd
143	$(VIMPROG) -u NONE $(NO_INITS) -S runtest.vim $<
144	@$(DEL) vimcmd
145
146test_gui_init.res: test_gui_init.vim
147	@echo $(VIMPROG) > vimcmd
148	$(VIMPROG) -u gui_preinit.vim -U gui_init.vim $(NO_PLUGINS) -S runtest.vim $<
149	@$(DEL) vimcmd
150
151opt_test.vim: ../optiondefs.h gen_opt_test.vim
152	$(VIMPROG) -u NONE -S gen_opt_test.vim --noplugin --not-a-term ../optiondefs.h
153
154test_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
160