#
# Copyright (c) 2016 Intel Corporation
#
# SPDX-License-Identifier: Apache-2.0
#

menu Testing

source "tests/ztest/Kconfig"

config TEST
	bool "Mark project as a test"
	help
	  Mark a project or an application as a test. This will enable a few
	  test defaults.

config TEST_EXTRA_STACKSIZE
	int "Test function extra thread stack size"
	default 768 if XTENSA
	default 0
	help
	  Additional stack for tests on some platform where default is not
	  enough.

config COVERAGE
	bool "Create coverage data"
	depends on NATIVE_APPLICATION
	help
	  This option will build your application with the -coverage option
	  which will generate data that can be used to create coverage reports.
	  Currently this is fully supported only on the native POSIX port.

config TEST_USERSPACE
	bool "Enable userspace if available"
	depends on ARCH_HAS_USERSPACE
	depends on TEST
	select USERSPACE
	select APPLICATION_MEMORY
	select DYNAMIC_OBJECTS
	default y
	help
	  This option will help test the userspace mode. This can be enabled
	  only when CONFIG_ARCH_HAS_USERSPACE is set.

config TEST_HW_STACK_PROTECTION
	bool "Enable hardware-based stack overflow detection if available"
	depends on ARCH_HAS_STACK_PROTECTION
	depends on TEST
	select HW_STACK_PROTECTION
	default y
	help
	  This option will enable hardware-based stack protection by default
	  for all test cases if the hardware supports it.

config TEST_FLASH_DRIVERS
	bool "Test flash drivers"
	depends on BOARD_QEMU_X86
	select FLASH_HAS_DRIVER_ENABLED
	select FLASH_HAS_PAGE_LAYOUT
	help
	  This option will help test the flash drivers. This should be enabled
	  only when using qemu_x86.
endmenu
