# TRANSITIONAL ONLY.
# Provide newer names for old config options to make it easier to transition
# code relying on the older non-upstream kunit version.

menu "(transitional) KUnit support"

config KUNIT_T
	bool "(transitional) Enable support for unit tests (KUnit)"
	select TEST
	help
	  Enables support for KUnit via the new name.

if KUNIT_T

config KUNIT_TEST
	bool "(transitional) KUnit test for KUnit"
	select TEST_TEST
	depends on KUNIT_T
	help
	  Enables KUnit test to test KUnit.

config KUNIT_EXAMPLE_TEST
	bool "(transitional) Example test for KUnit"
	select EXAMPLE_TEST
	depends on KUNIT_T
	help
	  Enables example KUnit test to demo features of KUnit.

config KUNIT_USE_UPSTREAM_NAMES
	bool "(transitional) start using upstream names for types/functions"
	select EXAMPLE_TEST
	depends on KUNIT_T
	help
	  Changes names of KUnit types/functions to match the upstream version of KUnit.
endif # KUNIT_T

endmenu
