#!/bin/sh

rm -f gmid.pid

. ./lib.sh
. ./tests.sh

trap 'onexit' INT TERM EXIT

if [ $# -ne 0 ]; then
	while [ $# -ne 0 ]; do
		run_test $1
		shift
	done

	tests_done
fi

# Run standalone unit tests.
run_test test_punycode
run_test test_iri
run_test test_gg_n_flag

# Run configuration parsing tests.
run_test test_parse_comments_at_start
run_test test_dump_config

if [ "${SKIP_RUNTIME_TESTS:-0}" -eq 1 ]; then
	echo
	echo "======================"
	echo "runtime tests skipped!"
	echo "======================"
	echo

	tests_done
fi

# Run regression tests for the gemexp binary.
run_test test_gemexp

# Run regression tests for the gmid binary.
run_test test_static_files
run_test test_directory_redirect
run_test test_serve_big_files
run_test test_dont_execute_scripts
run_test test_custom_mime
run_test test_default_type
run_test test_custom_lang
run_test test_parse_custom_lang_per_location
run_test test_custom_index
run_test test_custom_index_default_type_per_location
run_test test_auto_index
run_test test_block
run_test test_block_return_fmt
run_test test_require_client_ca
run_test test_root_inside_location
run_test test_root_inside_location_with_redirect
run_test test_fastcgi
run_test test_fastcgi_inside_location
run_test test_fastcgi_location_match
run_test test_fastcgi_deprecated_syntax
run_test test_macro_expansion
run_test test_proxy_relay_to
run_test test_proxy_with_certs
# run_test test_unknown_host	# XXX: breaks on some distro
run_test test_include_mime
run_test test_log_file
run_test test_ipv4_addr
run_test test_ipv6_addr need_ipv6
run_test test_ipv6_server need_ipv6

# TODO: add test that uses only a TLSv1.2 or TLSv1.3
# TODO: add a test that attempt to serve a non-regular file
# TODO: add a test where the index is not a regular file
# TODO: add a test that logs and uses a client cert

tests_done
