Recursive dependency should be detected and warned. Test this. This indirectly tests the line number increments.
Showing the changes to scripts (3 of 3 files). Show all
Unified · Split
| @@ -0,0 +1,62 @@ | |||
| 1 | # depends on itself | ||
| 2 | |||
| 3 | config A | ||
| 4 | bool "A" | ||
| 5 | depends on A | ||
| 6 | |||
| 7 | # select itself | ||
| 8 | |||
| 9 | config B | ||
| 10 | bool | ||
| 11 | select B | ||
| 12 | |||
| 13 | # depends on each other | ||
| 14 | |||
| 15 | config C1 | ||
| 16 | bool "C1" | ||
| 17 | depends on C2 | ||
| 18 | |||
| 19 | config C2 | ||
| 20 | bool "C2" | ||
| 21 | depends on C1 | ||
| 22 | |||
| 23 | # depends on and select | ||
| 24 | |||
| 25 | config D1 | ||
| 26 | bool "D1" | ||
| 27 | depends on D2 | ||
| 28 | select D2 | ||
| 29 | |||
| 30 | config D2 | ||
| 31 | bool | ||
| 32 | |||
| 33 | # depends on and imply | ||
| 34 | # This is not recursive dependency | ||
| 35 | |||
| 36 | config E1 | ||
| 37 | bool "E1" | ||
| 38 | depends on E2 | ||
| 39 | imply E2 | ||
| 40 | |||
| 41 | config E2 | ||
| 42 | bool "E2" | ||
| 43 | |||
| 44 | # property | ||
| 45 | |||
| 46 | config F1 | ||
| 47 | bool "F1" | ||
| 48 | default F2 | ||
| 49 | |||
| 50 | config F2 | ||
| 51 | bool "F2" | ||
| 52 | depends on F1 | ||
| 53 | |||
| 54 | # menu | ||
| 55 | |||
| 56 | menu "menu depending on its content" | ||
| 57 | depends on G | ||
| 58 | |||
| 59 | config G | ||
| 60 | bool "G" | ||
| 61 | |||
| 62 | endmenu | ||
| @@ -0,0 +1,9 @@ | |||
| 1 | """ | ||
| 2 | Warn recursive inclusion. | ||
| 3 | |||
| 4 | Recursive dependency should be warned. | ||
| 5 | """ | ||
| 6 | |||
| 7 | def test(conf): | ||
| 8 | assert conf.oldaskconfig() == 0 | ||
| 9 | assert conf.stderr_contains('expected_stderr') | ||
| @@ -0,0 +1,30 @@ | |||
| 1 | Kconfig:9:error: recursive dependency detected! | ||
| 2 | Kconfig:9: symbol B is selected by B | ||
| 3 | For a resolution refer to Documentation/kbuild/kconfig-language.txt | ||
| 4 | subsection "Kconfig recursive dependency limitations" | ||
| 5 | |||
| 6 | Kconfig:3:error: recursive dependency detected! | ||
| 7 | Kconfig:3: symbol A depends on A | ||
| 8 | For a resolution refer to Documentation/kbuild/kconfig-language.txt | ||
| 9 | subsection "Kconfig recursive dependency limitations" | ||
| 10 | |||
| 11 | Kconfig:15:error: recursive dependency detected! | ||
| 12 | Kconfig:15: symbol C1 depends on C2 | ||
| 13 | Kconfig:19: symbol C2 depends on C1 | ||
| 14 | For a resolution refer to Documentation/kbuild/kconfig-language.txt | ||
| 15 | subsection "Kconfig recursive dependency limitations" | ||
| 16 | |||
| 17 | Kconfig:30:error: recursive dependency detected! | ||
| 18 | Kconfig:30: symbol D2 is selected by D1 | ||
| 19 | Kconfig:25: symbol D1 depends on D2 | ||
| 20 | For a resolution refer to Documentation/kbuild/kconfig-language.txt | ||
| 21 | subsection "Kconfig recursive dependency limitations" | ||
| 22 | |||
| 23 | Kconfig:59:error: recursive dependency detected! | ||
| 24 | Kconfig:59: symbol G depends on G | ||
| 25 | For a resolution refer to Documentation/kbuild/kconfig-language.txt | ||
| 26 | subsection "Kconfig recursive dependency limitations" | ||
| 27 | |||
| 28 | Kconfig:50:error: recursive dependency detected! | ||
| 29 | Kconfig:50: symbol F2 depends on F1 | ||
| 30 | Kconfig:48: symbol F1 default value contains F2 | ||