#
# Makefile to run al tests for Vim
#

VimProg ?= ../vim

Scripts = test1.out test2.out test3.out test4.out test5.out test6.out
		test7.out test8.out test9.out test10.out test11.out
		test12.out  test13.out test14.out test15.out test17.out
		test18.out test19.out test20.out test21.out test22.out
		test23.out test24.out test25.out test26.out test27.out
		test28.out test29.out test30.out test31.out test32.out
		test33.out test34.out test35.out test36.out test37.out
		test38.out test39.out test40.out test41.out test42.out
		test43.out test44.out test45.out test46.out test47.out
		test48.out test49.out

ScriptsGUI = test16.out

# Build "nongui" when no target was specified.
nongui:	newlog $Scripts
	:print
	:cat test.log
	:print ALL DONE

# Build "ngui" when specified.
gui:	newlog $Scripts $ScriptsGUI
	:print
	:cat test.log
	:print ALL DONE

$Scripts $ScriptsGUI: $VimProg

clean:
	:del {r}{force} *.out test.log tiny.vim small.vim mbyte.vim test.ok X*

# test1 is special, it checks for features
test1.out: test1.in
	:del {force} test1.failed tiny.vim small.vim mbyte.vim
	:sys {i} $VimProg -u unix.vim -U NONE --noplugin -s dotest.in test1.in
	@if os.system("diff test.out test1.ok") != 0:
		:error test1 FAILED - Something basic is wrong
	:move {force} test.out test1.out
	:del {r}{force} X*

:rule %.out : %.in
	:del {force} $(match).failed test.ok
	:copy $(match).ok test.ok
	:sys {i} $VimProg -u unix.vim -U NONE --noplugin -s dotest.in $(match).in
	@if os.system("diff test.out " + match + ".ok") != 0:
		:print $match FAILED >>test.log
		:move {force} test.out $(match).failed
	@else:
		:move {force} test.out $(match).out
	:del {r}{force} X* test.ok

newlog:
	:print Test results: >! test.log
