#
# tests/Makefile.am
#
# For the license, see the LICENSE file in the root directory.
#

check_PROGRAMS =

TESTS_ENVIRONMENT = \
  abs_top_testdir=`cd '$(top_srcdir)'/tests; pwd` \
  abs_top_builddir=`cd '$(top_builddir)'; pwd` \
  abs_top_srcdir=`cd '$(top_srcdir)'; pwd`

TESTS = \
	test_vtpm_proxy \
	test_tpm2_vtpm_proxy

TESTS += \
	test_commandline \
	test_ctrlchannel \
	test_ctrlchannel2 \
	test_ctrlchannel3 \
	test_ctrlchannel4 \
	test_encrypted_state \
	test_getcap \
	test_hashing \
	test_hashing2 \
	test_init \
	test_locality \
	test_migration_key \
	test_parameters \
	test_resume_volatile \
	test_save_load_encrypted_state \
	test_save_load_state \
	test_setbuffersize \
	test_volatilestate \
	test_swtpm_bios \
	test_tpm_probe \
	test_tpm12 \
	test_wrongorder \
	\
	test_print_capabilities \
	test_print_states \
	test_swtpm_setup_overwrite \
	test_swtpm_setup_file_backend \
	test_swtpm_setup_misc

TESTS += \
	test_tpm2_avoid_da_lockout \
	test_tpm2_chroot_socket \
	test_tpm2_chroot_chardev \
	test_tpm2_chroot_cuse \
	test_tpm2_ctrlchannel2 \
	test_tpm2_ctrlchannel3 \
	test_tpm2_derived_keys \
	test_tpm2_encrypted_state \
	test_tpm2_init \
	test_tpm2_file_permissions \
	test_tpm2_getcap \
	test_tpm2_locality \
	test_tpm2_hashing \
	test_tpm2_hashing2 \
	test_tpm2_hashing3 \
	test_tpm2_migration_key \
	test_tpm2_partial_reads \
	test_tpm2_print_capabilities \
	test_tpm2_print_states \
	test_tpm2_resume_volatile \
	test_tpm2_savestate \
	test_tpm2_save_load_encrypted_state \
	test_tpm2_save_load_state \
	test_tpm2_save_load_state_2 \
	test_tpm2_save_load_state_2_linear \
	test_tpm2_save_load_state_2_block \
	test_tpm2_save_load_state_3 \
	test_tpm2_save_load_state_da_timeout \
	test_tpm2_save_load_state_locking \
	test_tpm2_setbuffersize \
	test_tpm2_volatilestate \
	test_tpm2_wrongorder \
	test_tpm2_probe \
	\
	test_tpm2_swtpm_bios \
	\
	test_tpm2_ibmtss2 \
	test_tpm2_swtpm_setup_overwrite

if WITH_GNUTLS
TESTS += \
	test_samples_create_tpmca \
	test_swtpm_cert \
	test_swtpm_setup_create_cert \
	test_tpm2_parameters \
	test_tpm2_swtpm_cert \
	test_tpm2_swtpm_cert_ecc \
	test_tpm2_swtpm_localca \
	test_tpm2_swtpm_localca_pkcs11.test \
	test_tpm2_swtpm_setup_create_cert

if HAVE_TCSD
TESTS += \
	test_tpm2_samples_create_tpmca.test

# Prevent concurrency between these two
test_tpm2_samples_create_tpmca.log: test_tpm2_swtpm_localca_pkcs11.log
endif

endif

TEST_UTILS = \
	common \
	load_vtpm_proxy \
	test_common \
	test_cuse

EXTRA_DIST = \
	$(TESTS) \
	$(TEST_UTILS) \
	swtpm_setup.conf \
	create_certs.sh \
	data/ecpubek.pem \
	data/ecprivek.pem \
	data/issuercert.pem \
	data/pubek.pem \
	data/signkey.pem \
	data/signkey-encrypted.pem \
	data/keyfile.txt \
	data/keyfile256bit.txt \
	data/pwdfile.txt \
	data/migkey1/tpm2-volatilestate.bin \
	data/migkey1/volatilestate.bin \
	data/tpmstate1/tpm-00.permall \
	data/tpmstate1/tpm-00.volatilestate \
	data/tpmstate1/README \
	data/tpmstate2/tpm-00.permall \
	data/tpmstate2/tpm-00.volatilestate \
	data/tpmstate2/pwdfile.txt \
	data/tpmstate2/README \
	data/tpmstate2b/tpm-00.permall \
	data/tpmstate2b/tpm-00.volatilestate \
	data/tpmstate2b/pwdfile.txt \
	data/tpm2state1/tpm2-00.permall \
	data/tpm2state1/tpm2-00.volatilestate \
	data/tpm2state2/tpm2-00.permall \
	data/tpm2state2/tpm2-00.volatilestate \
	data/tpm2state2b/pwdfile.txt \
	data/tpm2state2b/tpm2-00.permall \
	data/tpm2state2b/tpm2-00.volatilestate \
	data/tpm2state2/pwdfile.txt \
	data/tpm2state3/hkey.priv \
	data/tpm2state3/hkey.pub \
	data/tpm2state3/signature.bin \
	data/tpm2state3/tpm2-00.permall \
	data/tpm2state3c/tpm2-00.volatilestate \
	data/tpm2state3c/tpm2-00.permall \
	data/tpm2state3d/tpm2-00.volatilestate \
	data/tpm2state3d/signature2.bin \
	data/tpm2state3d/tpm2-00.permall \
	data/tpm2state3b/h81000000.bin \
	data/tpm2state3b/h02000000.bin \
	data/tpm2state3b/tpm2-00.volatilestate \
	data/tpm2state3b/tpm2-00.permall \
	data/tpm2state4/tpm2-00.volatilestate \
	data/tpm2state4/tpm2-00.permall \
	data/tpm2state5/signature.bin \
	data/tpm2state5/tpm2-00.permall \
	patches/0001-Deactivate-test-cases-accessing-rootcerts.txt.patch \
	patches/0002-Implement-powerup-for-swtpm.patch \
	patches/0003-Set-CRYPTOLIBRARY-to-openssl.patch \
	patches/0004-Store-and-restore-volatile-state-at-every-step.patch \
	patches/0005-Disable-tests-related-to-events.patch \
	patches/0006-Disable-testing-with-RSA-3072.patch \
	patches/0007-Disable-rev155-test-cases.patch \
	patches/0008-Disable-x509-test-cases.patch \
	patches/0009-Disable-getcapability-TPM_CAP_ACT.patch \
	patches/libtpm.patch \
	softhsm_setup \
	test_clientfds.py \
	test_setdatafd.py \
	test_swtpm_cert \
	_test_encrypted_state \
	_test_getcap \
	_test_hashing \
	_test_hashing2 \
	_test_init \
	_test_locality \
	_test_migration_key \
	_test_migration_key_2 \
	_test_print_capabilities \
	_test_print_states \
	_test_resume_volatile \
	_test_save_load_encrypted_state \
	_test_save_load_state \
	_test_setbuffersize \
	_test_swtpm_bios \
	_test_tpm_probe \
	_test_tpm2_avoid_da_lockout \
	_test_tpm2_derived_keys \
	_test_tpm2_encrypted_state \
	_test_tpm2_file_permissions \
	_test_tpm2_getcap \
	_test_tpm2_hashing \
	_test_tpm2_hashing2 \
	_test_tpm2_hashing3 \
	_test_tpm2_init \
	_test_tpm2_locality \
	_test_tpm2_migration_key \
	_test_tpm2_print_capabilities \
	_test_tpm2_print_states \
	_test_tpm2_probe \
	_test_tpm2_resume_volatile \
	_test_tpm2_savestate \
	_test_tpm2_save_load_encrypted_state \
	_test_tpm2_save_load_state \
	_test_tpm2_save_load_state_da_timeout \
	_test_tpm2_save_load_state_locking \
	_test_tpm2_setbuffersize \
	_test_tpm2_swtpm_bios \
	_test_tpm2_volatilestate \
	_test_tpm2_wrongorder \
	_test_volatilestate \
	_test_wrongorder

check-display:
	@if test -n "$$SWTPM_EXE"; then \
		echo "*** Using SWTPM_EXE=$$SWTPM_EXE"; \
	fi
	@if test -n "$$SWTPM_BIOS"; then \
		echo "*** Using SWTPM_BIOS=$$SWTPM_BIOS"; \
	fi
	@if test -n "$$SWTPM_IOCTL"; then \
		echo "*** Using SWTPM_IOCTL=$$SWTPM_IOCTL"; \
	fi
	@if test -n "$$SWTPM_CERT"; then \
		echo "*** Using SWTPM_CERT=$$SWTPM_CERT"; \
	fi

.PHONY: syntax-check
syntax-check:
# SC2001: See if you can use ${variable//search/replace} instead.
# SC2009: Consider using pgrep instead of grepping ps output.
# Sc2010: Don't use ls | grep. Use a glob or a for loop with a condition to allow non-alphanumeric filenames.
# SC2115: Use "${var:?}" to ensure this never expands to /*.
# SC2148: Tips depend on target shell and yours is unknown. Add a shebang or a 'shell' directive.
# SC2181: Check exit code directly with e.g. if mycmd;, not indirectly with $?.
	shellcheck -e SC2001,SC2009,SC2010,SC2115,SC2148,SC2181 \
		$(TESTS) $(TEST_UTILS) $(filter _test_%,$(EXTRA_DIST))

check: check-am check-display
