summaryrefslogtreecommitdiff
path: root/testsuite.py
AgeCommit message (Collapse)Author
2018-02-27testsuite.py: Remove write_and_verify_header()Ulf Magnusson
Unused leftover from Kconfiglib 1.
2018-02-27Implement 'rsource' statement ('source' with relative path)Roman
The 'rsource' statement works like 'source', but looks relative to the Kconfig file that has the 'rsource' rather than relative to the base Kconfig file. Using 'rsource' makes it possible to move subtrees with Kconfig files around without breaking references to other Kconfig files. So far, this is a Kconfiglib-exclusive feature.
2018-02-16Include direct deps. in Symbol/Choice.__str__()Ulf Magnusson
Direct dependencies are significant for 'imply' even if the symbol has no properties, so they need to be included to get semantically equivalent output. Making the direct dependencies clear is helpful in general too, even if you can usually infer them from the properties they get propagated to.
2018-02-08Don't special-case user_value for choice symbols set to yUlf Magnusson
Previously, setting a choice symbol to y would only update user_selection on the parent choice and not the symbol's own user_value. Now both are updated. The point of the old behavior was to remember the m mode selections of a choice when it was switched back and forth between m and y mode, which was a feature I thought the C implementation had. On closer inspection, the C implementation never had that feature, though it might appear like it if you only make "lucky" changes (if you never select any symbols in y mode that were n in m mode). The new behavior is simpler and easier to understand: Symbol.user_value now always matches the value assigned in a .config file or via set_value(), provided the value was well-formed. This might avoid some special-casing in scripts too. The loss in usability is pretty minimal.
2018-02-07Add back omitted $ARCH != $SRCARCH defconfig testsUlf Magnusson
Oversight during refactoring. defconfig files should be searched for in in arch/$SRCARCH/ rather than arch/$ARCH/, to account for $ARCH != $SRCARCH. Adds a few tests to test_defconfig(). Some of the ARCH/defconfig combinations might be nonsensical, but that's fine. Make all test functions take $SRCARCH as well as $ARCH, which makes the implementation straightforward.
2018-02-03Refactor test suite arch Kconfig loadingUlf Magnusson
List the ARCH/SRCARCH pairs that don't conform to the arch/$ARCH/Kconfig pattern directly.
2018-02-03Set $KERNELVERSION properly in test suiteUlf Magnusson
Don't think anything currently depends on it where it would matter for the test suite, but might as well.
2018-01-30Fix warnings printed for test suiteUlf Magnusson
Just to have clean output. The warnings themselves are accurate.
2018-01-28Add some post-parsing warningsUlf Magnusson
These are easiest to check after parsing, since a symbol/choice can be defined in multiple locations: - Warn if a symbol or choice defined without a type. Also warn for choice value symbols defined without a type, even if they automatically get their type from the choice. This feature isn't well-known and probably not used deliberately. - Warn if a choice is defined without a prompt - Warn of a choice default symbol is not contained in the choice Also move _name_and_loc_str() from the symbol class to the global scope and generalize it to be able to handle choices.
2018-01-28Flag constant symbols where they're not allowedUlf Magnusson
Might break U-Boot if they ever upgrade Kconfiglib, because they have a 'select y' in there (which the C tools don't flag since they only look for quotes), but it's a one-line fix.
2018-01-25Support <, > relational operators with tristatesUlf Magnusson
Mirrors 9059a3493ef ("kconfig: fix relational operators for bool and tristate symbols") in the C implementation.
2018-01-22Simplify escape()Ulf Magnusson
The fancy regex isn't really justified. Much faster with replace() too, though this is an unlikely hotspot. Could have used a \g<0> backreference to refer to the entire match instead of using a capturing group too. Hadn't discovered that. Add some selftests for escape() and unescape() too.
2018-01-21Whitespace nitsUlf Magnusson
2018-01-20Get rid of _next_help_line()Ulf Magnusson
Speeds things up a bit further. Rework the unget handling to save the ungotten line directly instead of using a flag. Add some help texts to tests/Klocation to make sure the line number is updated properly for those.
2018-01-17Improve recursive 'source' testUlf Magnusson
Check for incorrect exceptions instead of propagating them, and get rid of the flag.
2018-01-17Detect recursive 'source' and print backtraceUlf Magnusson
Easier to debug than a RecursionError. Point out in the exception message that a common cause is environment variables not being set correctly.
2018-01-16Get TRI_TO_STR from Kconfiglib in test suiteUlf Magnusson
Old code.
2018-01-16Do not optimize promptless choice symbolsUlf Magnusson
Choice symbols without prompts are pointless and probably nonexistent in practice, so it's a bit silly to run the no-prompt optimization for them. Piggyback copyright year update.
2018-01-15Support disabling warnings for redundant assignmentsSebastian Bøe
The Linux Kernel's merge_config.sh defaults to disabling warnings for redundant assignments and has support for enabling them specifically. This patch reproduces this behaviour in kconfiglib except that we retaing kconfiglib's default behaviour of enabling the warnings. Signed-off-by: Sebastian Bøe <sebastian.boe@nordicsemi.no>
2018-01-11Mention that $CONFIG_ is used for C headers tooUlf Magnusson
Piggyback some cleanup and redundant comment removal.
2018-01-05Don't write out 'option env' symbols to C headerUlf Magnusson
Oversight. SYMBOL_AUTO (env_var) being set indirectly clears SYMBOL_WRITE (_write_to_conf) in sym_calc_value(). The .config case was already fine due to an explicit env_var check. Even non-visible env. symbols ended up in the header, due to 'option env' internally adding a default. Disallow user values altogether on 'option env' symbols, even if specified manually. This matches the C implementation. Add a warning too.
2017-11-12Simplify licensingUlf Magnusson
IANAL, but hopefully this should be enough. Don't bundle the license file. Might be easier to work with if just kconfiglib.py is copied.
2017-11-10Fix a few typosUlf Magnusson
Clean up some formatting a bit too.
2017-11-08Add a release test scriptUlf Magnusson
Confirms that all the examples that aren't tested in the test suite at least run. Easy to miss brokenness there. Output can be inspected manually (it'll vary depending on the kernel version). Fix defconfig_oldconfig.py, which hadn't been properly updated for the new API.
2017-11-07s/overriden/overridden/Ulf Magnusson
Add test coverage for that Choice.__repr__() path too.
2017-11-06Get rid of Choice.default_selectionUlf Magnusson
Was only used by allyesconfig.py. Easy to add back if needed at any point.
2017-11-04Fix test suite Python 3 syntax errorUlf Magnusson
"List comprehensions no longer support the...", https://docs.python.org/3.0/whatsnew/3.0.html
2017-11-04Don't put 0 in .assignable for y-mode choice symsUlf Magnusson
Just return (2,). More intuitive, and makes y-mode choices just work in the menuconfig example. Turns out to be simple to implement with choice symbol visibility depending on the Choice.
2017-11-04Return False from set_value() for invalid valuesUlf Magnusson
Usability improvement discovered while putting together menuconfig example. Would have to duplicate validity checking otherwise. Also reject negative values for HEX symbols, just to be compatible with the C implementation. Keep TRI_TO_STR and STR_TO_TRI public. They're pretty handy even if they're trivial.
2017-11-03Fix error in commentUlf Magnusson
s/absolute/relative/
2017-11-03Remove outdated commentUlf Magnusson
Used to set a bunch of other options too on MODULES in the test, but it's cleaner to do it separately.
2017-11-03Remove outdated TODO commentUlf Magnusson
Tests for .assignable have been added.
2017-11-03Test .assignable with no modulesUlf Magnusson
Just add a column for the expected values for the no-modules case to the existing tests. Also automatically detect choice symbols in choices with y mode and disable the value setting test, instead of having to pass a flag.
2017-11-03Add comment to choice .assignable test tooUlf Magnusson
2017-11-03Test Choice.assignable, fix for optional choicesUlf Magnusson
Could never return 0 as a valid assignable value previously.
2017-11-03Add .assignable selftests for choice symbolsUlf Magnusson
2017-11-03Fix copy-paste comment errorUlf Magnusson
2017-11-03Test .assignable for imply, find C menuconfig bugUlf Magnusson
A tristate implied to y can't be set to m. Other than that, imply doesn't affect assignable values. Fix some copy-paste type errors too. In the C menuconfig, a tristate with m visibility implied to y gets stuck if you change it with space. Look into that later. Test case: config MODULES def_bool y option modules config Y_IMPLIER def_tristate y imply Y_IMP_M_VIS_TRI config Y_IMP_M_VIS_TRI tristate "y-imp m-vis tri" if m
2017-11-03Add initial selftests for .assignableUlf Magnusson
Comprehensive selftests are important here, because the allno/yesconfig.py scripts only check the upper and lower bound, and allnoconfig disables modules. Found a bug for non-selected m-visible tristates, where n didn't show up in sym.assignable. Everything matches menuconfig after fixing that. Still need to test symbols in choices with different modes, imply, and .assignable for choices.
2017-11-03Test suite nitsUlf Magnusson
2017-11-02Clean up choice semantics testsUlf Magnusson
Can finally get rid of get_choices() and get_items() now. Piggyback some more Kwtf tests, and remove some outdated comments. There's already plenty of select/imply testing.
2017-11-02Get rid of some old API compatibility hacksUlf Magnusson
Scaffolding to make the test suite work with the new API. No longer needed. get_choices() will be gone soon too.
2017-11-02Clean up .kconfig testsUlf Magnusson
Kinda silly to test if they're separate since a long time, but can do that easily too with some reorganization.
2017-11-02Clean up relation testUlf Magnusson
Think those variables got used in other places before... Fetch the choices by name. Also dedotdotdot all messages for consistency.
2017-11-02Get rid of separate is_optional testUlf Magnusson
The choice semantics tests already verify the behavior of optional choices. Just print an optional choice instead to get some coverage for querying it. Do minor cleanup elsewhere.
2017-11-02Update choice tests, get rid of some old testsUlf Magnusson
Need to manually set the mode of the choice now. Dependencies get a huge workout just from lack of global invalidation, so the manual dependency tests might be redundant. Would be tricky to reuse the old tests as is too, so they would need to be restructured at least.
2017-11-02Fix relation tests, remove some outdated testsUlf Magnusson
Menus are plain menu nodes now, and those are exercised elsewhere.
2017-11-02Always save user values if they're validUlf Magnusson
Can just skip the invalidation for promptless symbols. Makes things less magic and more intuitive while still being fast. Means no docs need to be rewritten too. Now the warning gets printed for unset_value() as well.
2017-11-01Switch to a much faster invalidation algorithmUlf Magnusson
_cached_vis is always calculated as a side effect of calculating any other cached value, and so doubles as a flag for whether an item (symbol or choice) has any cached values. If _cached_vis is None for some item, it also indirectly means that no other item can have any cached values that (actually) depend on the item, because _cached_vis would have gotten calculated as a side effect of calculating any such cached value. Therefore, it's safe to stop recursive invalidation at an item that has _cached_vis None. Huge speedup for the allyes/noconfig*.py scripts. allnoconfig_simpler.py went from 2.671 seconds to 1.067 seconds. The dependency selftests need to be updated too now that _get_dependent() is gone. The kernel defconfig tests pass even if all global invalidation is disabled at least (except for the few defconfigs that don't set MODULES=y), and that's a huge invalidation test. Seems pretty speedy too, even though there's some redundant work, so maybe things could be simplified a bit...
2017-10-31Require manual mode setting for choicesUlf Magnusson
Do not change the mode if y is assigned to a choice symbol inside a choice in m mode, for example. Require Choice.set_value() to be called instead. This makes choices way less magical and more menuconfig-like. It would also be confusing to be able to assign y to a choice symbol when y is not in sym.assignable. Set the mode manually in load_config() (y assigned to a choice symbol => y mode, and ditto for m). Change the warning for inconsistent values to one that's probably less confusing, though the old one was closer to the warning printed by the C implementation. Need to fix a bunch of tests too...