#
# Common Makefile, defines the list of tests to run.
#

# The first script creates small.vim.
SCRIPTS_FIRST = \
	test1.out

# Tests that run on all systems.
SCRIPTS_ALL = \
	test3.out \
	test4.out \
	test5.out \
	test6.out \
	test7.out \
	test8.out \
	test9.out \
	test13.out \
	test14.out \
	test15.out \
	test18.out \
	test19.out \
	test20.out \
	test21.out \
	test22.out \
	test23.out \
	test24.out \
	test26.out \
	test28.out \
	test29.out \
	test31.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 \
	test51.out \
	test53.out \
	test55.out \
	test56.out \
	test57.out \
	test60.out \
	test61.out \
	test62.out \
	test63.out \
	test64.out \
	test65.out \
	test66.out \
	test67.out \
	test68.out \
	test69.out \
	test70.out \
	test71.out \
	test73.out \
	test74.out \
	test75.out \
	test76.out \
	test77.out \
	test79.out \
	test80.out \
	test81.out \
	test82.out \
	test84.out \
	test88.out \
	test90.out \
	test91.out \
	test92.out \
	test93.out \
	test94.out \
	test95.out \
	test96.out \
	test98.out \
	test99.out \
	test101.out \
	test102.out \
	test103.out \
	test104.out \
	test105.out \
	test106.out \
	test107.out \
	test108.out \
	test_argument_0count.out \
	test_argument_count.out \
	test_autocmd_option.out \
	test_autoformat_join.out \
	test_breakindent.out \
	test_changelist.out \
	test_charsearch.out \
	test_close_count.out \
	test_command_count.out \
	test_comparators.out \
	test_erasebackword.out \
	test_eval.out \
	test_fixeol.out \
	test_getcwd.out \
	test_insertcount.out \
	test_listchars.out \
	test_listlbr.out \
	test_listlbr_utf8.out \
	test_mapping.out \
	test_marks.out \
	test_match_conceal.out \
	test_nested_function.out \
	test_options.out \
	test_perl.out \
	test_qf_title.out \
	test_ruby.out \
	test_search_mbyte.out \
	test_signs.out \
	test_tagcase.out \
	test_textobjects.out \
	test_utf8.out \
	test_wordcount.out \
	test_writefile.out


# Tests that run on most systems, but not on Amiga.
SCRIPTS_MORE1 = \
	test11.out \
	test52.out \
	test85.out \
	test86.out \
	test87.out


# Tests that run on most systems, but not on Amiga and DOS/Windows.
SCRIPTS_MORE2 = \
	test2.out \
	test10.out \
	test12.out \
	test25.out \
	test49.out \
	test97.out


# Tests that run on most systems, but not MingW and Cygwin.
SCRIPTS_MORE3 = \
	test54.out


# Tests that run on most systems, but not on VMS
SCRIPTS_MORE4 = \
	test17.out \
	test30.out \
	test32.out \
	test58.out \
	test59.out \
	test72.out \
	test78.out \
	test83.out \
	test89.out


# Tests specifically for MS-Windows.
SCRIPTS_WIN32 = test50.out


# Tests for the GUI.
SCRIPTS_GUI = test16.out


# Tests using runtest.vim.vim.
# Keep test_alot.res as the last one, sort the others.
NEW_TESTS = test_arglist.res \
	    test_assert.res \
	    test_cdo.res \
	    test_hardcopy.res \
	    test_increment.res \
	    test_quickfix.res \
	    test_viml.res \
	    test_alot.res \
	    test_perl.res


# Explicit dependencies.
test49.out: test49.vim

test60.out: test60.vim

