#
# 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"
	default n
	select COVERAGE if NATIVE_APPLICATION
	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 0
	default 768 if XTENSA
	help
	  Additional stack for tests on some platform where default is not
	  enough.

config COVERAGE
	bool "Create coverage data"
	depends on NATIVE_APPLICATION
	default n
	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
	select USERSPACE
	select APPLICATION_MEMORY
	default n
	help
	  This option will help test the userspace mode. This can be enabled
	  only when CONFIG_HAS_USERSPACE is set.
endmenu
