Skip to content

Commit

Permalink
kconfig: tests: add basic choice tests
Browse files Browse the repository at this point in the history
The calculation of 'choice' is a bit complicated part in Kconfig.

The behavior of 'y' choice is intuitive.  If choice values are tristate,
the choice can be 'm' where each value can be enabled independently.
Also, if a choice is marked as 'optional', the whole choice can be
invisible.

Test basic functionality of choice.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
Reviewed-by: Ulf Magnusson <ulfalizer@gmail.com>
  • Loading branch information
Masahiro Yamada committed Mar 25, 2018
1 parent 022a4bf commit 1903c51
Show file tree
Hide file tree
Showing 9 changed files with 149 additions and 0 deletions.
54 changes: 54 additions & 0 deletions scripts/kconfig/tests/choice/Kconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
config MODULES
bool "Enable loadable module support"
option modules
default y

choice
prompt "boolean choice"
default BOOL_CHOICE1

config BOOL_CHOICE0
bool "choice 0"

config BOOL_CHOICE1
bool "choice 1"

endchoice

choice
prompt "optional boolean choice"
optional
default OPT_BOOL_CHOICE1

config OPT_BOOL_CHOICE0
bool "choice 0"

config OPT_BOOL_CHOICE1
bool "choice 1"

endchoice

choice
prompt "tristate choice"
default TRI_CHOICE1

config TRI_CHOICE0
tristate "choice 0"

config TRI_CHOICE1
tristate "choice 1"

endchoice

choice
prompt "optional tristate choice"
optional
default OPT_TRI_CHOICE1

config OPT_TRI_CHOICE0
tristate "choice 0"

config OPT_TRI_CHOICE1
tristate "choice 1"

endchoice
40 changes: 40 additions & 0 deletions scripts/kconfig/tests/choice/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
"""
Basic choice tests.
The handling of 'choice' is a bit complicated part in Kconfig.
The behavior of 'y' choice is intuitive. If choice values are tristate,
the choice can be 'm' where each value can be enabled independently.
Also, if a choice is marked as 'optional', the whole choice can be
invisible.
"""


def test_oldask0(conf):
assert conf.oldaskconfig() == 0
assert conf.stdout_contains('oldask0_expected_stdout')


def test_oldask1(conf):
assert conf.oldaskconfig('oldask1_config') == 0
assert conf.stdout_contains('oldask1_expected_stdout')


def test_allyes(conf):
assert conf.allyesconfig() == 0
assert conf.config_contains('allyes_expected_config')


def test_allmod(conf):
assert conf.allmodconfig() == 0
assert conf.config_contains('allmod_expected_config')


def test_allno(conf):
assert conf.allnoconfig() == 0
assert conf.config_contains('allno_expected_config')


def test_alldef(conf):
assert conf.alldefconfig() == 0
assert conf.config_contains('alldef_expected_config')
5 changes: 5 additions & 0 deletions scripts/kconfig/tests/choice/alldef_expected_config
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
CONFIG_MODULES=y
# CONFIG_BOOL_CHOICE0 is not set
CONFIG_BOOL_CHOICE1=y
# CONFIG_TRI_CHOICE0 is not set
# CONFIG_TRI_CHOICE1 is not set
9 changes: 9 additions & 0 deletions scripts/kconfig/tests/choice/allmod_expected_config
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
CONFIG_MODULES=y
# CONFIG_BOOL_CHOICE0 is not set
CONFIG_BOOL_CHOICE1=y
# CONFIG_OPT_BOOL_CHOICE0 is not set
CONFIG_OPT_BOOL_CHOICE1=y
CONFIG_TRI_CHOICE0=m
CONFIG_TRI_CHOICE1=m
CONFIG_OPT_TRI_CHOICE0=m
CONFIG_OPT_TRI_CHOICE1=m
5 changes: 5 additions & 0 deletions scripts/kconfig/tests/choice/allno_expected_config
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
# CONFIG_MODULES is not set
# CONFIG_BOOL_CHOICE0 is not set
CONFIG_BOOL_CHOICE1=y
# CONFIG_TRI_CHOICE0 is not set
CONFIG_TRI_CHOICE1=y
9 changes: 9 additions & 0 deletions scripts/kconfig/tests/choice/allyes_expected_config
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
CONFIG_MODULES=y
# CONFIG_BOOL_CHOICE0 is not set
CONFIG_BOOL_CHOICE1=y
# CONFIG_OPT_BOOL_CHOICE0 is not set
CONFIG_OPT_BOOL_CHOICE1=y
# CONFIG_TRI_CHOICE0 is not set
CONFIG_TRI_CHOICE1=y
# CONFIG_OPT_TRI_CHOICE0 is not set
CONFIG_OPT_TRI_CHOICE1=y
10 changes: 10 additions & 0 deletions scripts/kconfig/tests/choice/oldask0_expected_stdout
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
Enable loadable module support (MODULES) [Y/n/?] (NEW)
boolean choice
1. choice 0 (BOOL_CHOICE0) (NEW)
> 2. choice 1 (BOOL_CHOICE1) (NEW)
choice[1-2?]:
optional boolean choice [N/y/?] (NEW)
tristate choice [M/y/?] (NEW)
choice 0 (TRI_CHOICE0) [N/m/?] (NEW)
choice 1 (TRI_CHOICE1) [N/m/?] (NEW)
optional tristate choice [N/m/y/?] (NEW)
2 changes: 2 additions & 0 deletions scripts/kconfig/tests/choice/oldask1_config
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
# CONFIG_MODULES is not set
CONFIG_OPT_BOOL_CHOICE0=y
15 changes: 15 additions & 0 deletions scripts/kconfig/tests/choice/oldask1_expected_stdout
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
Enable loadable module support (MODULES) [N/y/?]
boolean choice
1. choice 0 (BOOL_CHOICE0) (NEW)
> 2. choice 1 (BOOL_CHOICE1) (NEW)
choice[1-2?]:
optional boolean choice [Y/n/?] (NEW)
optional boolean choice
> 1. choice 0 (OPT_BOOL_CHOICE0)
2. choice 1 (OPT_BOOL_CHOICE1) (NEW)
choice[1-2?]:
tristate choice
1. choice 0 (TRI_CHOICE0) (NEW)
> 2. choice 1 (TRI_CHOICE1) (NEW)
choice[1-2?]:
optional tristate choice [N/y/?]

0 comments on commit 1903c51

Please sign in to comment.