manage test attribute
This commit is contained in:
parent
562ef23dd2
commit
c05c0b9716
21 changed files with 170 additions and 29 deletions
|
@ -53,6 +53,38 @@ class VariableAnnotator: # pylint: disable=R0903
|
|||
return
|
||||
self.objectspace = objectspace
|
||||
self.convert_variable()
|
||||
self.convert_test()
|
||||
|
||||
def convert_variable(self):
|
||||
"""convert variable
|
||||
"""
|
||||
for families in self.objectspace.space.variables.values():
|
||||
families.doc = families.name
|
||||
families.path = families.name
|
||||
for family in families.family.values():
|
||||
if not hasattr(family, 'description'):
|
||||
family.description = family.name
|
||||
for key, value in RENAME_ATTIBUTES.items():
|
||||
setattr(family, value, getattr(family, key))
|
||||
setattr(family, key, None)
|
||||
family.name = normalize_family(family.name)
|
||||
if not hasattr(family, 'variable'):
|
||||
continue
|
||||
for variable in family.variable.values():
|
||||
if isinstance(variable, self.objectspace.leadership):
|
||||
# first variable is a leader, others are follower
|
||||
variable_type = 'leader'
|
||||
for follower in variable.variable:
|
||||
self._convert_variable(families.name,
|
||||
follower,
|
||||
variable_type,
|
||||
)
|
||||
variable_type = 'follower'
|
||||
else:
|
||||
self._convert_variable(families.name,
|
||||
variable,
|
||||
'variable',
|
||||
)
|
||||
|
||||
def _convert_variable(self,
|
||||
namespace: str,
|
||||
|
@ -113,33 +145,33 @@ class VariableAnnotator: # pylint: disable=R0903
|
|||
self.objectspace.space.constraints.check.append(check)
|
||||
variable.type = 'string'
|
||||
|
||||
def convert_variable(self):
|
||||
"""convert variable
|
||||
def convert_test(self):
|
||||
"""Convert variable tests value
|
||||
"""
|
||||
for families in self.objectspace.space.variables.values():
|
||||
families.doc = families.name
|
||||
families.path = families.name
|
||||
for family in families.family.values():
|
||||
if not hasattr(family, 'description'):
|
||||
family.description = family.name
|
||||
for key, value in RENAME_ATTIBUTES.items():
|
||||
setattr(family, value, getattr(family, key))
|
||||
setattr(family, key, None)
|
||||
family.name = normalize_family(family.name)
|
||||
if not hasattr(family, 'variable'):
|
||||
continue
|
||||
for variable in family.variable.values():
|
||||
if isinstance(variable, self.objectspace.leadership):
|
||||
# first variable is a leader, others are follower
|
||||
variable_type = 'leader'
|
||||
for follower in variable.variable:
|
||||
self._convert_variable(families.name,
|
||||
follower,
|
||||
variable_type,
|
||||
)
|
||||
variable_type = 'follower'
|
||||
self._convert_test(follower)
|
||||
else:
|
||||
self._convert_variable(families.name,
|
||||
self._convert_test(variable)
|
||||
|
||||
def _convert_test(self,
|
||||
variable,
|
||||
'variable',
|
||||
)
|
||||
) -> None:
|
||||
if hasattr(variable, 'test'):
|
||||
if not variable.test:
|
||||
del variable.test
|
||||
return
|
||||
values = variable.test.split('|')
|
||||
new_values = []
|
||||
for value in values:
|
||||
if value == '':
|
||||
value = None
|
||||
else:
|
||||
value = CONVERT_OPTION.get(variable.type, {}).get('func', str)(value)
|
||||
new_values.append(value)
|
||||
variable.test = tuple(new_values)
|
||||
|
|
|
@ -298,12 +298,6 @@ class Variable(Common):
|
|||
for key in self.get_attributes(self.elt):
|
||||
value = getattr(self.elt, key)
|
||||
if key in FORCE_INFORMATIONS:
|
||||
if key == 'test': # pragma: no cover
|
||||
value = value.split('|')
|
||||
if self.object_type == 'IntOption':
|
||||
value = [int(v) for v in value]
|
||||
elif self.object_type == 'FloatOption':
|
||||
value = [float(v) for v in value]
|
||||
self.informations[key] = value
|
||||
else:
|
||||
self.attrib[key] = value
|
||||
|
|
|
@ -13,7 +13,7 @@ except:
|
|||
from tiramisu import *
|
||||
from rougail.tiramisu import ConvertDynOptionDescription
|
||||
option_3 = StrOption(properties=frozenset({'mandatory', 'normal'}), name='mode_conteneur_actif', doc='mode_conteneur_actif', multi=False, default='non')
|
||||
option_3.impl_set_information("test", ['test'])
|
||||
option_3.impl_set_information("test", ('test',))
|
||||
option_2 = OptionDescription(name='general', doc='general', properties=frozenset({'normal'}), children=[option_3])
|
||||
option_1 = OptionDescription(name='rougail', doc='rougail', children=[option_2])
|
||||
option_0 = OptionDescription(name='baseoption', doc='baseoption', children=[option_1])
|
||||
|
|
|
@ -13,7 +13,7 @@ except:
|
|||
from tiramisu import *
|
||||
from rougail.tiramisu import ConvertDynOptionDescription
|
||||
option_3 = StrOption(properties=frozenset({'mandatory', 'normal'}), name='mode_conteneur_actif', doc='mode_conteneur_actif', multi=False, default='non')
|
||||
option_3.impl_set_information("test", ['test1', 'test2'])
|
||||
option_3.impl_set_information("test", ('test1', 'test2'))
|
||||
option_2 = OptionDescription(name='general', doc='general', properties=frozenset({'normal'}), children=[option_3])
|
||||
option_1 = OptionDescription(name='rougail', doc='rougail', children=[option_2])
|
||||
option_0 = OptionDescription(name='baseoption', doc='baseoption', children=[option_1])
|
||||
|
|
12
tests/dictionaries/01test_multi_none/00-base.xml
Normal file
12
tests/dictionaries/01test_multi_none/00-base.xml
Normal file
|
@ -0,0 +1,12 @@
|
|||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
<rougail>
|
||||
<variables>
|
||||
<family name="general">
|
||||
<variable name="mode_conteneur_actif" test="|test1|test2">
|
||||
<value>non</value>
|
||||
</variable>
|
||||
</family>
|
||||
</variables>
|
||||
</rougail>
|
||||
<!-- vim: ts=4 sw=4 expandtab
|
||||
-->
|
0
tests/dictionaries/01test_multi_none/__init__.py
Normal file
0
tests/dictionaries/01test_multi_none/__init__.py
Normal file
1
tests/dictionaries/01test_multi_none/makedict/base.json
Normal file
1
tests/dictionaries/01test_multi_none/makedict/base.json
Normal file
|
@ -0,0 +1 @@
|
|||
{"rougail.general.mode_conteneur_actif": "non"}
|
19
tests/dictionaries/01test_multi_none/tiramisu/base.py
Normal file
19
tests/dictionaries/01test_multi_none/tiramisu/base.py
Normal file
|
@ -0,0 +1,19 @@
|
|||
from importlib.machinery import SourceFileLoader
|
||||
from importlib.util import spec_from_loader, module_from_spec
|
||||
loader = SourceFileLoader('func', 'tests/dictionaries/../eosfunc/test.py')
|
||||
spec = spec_from_loader(loader.name, loader)
|
||||
func = module_from_spec(spec)
|
||||
loader.exec_module(func)
|
||||
for key, value in dict(locals()).items():
|
||||
if key != ['SourceFileLoader', 'func']:
|
||||
setattr(func, key, value)
|
||||
try:
|
||||
from tiramisu3 import *
|
||||
except:
|
||||
from tiramisu import *
|
||||
from rougail.tiramisu import ConvertDynOptionDescription
|
||||
option_3 = StrOption(properties=frozenset({'mandatory', 'normal'}), name='mode_conteneur_actif', doc='mode_conteneur_actif', multi=False, default='non')
|
||||
option_3.impl_set_information("test", (None, 'test1', 'test2'))
|
||||
option_2 = OptionDescription(name='general', doc='general', properties=frozenset({'normal'}), children=[option_3])
|
||||
option_1 = OptionDescription(name='rougail', doc='rougail', children=[option_2])
|
||||
option_0 = OptionDescription(name='baseoption', doc='baseoption', children=[option_1])
|
12
tests/dictionaries/01test_redefine/00-base.xml
Normal file
12
tests/dictionaries/01test_redefine/00-base.xml
Normal file
|
@ -0,0 +1,12 @@
|
|||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
<rougail>
|
||||
<variables>
|
||||
<family name="general">
|
||||
<variable name="mode_conteneur_actif" test="test">
|
||||
<value>non</value>
|
||||
</variable>
|
||||
</family>
|
||||
</variables>
|
||||
</rougail>
|
||||
<!-- vim: ts=4 sw=4 expandtab
|
||||
-->
|
10
tests/dictionaries/01test_redefine/10-base.xml
Normal file
10
tests/dictionaries/01test_redefine/10-base.xml
Normal file
|
@ -0,0 +1,10 @@
|
|||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
<rougail>
|
||||
<variables>
|
||||
<family name="general">
|
||||
<variable name="mode_conteneur_actif" redefine="True" test="test1"/>
|
||||
</family>
|
||||
</variables>
|
||||
</rougail>
|
||||
<!-- vim: ts=4 sw=4 expandtab
|
||||
-->
|
0
tests/dictionaries/01test_redefine/__init__.py
Normal file
0
tests/dictionaries/01test_redefine/__init__.py
Normal file
1
tests/dictionaries/01test_redefine/makedict/base.json
Normal file
1
tests/dictionaries/01test_redefine/makedict/base.json
Normal file
|
@ -0,0 +1 @@
|
|||
{"rougail.general.mode_conteneur_actif": "non"}
|
0
tests/dictionaries/01test_redefine/tiramisu/__init__.py
Normal file
0
tests/dictionaries/01test_redefine/tiramisu/__init__.py
Normal file
19
tests/dictionaries/01test_redefine/tiramisu/base.py
Normal file
19
tests/dictionaries/01test_redefine/tiramisu/base.py
Normal file
|
@ -0,0 +1,19 @@
|
|||
from importlib.machinery import SourceFileLoader
|
||||
from importlib.util import spec_from_loader, module_from_spec
|
||||
loader = SourceFileLoader('func', 'tests/dictionaries/../eosfunc/test.py')
|
||||
spec = spec_from_loader(loader.name, loader)
|
||||
func = module_from_spec(spec)
|
||||
loader.exec_module(func)
|
||||
for key, value in dict(locals()).items():
|
||||
if key != ['SourceFileLoader', 'func']:
|
||||
setattr(func, key, value)
|
||||
try:
|
||||
from tiramisu3 import *
|
||||
except:
|
||||
from tiramisu import *
|
||||
from rougail.tiramisu import ConvertDynOptionDescription
|
||||
option_3 = StrOption(properties=frozenset({'mandatory', 'normal'}), name='mode_conteneur_actif', doc='mode_conteneur_actif', multi=False, default='non')
|
||||
option_3.impl_set_information("test", ('test1',))
|
||||
option_2 = OptionDescription(name='general', doc='general', properties=frozenset({'normal'}), children=[option_3])
|
||||
option_1 = OptionDescription(name='rougail', doc='rougail', children=[option_2])
|
||||
option_0 = OptionDescription(name='baseoption', doc='baseoption', children=[option_1])
|
12
tests/dictionaries/01test_redefine_remove/00-base.xml
Normal file
12
tests/dictionaries/01test_redefine_remove/00-base.xml
Normal file
|
@ -0,0 +1,12 @@
|
|||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
<rougail>
|
||||
<variables>
|
||||
<family name="general">
|
||||
<variable name="mode_conteneur_actif" test="test">
|
||||
<value>non</value>
|
||||
</variable>
|
||||
</family>
|
||||
</variables>
|
||||
</rougail>
|
||||
<!-- vim: ts=4 sw=4 expandtab
|
||||
-->
|
10
tests/dictionaries/01test_redefine_remove/10-base.xml
Normal file
10
tests/dictionaries/01test_redefine_remove/10-base.xml
Normal file
|
@ -0,0 +1,10 @@
|
|||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
<rougail>
|
||||
<variables>
|
||||
<family name="general">
|
||||
<variable name="mode_conteneur_actif" redefine="True" test=""/>
|
||||
</family>
|
||||
</variables>
|
||||
</rougail>
|
||||
<!-- vim: ts=4 sw=4 expandtab
|
||||
-->
|
0
tests/dictionaries/01test_redefine_remove/__init__.py
Normal file
0
tests/dictionaries/01test_redefine_remove/__init__.py
Normal file
|
@ -0,0 +1 @@
|
|||
{"rougail.general.mode_conteneur_actif": "non"}
|
18
tests/dictionaries/01test_redefine_remove/tiramisu/base.py
Normal file
18
tests/dictionaries/01test_redefine_remove/tiramisu/base.py
Normal file
|
@ -0,0 +1,18 @@
|
|||
from importlib.machinery import SourceFileLoader
|
||||
from importlib.util import spec_from_loader, module_from_spec
|
||||
loader = SourceFileLoader('func', 'tests/dictionaries/../eosfunc/test.py')
|
||||
spec = spec_from_loader(loader.name, loader)
|
||||
func = module_from_spec(spec)
|
||||
loader.exec_module(func)
|
||||
for key, value in dict(locals()).items():
|
||||
if key != ['SourceFileLoader', 'func']:
|
||||
setattr(func, key, value)
|
||||
try:
|
||||
from tiramisu3 import *
|
||||
except:
|
||||
from tiramisu import *
|
||||
from rougail.tiramisu import ConvertDynOptionDescription
|
||||
option_3 = StrOption(properties=frozenset({'mandatory', 'normal'}), name='mode_conteneur_actif', doc='mode_conteneur_actif', multi=False, default='non')
|
||||
option_2 = OptionDescription(name='general', doc='general', properties=frozenset({'normal'}), children=[option_3])
|
||||
option_1 = OptionDescription(name='rougail', doc='rougail', children=[option_2])
|
||||
option_0 = OptionDescription(name='baseoption', doc='baseoption', children=[option_1])
|
Loading…
Reference in a new issue