diff options
| -rw-r--r-- | kconfigtest.py | 78 | ||||
| -rw-r--r-- | tests/Kref | 35 |
2 files changed, 94 insertions, 19 deletions
diff --git a/kconfigtest.py b/kconfigtest.py index 797832f..af63c26 100644 --- a/kconfigtest.py +++ b/kconfigtest.py @@ -388,33 +388,75 @@ def run_selftests(): c = kconfiglib.Config("Kconfiglib/tests/Kref") - def verify_refs(sym_name, refs_no_enclosing, refs_enclosing): - sym = c[sym_name] - sym_refs = sym.get_referenced_symbols() - sym_refs_enclosing = sym.get_referenced_symbols(True) - verify(len(sym_refs) == len(refs_no_enclosing), + # General function for checking get_referenced_symbols() output. + # Specialized for symbols below. + def verify_refs(item, refs_no_enclosing, refs_enclosing): + item_refs = item.get_referenced_symbols() + item_refs_enclosing = item.get_referenced_symbols(True) + + # For failure messages + if item.is_symbol(): + item_string = item.get_name() + elif item.is_choice(): + if item.get_name() is None: + item_string = "choice" + else: + item_string = "choice " + item.get_name() + elif item.is_menu(): + item_string = 'menu "{0}"'.format(item.get_title()) + else: + # Comment + item_string = 'comment "{0}"'.format(item.get_text()) + + verify(len(item_refs) == len(refs_no_enclosing), "Wrong number of refs excluding enclosing for {0}". - format(sym.get_name())) - verify(len(sym_refs_enclosing) == len(refs_enclosing), + format(item_string)) + verify(len(item_refs_enclosing) == len(refs_enclosing), "Wrong number of refs including enclosing for {0}". - format(sym.get_name())) + format(item_string)) for r in [c[name] for name in refs_no_enclosing]: - verify(r in sym_refs, + verify(r in item_refs, "{0} should reference {1} when excluding enclosing". - format(sym.get_name(), r.get_name())) + format(item_string, r.get_name())) for r in [c[name] for name in refs_enclosing]: - verify(r in sym_refs_enclosing, + verify(r in item_refs_enclosing, "{0} should reference {1} when including enclosing". - format(sym.get_name(), r.get_name())) + format(item_string, r.get_name())) + + # Symbols referenced by symbols - verify_refs("NO_REF", [], []) - verify_refs("ONE_REF", ["A"], ["A"]) + def verify_sym_refs(sym_name, refs_no_enclosing, refs_enclosing): + verify_refs(c[sym_name], refs_no_enclosing, refs_enclosing) + + verify_sym_refs("NO_REF", [], []) + verify_sym_refs("ONE_REF", ["A"], ["A"]) own_refs = ["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O"] - verify_refs("MANY_REF", - own_refs, - own_refs + ["IF_REF_1", "IF_REF_2", "MENU_REF_1", - "MENU_REF_2"]) + verify_sym_refs("MANY_REF", + own_refs, + own_refs + ["IF_REF_1", "IF_REF_2", "MENU_REF_1", + "MENU_REF_2"]) + + # Symbols referenced by choices + + own_refs = ["CHOICE_REF_4", "CHOICE_REF_5", "CHOICE_REF_6"] + verify_refs(c.get_choices()[0], + own_refs, + own_refs + ["CHOICE_REF_1", "CHOICE_REF_2", "CHOICE_REF_3"]) + + # Symbols referenced by menus + + own_refs = ["NO_REF", "MENU_REF_3"] + verify_refs(c.get_menus()[1], + own_refs, + own_refs + ["MENU_REF_1", "MENU_REF_2"]) + + # Symbols referenced by comments + + own_refs = ["COMMENT_REF_3", "COMMENT_REF_4", "COMMENT_REF_5"] + verify_refs(c.get_comments()[0], + own_refs, + own_refs + ["COMMENT_REF_1", "COMMENT_REF_2"]) # # get_selected_symbols() (same test file) @@ -6,7 +6,7 @@ config NO_REF config ONE_REF def_bool A -menu "m" +menu "menu 1" depends on MENU_REF_1 && MENU_REF_2 if IF_REF_1 && IF_REF_2 @@ -22,3 +22,36 @@ config MANY_REF endif endmenu + +if MENU_REF_1 +if MENU_REF_1 = MENU_REF_2 + +menu "menu 2" + depends on NO_REF || MENU_REF_3 +endmenu +endif +endif + +if CHOICE_REF_1 +if CHOICE_REF_2 = CHOICE_REF_3 +choice + tristate "choice" if CHOICE_REF_4 || CHOICE_REF_5 + depends on !CHOICE_REF_6 + +config A + bool "A" + +config B + bool "B" + +endchoice +endif +endif + +if COMMENT_REF_1 +if !COMMENT_REF_2 +comment "comment" + depends on COMMENT_REF_3 != COMMENT_REF_4 + depends on COMMENT_REF_5 +endif +endif |
