add some tests for dynoptiondescription + correction

This commit is contained in:
2018-08-19 09:20:20 +02:00
parent 5f8cd546e7
commit 201f7d2592
12 changed files with 389 additions and 109 deletions

View File

@ -24,7 +24,7 @@ from copy import copy
from ..i18n import _
from ..setting import ConfigBag, OptionBag, groups, undefined, owners
from .baseoption import BaseOption, OnlyOption
from .option import ALLOWED_CONST_LIST, DynSymLinkOption
from .option import ALLOWED_CONST_LIST
from .syndynoptiondescription import SynDynOptionDescription
from ..error import ConfigError, ConflictError
@ -234,12 +234,11 @@ class OptionDescriptionWalk(CacheOptionDescription):
ori_index = len(rootpath) + 1
subpaths = [rootpath] + option.impl_getpath(
option_bag.config_bag.context)[ori_index:].split('.')[:-1]
for suffix in dynopt._impl_get_suffixes(option_bag):
for suffix in dynopt.impl_get_suffixes(option_bag):
subpath = '.'.join([subp + suffix for subp in subpaths])
if isinstance(option, OnlyOption):
yield DynSymLinkOption(option,
subpath,
suffix)
yield option.impl_get_dynoption(subpath,
suffix)
else:
yield SynDynOptionDescription(option,
subpath,
@ -333,7 +332,7 @@ class OptionDescriptionWalk(CacheOptionDescription):
subpath,
None,
config_bag)
for suffix in child._impl_get_suffixes(option_bag):
for suffix in child.impl_get_suffixes(option_bag):
yield SynDynOptionDescription(child,
subpath,
suffix)
@ -360,7 +359,7 @@ class OptionDescriptionWalk(CacheOptionDescription):
subconfig.cfgimpl_get_path(),
None,
config_bag)
for value in child._impl_get_suffixes(option_bag):
for value in child.impl_get_suffixes(option_bag):
if name == cname + value:
return SynDynOptionDescription(child,
subconfig.cfgimpl_get_path(),
@ -375,9 +374,8 @@ class OptionDescriptionWalk(CacheOptionDescription):
subpath,
suffix)
else:
return DynSymLinkOption(child,
subpath,
suffix)
return child.impl_get_dynoption(subpath,
suffix)
class OptionDescription(OptionDescriptionWalk):