diff --git a/doc/check/README.md b/doc/check/README.md
index 5127691d5..6dd671bda 100644
--- a/doc/check/README.md
+++ b/doc/check/README.md
@@ -1,5 +1,4 @@
# Les vérifications des valeurs
- [Fonction de vérification](function.md)
- - [Les variables à choix](valid_enum.md)
- [Réfinition](redefine.md)
diff --git a/doc/check/valid_enum.md b/doc/check/valid_enum.md
deleted file mode 100644
index 64cf29c70..000000000
--- a/doc/check/valid_enum.md
+++ /dev/null
@@ -1,46 +0,0 @@
-# Les variables à choix
-
-Une variable à choix est d'abord une variable avec une [fonction check](function.md).
-
-## Les variables à choix simple
-
-Il est possible d'imposer une liste de valeur pour une variable particulière :
-
-```
-
- yes
- no
- maybe
- my_variable
-
-```
-
-Dans ce cas, seule les valeurs proposés sont possible pour cette variable.
-
-Par défaut, cette variable est obligatoire. Cela signifie qu'il n'est pas possible de spécifier "None" à cette variable.
-
-## Les variables à choix avec valeur None
-
-Il y a deux possibilités pour avoir une valeur "None" dans les choix :
-
-- rendre la variable non obligatoire, cela va ajouter un choix "None" dans la liste :
-
-```
-
-```
-
-Ou en ajoutant le paramètre "None" :
-
-```
-
- yes
- no
-
- maybe
- my_variable
-
-```
-
-## La valeur par défaut
-
-Si aucune valeur n'est spécifié pour la variable, automatiquement le premier choix va est placé comme valeur par défaut.
diff --git a/doc/variable/README.md b/doc/variable/README.md
index f3a1ea3ab..9e5b86d2d 100644
--- a/doc/variable/README.md
+++ b/doc/variable/README.md
@@ -116,7 +116,6 @@ Les variables booléans sont par défaut obligatoire. Pour qu'une variable bool
```
Les variables avec une valeur par défaut (non calculée) sont également automatiquement obligatoire.
-[Les variables à choix](../check/valid_enum.md) sans choix "None" sont également automatiquement obligatoire.
## Valeur par défaut d'une variable
diff --git a/doc/variable/choice.md b/doc/variable/choice.md
new file mode 100644
index 000000000..5f5d158e0
--- /dev/null
+++ b/doc/variable/choice.md
@@ -0,0 +1,28 @@
+# Les variables à choix
+
+## Les variables à choix simple
+
+Il est possible d'imposer une liste de valeur pour une variable particulière :
+
+```
+
+ val1
+ val2
+ val3
+
+```
+
+Dans ce cas, seules les valeurs proposées sont possibles pour cette variable. Mais il est possible de mettre la valeur "None".
+
+## Les variables à choix avec valeur
+
+Si on précise une valeur, la variable passe obligatoire et la valeur "None" n'est plus autorisé :
+
+```
+
+ val1
+ val2
+ val3
+ val1
+
+```
diff --git a/src/rougail/annotator/check.py b/src/rougail/annotator/check.py
index f006831c9..a3949e95a 100644
--- a/src/rougail/annotator/check.py
+++ b/src/rougail/annotator/check.py
@@ -33,7 +33,7 @@ from rougail.utils import load_modules
from rougail.i18n import _
from rougail.error import DictConsistencyError, display_xmlfiles
-INTERNAL_FUNCTIONS = ['valid_enum', 'valid_in_network', 'valid_differ', 'valid_entier']
+INTERNAL_FUNCTIONS = ['valid_in_network', 'valid_differ', 'valid_entier']
class Annotator(TargetAnnotator, ParamAnnotator):
"""Annotate check
@@ -58,21 +58,11 @@ class Annotator(TargetAnnotator, ParamAnnotator):
self.convert_target(self.objectspace.space.constraints.check)
self.convert_param(self.objectspace.space.constraints.check)
self.check_check()
- self.check_valid_enum()
self.check_change_warning()
self.convert_valid_entier()
self.convert_check()
del objectspace.space.constraints.check
- def valid_type_validation(self,
- obj,
- ) -> None:
- variable_type = None
- if obj.name == 'valid_enum':
- for target in obj.target:
- variable_type = target.name.type
- return variable_type
-
def check_check(self): # pylint: disable=R0912
"""valid and manage
"""
@@ -87,119 +77,6 @@ class Annotator(TargetAnnotator, ParamAnnotator):
for idx in remove_indexes:
del self.objectspace.space.constraints.check[idx]
- def check_valid_enum(self):
- """verify valid_enum
- """
- remove_indexes = []
- for idx, check in enumerate(self.objectspace.space.constraints.check):
- if check.name != 'valid_enum':
- continue
- for target in check.target:
- if target.name.path in self.objectspace.valid_enums:
- check_xmlfiles = display_xmlfiles(self.objectspace.valid_enums\
- [target.name.path]['xmlfiles'])
- msg = _(f'valid_enum already set in {check_xmlfiles} '
- f'for "{target.name.name}", you may have forget remove_check')
- raise DictConsistencyError(msg, 3, check.xmlfiles)
- if not hasattr(check, 'param'):
- msg = _(f'param is mandatory for a valid_enum of variable "{target.name.name}"')
- raise DictConsistencyError(msg, 4, check.xmlfiles)
- variable_type = target.name.type
- values = self._set_valid_enum(target.name,
- check,
- )
- if values:
- if hasattr(target.name, 'value'):
- # check value
- self.check_valid_enum_value(target.name, values)
- else:
- # no value, set the first choice as default value
- new_value = self.objectspace.value(check.xmlfiles)
- new_value.name = values[0]
- new_value.type = variable_type
- target.name.value = [new_value]
- remove_indexes.append(idx)
- remove_indexes.sort(reverse=True)
- for idx in remove_indexes:
- del self.objectspace.space.constraints.check[idx]
-
- def _set_valid_enum(self,
- variable,
- check,
- ) -> List[Any]:
- # build choice
- variable.values = []
- variable.ori_type = variable.type
- variable.type = 'choice'
-
- has_variable = False
- values = []
- has_nil = False
- is_function = False
- for param in check.param:
- if has_variable:
- msg = _(f'only one "variable" parameter is allowed for valid_enum '
- f'of variable "{variable.name}"')
- raise DictConsistencyError(msg, 5, param.xmlfiles)
- if param.type == 'function':
- is_function = True
- choice = self.objectspace.choice(variable.xmlfiles)
- choice.name = param.text
- choice.type = 'function'
- choice.param = []
- variable.values.append(choice)
- continue
- if is_function:
- variable.values[0].param.append(param)
- continue
- param_type = variable.ori_type
- if param.type == 'variable':
- has_variable = True
- if param.optional is True:
- msg = _(f'optional parameter in valid_enum for variable "{variable.name}" '
- f'is not allowed')
- raise DictConsistencyError(msg, 14, param.xmlfiles)
- if not param.text.multi:
- msg = _(f'only multi "variable" parameter is allowed for valid_enum '
- f'of variable "{variable.name}"')
- raise DictConsistencyError(msg, 6, param.xmlfiles)
- param_type = 'variable'
- elif param.type == 'nil':
- has_nil = True
- values.append(param.text)
- choice = self.objectspace.choice(variable.xmlfiles)
- choice.name = param.text
- choice.type = param_type
- variable.values.append(choice)
- if is_function:
- return None
- if 'mandatory' not in vars(variable):
- variable.mandatory = not has_nil
- elif variable.mandatory is False:
- choice = self.objectspace.choice(variable.xmlfiles)
- choice.name = None
- choice.type = 'nil'
- variable.values.append(choice)
- if has_variable:
- return None
- self.objectspace.valid_enums[variable.path] = {'type': variable.ori_type,
- 'values': values,
- 'xmlfiles': check.xmlfiles,
- }
- return values
-
- @staticmethod
- def check_valid_enum_value(variable,
- values,
- ) -> None:
- """check that values in valid_enum are valid
- """
- for value in variable.value:
- if value.name not in values:
- msg = _(f'value "{value.name}" of variable "{variable.name}" is not in list '
- f'of all expected values ({values})')
- raise DictConsistencyError(msg, 15, value.xmlfiles)
-
def check_change_warning(self):
"""convert level to "warnings_only"
"""
diff --git a/src/rougail/annotator/condition.py b/src/rougail/annotator/condition.py
index ebfacbb17..790771a42 100644
--- a/src/rougail/annotator/condition.py
+++ b/src/rougail/annotator/condition.py
@@ -67,7 +67,7 @@ class Annotator(TargetAnnotator, ParamAnnotator, Walk):
obj,
) -> None:
if obj.source.type == 'choice':
- return obj.source.ori_type
+ return None
return obj.source.type
def convert_auto_freeze(self):
diff --git a/src/rougail/annotator/param.py b/src/rougail/annotator/param.py
index f261505aa..c316bb967 100644
--- a/src/rougail/annotator/param.py
+++ b/src/rougail/annotator/param.py
@@ -132,16 +132,17 @@ class ParamAnnotator:
msg = _(f'parameter has incompatible type "{param.type}" '
f'with type "{variable_type}"')
raise DictConsistencyError(msg, 7, param.xmlfiles)
- try:
- option = CONVERT_OPTION[variable_type]
- param.text = option.get('func', str)(param.text)
- getattr(tiramisu, option['opttype'])('test',
- 'Object to valid value',
- param.text,
- **option.get('initkwargs', {}),
- )
- except ValueError as err:
- msg = _(f'unable to change type of value "{param.text}" '
- f'is not a valid "{variable_type}"')
- raise DictConsistencyError(msg, 13, param.xmlfiles) from err
+ if variable_type != 'choice':
+ try:
+ option = CONVERT_OPTION[variable_type]
+ param.text = option.get('func', str)(param.text)
+ getattr(tiramisu, option['opttype'])('test',
+ 'Object to valid value',
+ param.text,
+ **option.get('initkwargs', {}),
+ )
+ except ValueError as err:
+ msg = _(f'unable to change type of value "{param.text}" '
+ f'is not a valid "{variable_type}"')
+ raise DictConsistencyError(msg, 13, param.xmlfiles) from err
param.type = variable_type
diff --git a/src/rougail/annotator/value.py b/src/rougail/annotator/value.py
index 30a19246b..7a8289d1d 100644
--- a/src/rougail/annotator/value.py
+++ b/src/rougail/annotator/value.py
@@ -41,6 +41,7 @@ class Annotator(Walk): # pylint: disable=R0903
return
self.objectspace = objectspace
self.convert_value()
+ self.add_choice_nil()
def convert_value(self) -> None:
"""convert value
@@ -83,8 +84,22 @@ class Annotator(Walk): # pylint: disable=R0903
variable.default_multi = variable.value[0].name
else:
if len(variable.value) > 1:
- msg = _(f'the non multi variable "{variable.name}" cannot have '
+ msg = _(f'the none multi variable "{variable.name}" cannot have '
'more than one value')
raise DictConsistencyError(msg, 68, variable.xmlfiles)
variable.default = variable.value[0].name
del variable.value
+
+ def add_choice_nil(self) -> None:
+ for variable in self.get_variables():
+ if variable.type != 'choice':
+ continue
+ is_none = False
+ for choice in variable.choice:
+ if choice.type == 'nil':
+ is_none = True
+ if not variable.mandatory and not is_none:
+ choice = self.objectspace.choice(variable.xmlfiles)
+ choice.name = None
+ choice.type = 'nil'
+ variable.choice.append(choice)
diff --git a/src/rougail/annotator/variable.py b/src/rougail/annotator/variable.py
index 063924283..d6b4b6771 100644
--- a/src/rougail/annotator/variable.py
+++ b/src/rougail/annotator/variable.py
@@ -62,11 +62,6 @@ CONVERT_OPTION = {'number': dict(opttype="IntOption", func=int),
}
-FORCE_CHOICE = {'schedule': ['none', 'daily', 'weekly', 'monthly'],
- 'schedulemod': ['pre', 'post'],
- }
-
-
class Walk:
"""Walk to objectspace to find variable or family
"""
@@ -154,36 +149,49 @@ class Annotator(Walk): # pylint: disable=R0903
del variable.value[idx]
if not variable.value:
del variable.value
+ if hasattr(variable, 'choice'):
+ if variable.type != 'choice':
+ msg = _(f'choice for the variable "{variable.name}" not allowed with "{variable.type}" type')
+ raise DictConsistencyError(msg, 3, variable.xmlfiles)
+ values = []
+ choice_type = None
+ for choice in variable.choice:
+ if choice_type == 'variable':
+ msg = _(f'only one "variable" choice is allowed '
+ f'the variable "{variable.name}"')
+ raise DictConsistencyError(msg, 5, choice.xmlfiles)
+ if choice.type == 'nil':
+ choice.name = None
+ elif choice.type == 'variable':
+ choice.name = self.objectspace.paths.get_variable(choice.name)
+ if not choice.name.multi:
+ msg = _(f'only multi "variable" is allowed for a choice '
+ f'of variable "{variable.name}"')
+ raise DictConsistencyError(msg, 6, choice.xmlfiles)
+ else:
+ if not hasattr(choice, 'name'):
+ msg = _(f'choice for variable "{variable.name}" must have a value')
+ raise DictConsistencyError(msg, 14, choice.xmlfiles)
+ choice.name = CONVERT_OPTION.get(choice.type, {}).get('func', str)(choice.name)
+ if choice_type is None:
+ choice_type = choice.type
+ values.append(choice.name)
+ if choice_type not in ['function', 'variable'] and hasattr(variable, 'value'):
+ for value in variable.value:
+ if value.name not in values:
+ msg = _(f'value "{value.name}" of variable "{variable.name}" is not in list '
+ f'of all expected values ({values})')
+ raise DictConsistencyError(msg, 15, value.xmlfiles)
+ ref_choice = variable.choice[0]
+ self.objectspace.valid_enums[variable.path] = {'type': ref_choice.type,
+ 'values': values,
+ 'xmlfiles': ref_choice.xmlfiles,
+ }
+ elif variable.type == 'choice':
+ msg = _(f'choice is mandatory for the variable "{variable.name}" with choice type')
+ raise DictConsistencyError(msg, 4, variable.xmlfiles)
variable.doc = variable.description
del variable.description
- self._convert_valid_enum(variable)
-
- def _convert_valid_enum(self,
- variable,
- ):
- """some types are, in fact, choices
- convert this kind of variables into choice
- """
- if variable.type in FORCE_CHOICE:
- if not hasattr(self.objectspace.space, 'constraints'):
- xmlfiles = variable.xmlfiles
- self.objectspace.space.constraints = self.objectspace.constraints(xmlfiles)
- self.objectspace.space.constraints.namespace = variable.namespace
- if not hasattr(self.objectspace.space.constraints, 'check'):
- self.objectspace.space.constraints.check = []
- check = self.objectspace.check(variable.xmlfiles)
- check.name = 'valid_enum'
- target = self.objectspace.target(variable.xmlfiles)
- target.name = variable.path
- check.target = [target]
- check.namespace = variable.namespace
- check.param = []
- for value in FORCE_CHOICE[variable.type]:
- param = self.objectspace.param(variable.xmlfiles)
- param.text = value
- check.param.append(param)
- self.objectspace.space.constraints.check.append(check)
- variable.type = 'string'
def convert_test(self):
"""Convert variable tests value
diff --git a/src/rougail/data/rougail.dtd b/src/rougail/data/rougail.dtd
index 1e8c61711..213297368 100644
--- a/src/rougail/data/rougail.dtd
+++ b/src/rougail/data/rougail.dtd
@@ -87,9 +87,9 @@
-
+
-
+
@@ -101,6 +101,7 @@
+
@@ -108,6 +109,11 @@
+
+
+
+
+
diff --git a/src/rougail/objspace.py b/src/rougail/objspace.py
index a14ab4510..dcf8c0e14 100644
--- a/src/rougail/objspace.py
+++ b/src/rougail/objspace.py
@@ -40,7 +40,7 @@ FORCE_UNREDEFINABLES = ('value',)
# RougailObjSpace's elements that shall not be modify
UNREDEFINABLE = ('multi', 'type',)
# RougailObjSpace's elements that did not created automaticly
-FORCE_ELEMENTS = ('choice', 'property_', 'information')
+FORCE_ELEMENTS = ('property_', 'information')
# XML text are convert has name
FORCED_TEXT_ELTS_AS_NAME = ('choice', 'property', 'value',)
@@ -410,6 +410,8 @@ class RougailObjSpace:
"""Rougail object tree manipulations
"""
if child.tag == 'variable':
+ if child.attrib.get('remove_choice', False):
+ variableobj.choice = []
if child.attrib.get('remove_check', False):
self.remove_check(variableobj.name)
if child.attrib.get('remove_condition', False):
@@ -424,14 +426,15 @@ class RougailObjSpace:
def remove_check(self, name):
"""Remove a check with a specified target
"""
- remove_checks = []
- for idx, check in enumerate(self.space.constraints.check): # pylint: disable=E1101
- for target in check.target:
- if target.name == name:
- remove_checks.append(idx)
- remove_checks.sort(reverse=True)
- for idx in remove_checks:
- self.space.constraints.check.pop(idx) # pylint: disable=E1101
+ if hasattr(self.space.constraints, 'check'):
+ remove_checks = []
+ for idx, check in enumerate(self.space.constraints.check): # pylint: disable=E1101
+ for target in check.target:
+ if target.name == name:
+ remove_checks.append(idx)
+ remove_checks.sort(reverse=True)
+ for idx in remove_checks:
+ self.space.constraints.check.pop(idx) # pylint: disable=E1101
def remove_condition(self,
name: str,
diff --git a/src/rougail/tiramisureflector.py b/src/rougail/tiramisureflector.py
index 9a2debc54..3de84583c 100644
--- a/src/rougail/tiramisureflector.py
+++ b/src/rougail/tiramisureflector.py
@@ -243,7 +243,7 @@ class Common:
):
"""Populate variable parameters
"""
- if param.type in ['number', 'boolean', 'nil', 'string', 'port']:
+ if param.type in ['number', 'boolean', 'nil', 'string', 'port', 'choice']:
value = param.text
if param.type == 'string' and value is not None:
value = self.convert_str(value)
@@ -298,13 +298,13 @@ class Variable(Common):
):
if hasattr(self.elt, 'opt'):
keys['opt'] = self.elt.opt.reflector_object.get()
- if hasattr(self.elt, 'values'):
- values = self.elt.values
+ if hasattr(self.elt, 'choice'):
+ values = self.elt.choice
if values[0].type == 'variable':
value = values[0].name.reflector_object.get()
keys['values'] = f"Calculation(func.calc_value, Params((ParamOption({value}))))"
elif values[0].type == 'function':
- keys['values'] = self.calculation_value(self.elt.values[0], [])
+ keys['values'] = self.calculation_value(values[0], [])
else:
keys['values'] = str(tuple([val.name for val in values]))
if hasattr(self.elt, 'multi') and self.elt.multi:
diff --git a/src/rougail/update.py b/src/rougail/update.py
index b4f734888..7f90a8981 100644
--- a/src/rougail/update.py
+++ b/src/rougail/update.py
@@ -115,20 +115,105 @@ class RougailUpgrade:
variables = root.find('variables')
if variables is None:
return root
- constraints = root.find('constraints')
- if constraints is None:
- return root
- groups = []
- for constraint in constraints:
- if constraint.tag == 'group':
- constraints.remove(constraint)
- groups.append(constraint)
- if not groups:
- return root
paths = self._get_path_variables(variables,
namespace == self.rougailconfig['variable_namespace'],
namespace,
)
+ constraints = root.find('constraints')
+ # convert schedule and schedulemod
+ for variable in paths.values():
+ variable = variable['variable']
+ if variable.tag != 'variable':
+ continue
+ if 'type' in variable.attrib and variable.attrib['type'] in ['schedule', 'schedulemod']:
+ if variable.attrib['type'] == 'schedule':
+ choices = ('none', 'daily', 'weekly', 'monthly')
+ else:
+ choices = ('pre', 'post')
+ variable.attrib['type'] = 'choice'
+ has_value = False
+ for value in variable:
+ if value.tag == 'value':
+ has_value = True
+ break
+ for name in choices:
+ choice = SubElement(variable, 'choice')
+ choice.text = name
+ if not has_value:
+ value = SubElement(variable, 'value')
+ value.text = choices[0]
+ variable.attrib['mandatory'] = 'True'
+
+ # convert choice option
+ valid_enums = []
+ if constraints is not None:
+ for constraint in constraints:
+ if constraint.tag == 'check' and constraint.attrib['name'] == 'valid_enum':
+ constraints.remove(constraint)
+ valid_enums.append(constraint)
+ for valid_enum in valid_enums:
+ targets = []
+ for target in valid_enum:
+ if target.tag != 'target':
+ continue
+ if target.text in paths:
+ # not in paths if it's optional
+ # but not check it
+ targets.append(paths[target.text]['variable'])
+ params = []
+ function_param = None
+ for param in valid_enum:
+ if param.tag != 'param':
+ continue
+ if 'type' in param.attrib and param.attrib['type'] == 'function':
+ function_param = param.text
+ continue
+ params.append(param)
+ first_choice = None
+ for target in targets:
+ if function_param is not None:
+ function = SubElement(target, 'choice', type='function', name=function_param)
+ for param in params:
+ if function_param is not None:
+ function.append(param)
+ else:
+ choice = SubElement(target, 'choice')
+ if first_choice is None:
+ first_choice = choice
+ choice.text = param.text
+ if 'type' not in param.attrib and param.text is None:
+ choice_type = 'nil'
+ elif 'type' in param.attrib:
+ choice_type = param.attrib['type']
+ elif 'type' in target.attrib:
+ choice_type = target.attrib['type']
+ else:
+ choice_type = 'string'
+ choice.attrib['type'] = choice_type
+ has_value = False
+ for target in targets:
+ if 'remove_check' in target.attrib:
+ target.attrib['remove_choice'] = target.attrib['remove_check']
+ for target in targets:
+ for value in target:
+ if value.tag == 'value':
+ has_value = True
+ if 'type' in target.attrib:
+ value.attrib['type'] = target.attrib['type']
+ if first_choice is not None and not has_value:
+ value = SubElement(target, 'value')
+ value.attrib['type'] = first_choice.attrib['type']
+ value.text = first_choice.text
+ for target in targets:
+ if 'remove_choice' not in target.attrib or target.attrib['remove_choice'] != 'True':
+ target.attrib['type'] = 'choice'
+ # convert group to leadership
+ groups = []
+ if constraints is not None:
+ for constraint in constraints:
+ if constraint.tag == 'group':
+ constraints.remove(constraint)
+ groups.append(constraint)
for group in groups:
if group.attrib['leader'] in paths:
leader_obj = paths[group.attrib['leader']]
@@ -184,6 +269,8 @@ class RougailUpgrade:
subpath = path + '.'
else:
subpath = ''
+ if variable.tag not in ['variable', 'family']:
+ continue
subpath += variable.attrib['name']
if variable.tag == 'family':
self._get_path_variables(variable, is_variable_namespace, subpath, dico)
diff --git a/tests/dictionaries/10frozenifin_unknown_valid_enum_number/00-base.xml b/tests/dictionaries/10frozenifin_unknown_valid_enum_number/00-base.xml
index 94538cd45..0080c9530 100644
--- a/tests/dictionaries/10frozenifin_unknown_valid_enum_number/00-base.xml
+++ b/tests/dictionaries/10frozenifin_unknown_valid_enum_number/00-base.xml
@@ -7,17 +7,16 @@
-
+
+ 1
+ 2
+ 3
+ 1
+
-
- 1
- 2
- 3
- enumvar
-
4
test_variable
diff --git a/tests/dictionaries/10load_disabled_if_in_variable/00-base.xml b/tests/dictionaries/10load_disabled_if_in_variable/00-base.xml
index b08cdd2f2..c012eb433 100644
--- a/tests/dictionaries/10load_disabled_if_in_variable/00-base.xml
+++ b/tests/dictionaries/10load_disabled_if_in_variable/00-base.xml
@@ -2,8 +2,11 @@
-
- tous
+
+ tous
+ tous
+ authentifié
+ aucun
tous
@@ -14,12 +17,6 @@
-
- tous
- authentifié
- aucun
- condition
-
mode_conteneur_actif
mode_conteneur_actif2
diff --git a/tests/dictionaries/10load_disabled_if_in_variable2/00-base.xml b/tests/dictionaries/10load_disabled_if_in_variable2/00-base.xml
index c8aa9b883..7d10125bb 100644
--- a/tests/dictionaries/10load_disabled_if_in_variable2/00-base.xml
+++ b/tests/dictionaries/10load_disabled_if_in_variable2/00-base.xml
@@ -2,8 +2,11 @@
-
- tous
+
+ tous
+ tous
+ authentifié
+ aucun
aucun
@@ -14,12 +17,6 @@
-
- tous
- authentifié
- aucun
- condition
-
mode_conteneur_actif
mode_conteneur_actif2
diff --git a/tests/dictionaries/10load_frozenifin_multiparam/00-base.xml b/tests/dictionaries/10load_frozenifin_multiparam/00-base.xml
index b2f5efe21..d05dd85d1 100644
--- a/tests/dictionaries/10load_frozenifin_multiparam/00-base.xml
+++ b/tests/dictionaries/10load_frozenifin_multiparam/00-base.xml
@@ -2,8 +2,11 @@
-
- tous
+
+ tous
+ tous
+ authentifié
+ aucun
non
@@ -14,12 +17,6 @@
-
- tous
- authentifié
- aucun
- condition
-
tous
authentifié
diff --git a/tests/dictionaries/10load_frozenifin_noexist/00-base.xml b/tests/dictionaries/10load_frozenifin_noexist/00-base.xml
index 96b89e556..0abee30e3 100644
--- a/tests/dictionaries/10load_frozenifin_noexist/00-base.xml
+++ b/tests/dictionaries/10load_frozenifin_noexist/00-base.xml
@@ -2,8 +2,11 @@
-
- tous
+
+ tous
+ tous
+ authentifié
+ aucun
non
@@ -14,12 +17,6 @@
-
- tous
- authentifié
- aucun
- condition
-
oui
non
diff --git a/tests/dictionaries/10load_frozenifin_variable/00-base.xml b/tests/dictionaries/10load_frozenifin_variable/00-base.xml
index d2a3fac82..6075fc780 100644
--- a/tests/dictionaries/10load_frozenifin_variable/00-base.xml
+++ b/tests/dictionaries/10load_frozenifin_variable/00-base.xml
@@ -2,8 +2,11 @@
-
- tous
+
+ tous
+ tous
+ authentifié
+ aucun
tous
@@ -14,12 +17,6 @@
-
- tous
- authentifié
- aucun
- condition
-
mode_conteneur_actif
mode_conteneur_actif2
diff --git a/tests/dictionaries/10load_frozenifnotin_noexist/00-base.xml b/tests/dictionaries/10load_frozenifnotin_noexist/00-base.xml
index 778d5b34f..3d2d8f1cb 100644
--- a/tests/dictionaries/10load_frozenifnotin_noexist/00-base.xml
+++ b/tests/dictionaries/10load_frozenifnotin_noexist/00-base.xml
@@ -2,8 +2,11 @@
-
- tous
+
+ tous
+ tous
+ authentifié
+ aucun
non
@@ -14,12 +17,6 @@
-
- tous
- authentifié
- aucun
- condition
-
oui
non
diff --git a/tests/dictionaries/10load_mandatoryifnotin_noexist/00-base.xml b/tests/dictionaries/10load_mandatoryifnotin_noexist/00-base.xml
index 781f5e9af..4f6451f1b 100644
--- a/tests/dictionaries/10load_mandatoryifnotin_noexist/00-base.xml
+++ b/tests/dictionaries/10load_mandatoryifnotin_noexist/00-base.xml
@@ -2,8 +2,11 @@
-
- tous
+
+ tous
+ tous
+ authentifié
+ aucun
non
@@ -14,12 +17,6 @@
-
- tous
- authentifié
- aucun
- condition
-
oui
non
diff --git a/tests/dictionaries/10valid_enum_accent/00-base.xml b/tests/dictionaries/10valid_enum_accent/00-base.xml
index 3c5808bcc..906008046 100644
--- a/tests/dictionaries/10valid_enum_accent/00-base.xml
+++ b/tests/dictionaries/10valid_enum_accent/00-base.xml
@@ -7,18 +7,14 @@
-
- c
+
+ c
+ a
+ b
+ c
+ é
-
-
- a
- b
- c
- é
- enumvar
-
-
+
diff --git a/tests/dictionaries/10valid_enum_base/00-base.xml b/tests/dictionaries/10valid_enum_base/00-base.xml
index 7b48372f8..771bc0d5b 100644
--- a/tests/dictionaries/10valid_enum_base/00-base.xml
+++ b/tests/dictionaries/10valid_enum_base/00-base.xml
@@ -7,17 +7,13 @@
-
- c
+
+ c
+ a
+ b
+ c
-
-
- a
- b
- c
- enumvar
-
-
+
diff --git a/tests/dictionaries/10valid_enum_base_no_mandatory/00-base.xml b/tests/dictionaries/10valid_enum_base_no_mandatory/00-base.xml
index 7e7b61571..d700f9d26 100644
--- a/tests/dictionaries/10valid_enum_base_no_mandatory/00-base.xml
+++ b/tests/dictionaries/10valid_enum_base_no_mandatory/00-base.xml
@@ -7,17 +7,13 @@
-
+
c
+ a
+ b
+ c
-
-
- a
- b
- c
- enumvar
-
-
+
diff --git a/tests/dictionaries/10valid_enum_base_redefine/00-base.xml b/tests/dictionaries/10valid_enum_base_redefine/00-base.xml
index 8df938488..de0c9759c 100644
--- a/tests/dictionaries/10valid_enum_base_redefine/00-base.xml
+++ b/tests/dictionaries/10valid_enum_base_redefine/00-base.xml
@@ -7,26 +7,19 @@
-
- c
+
+ c
+ a
+ b
+ c
-
- c
+
+ c
+ a
+ b
+ c
-
-
- a
- b
- c
- enumvar
-
-
- a
- b
- c
- enumvar2
-
-
+
diff --git a/tests/dictionaries/10valid_enum_base_redefine/01-base.xml b/tests/dictionaries/10valid_enum_base_redefine/01-base.xml
index 9dc00d56c..bde446a7c 100644
--- a/tests/dictionaries/10valid_enum_base_redefine/01-base.xml
+++ b/tests/dictionaries/10valid_enum_base_redefine/01-base.xml
@@ -2,16 +2,12 @@
-
+
c
+ a
+ c
-
-
- a
- c
- enumvar
-
-
+
diff --git a/tests/dictionaries/10valid_enum_leader/00-base.xml b/tests/dictionaries/10valid_enum_leader/00-base.xml
index 55d2edd12..da1411852 100644
--- a/tests/dictionaries/10valid_enum_leader/00-base.xml
+++ b/tests/dictionaries/10valid_enum_leader/00-base.xml
@@ -7,17 +7,15 @@
-
+
+ a
+ b
+ c
+ a
+
-
-
- a
- b
- c
- follower1
-
-
+
diff --git a/tests/dictionaries/10valid_enum_mandatory/00-base.xml b/tests/dictionaries/10valid_enum_mandatory/00-base.xml
index b7e96ff02..aa320bfb6 100644
--- a/tests/dictionaries/10valid_enum_mandatory/00-base.xml
+++ b/tests/dictionaries/10valid_enum_mandatory/00-base.xml
@@ -8,15 +8,13 @@
-
+
+ a
+ b
+ c
+ a
+
-
-
- a
- b
- c
- enumvar
-
-
+
diff --git a/tests/dictionaries/10valid_enum_multi/00-base.xml b/tests/dictionaries/10valid_enum_multi/00-base.xml
index 54be44d11..85dae3589 100644
--- a/tests/dictionaries/10valid_enum_multi/00-base.xml
+++ b/tests/dictionaries/10valid_enum_multi/00-base.xml
@@ -5,15 +5,13 @@
non
-
+
+ a
+ b
+ c
+ a
+
-
-
- a
- b
- c
- multi
-
-
+
diff --git a/tests/dictionaries/10valid_enum_none/00-base.xml b/tests/dictionaries/10valid_enum_none/00-base.xml
index b010e1241..26c37a2ee 100644
--- a/tests/dictionaries/10valid_enum_none/00-base.xml
+++ b/tests/dictionaries/10valid_enum_none/00-base.xml
@@ -7,17 +7,13 @@
-
- b
+
+ b
+ a
+ b
+
-
-
- a
- b
-
- enumvar
-
-
+
diff --git a/tests/dictionaries/10valid_enum_none/tiramisu/base.py b/tests/dictionaries/10valid_enum_none/tiramisu/base.py
index 1625920db..f87aa2ab4 100644
--- a/tests/dictionaries/10valid_enum_none/tiramisu/base.py
+++ b/tests/dictionaries/10valid_enum_none/tiramisu/base.py
@@ -13,7 +13,7 @@ except:
from tiramisu import *
option_3 = StrOption(name="mode_conteneur_actif", doc="No change", default="non", properties=frozenset({"expert", "mandatory"}))
option_2 = OptionDescription(name="general", doc="general", children=[option_3], properties=frozenset({"expert"}))
-option_5 = ChoiceOption(name="enumvar", doc="multi", values=('a', 'b', '', None), default="b", properties=frozenset({"expert"}))
+option_5 = ChoiceOption(name="enumvar", doc="multi", values=('a', 'b', None), default="b", properties=frozenset({"expert"}))
option_5.impl_set_information('help', "bla bla bla")
option_4 = OptionDescription(name="enumfam", doc="enumfam", children=[option_5], properties=frozenset({"expert"}))
option_1 = OptionDescription(name="rougail", doc="rougail", children=[option_2, option_4])
diff --git a/tests/dictionaries/10valid_enum_number/00-base.xml b/tests/dictionaries/10valid_enum_number/00-base.xml
index 331b0df38..7c6b14638 100644
--- a/tests/dictionaries/10valid_enum_number/00-base.xml
+++ b/tests/dictionaries/10valid_enum_number/00-base.xml
@@ -7,15 +7,13 @@
-
+
+ 1
+ 2
+ 3
+ 1
+
-
-
- 1
- 2
- 3
- enumvar
-
-
+
diff --git a/tests/dictionaries/10valid_enum_numberdefault/00-base.xml b/tests/dictionaries/10valid_enum_numberdefault/00-base.xml
index 698f4d91e..76ac71389 100644
--- a/tests/dictionaries/10valid_enum_numberdefault/00-base.xml
+++ b/tests/dictionaries/10valid_enum_numberdefault/00-base.xml
@@ -7,17 +7,13 @@
-
- 3
+
+ 3
+ 1
+ 2
+ 3
-
-
- 1
- 2
- 3
- enumvar
-
-
+
diff --git a/tests/dictionaries/10valid_enum_param_empty/00-base.xml b/tests/dictionaries/10valid_enum_param_empty/00-base.xml
index bf3393de9..1d3299e5b 100644
--- a/tests/dictionaries/10valid_enum_param_empty/00-base.xml
+++ b/tests/dictionaries/10valid_enum_param_empty/00-base.xml
@@ -7,13 +7,11 @@
-
+
+
+
+
-
-
-
- enumvar
-
-
+
diff --git a/tests/dictionaries/10valid_enum_param_empty2/00-base.xml b/tests/dictionaries/10valid_enum_param_empty2/00-base.xml
index bf3393de9..1d3299e5b 100644
--- a/tests/dictionaries/10valid_enum_param_empty2/00-base.xml
+++ b/tests/dictionaries/10valid_enum_param_empty2/00-base.xml
@@ -7,13 +7,11 @@
-
+
+
+
+
-
-
-
- enumvar
-
-
+
diff --git a/tests/dictionaries/10valid_enum_quote/00-base.xml b/tests/dictionaries/10valid_enum_quote/00-base.xml
index c8502381a..1054c9a12 100644
--- a/tests/dictionaries/10valid_enum_quote/00-base.xml
+++ b/tests/dictionaries/10valid_enum_quote/00-base.xml
@@ -7,15 +7,13 @@
-
+
+ quote'
+ quote"
+ quote"'
+ quote'
+
-
-
- quote'
- quote"
- quote"'
- enumvar
-
-
+
diff --git a/tests/dictionaries/10valid_enum_value/00-base.xml b/tests/dictionaries/10valid_enum_value/00-base.xml
index 978e4842a..4454a23d3 100644
--- a/tests/dictionaries/10valid_enum_value/00-base.xml
+++ b/tests/dictionaries/10valid_enum_value/00-base.xml
@@ -2,17 +2,13 @@
-
- b
+
+ b
+ a
+ b
+ c
-
-
- a
- b
- c
- mode_conteneur_actif
-
-
+
diff --git a/tests/dictionaries/11disabledifnotin_filelist_notexist_validenum/00-base.xml b/tests/dictionaries/11disabledifnotin_filelist_notexist_validenum/00-base.xml
index 819aee0e9..74d48ad2a 100644
--- a/tests/dictionaries/11disabledifnotin_filelist_notexist_validenum/00-base.xml
+++ b/tests/dictionaries/11disabledifnotin_filelist_notexist_validenum/00-base.xml
@@ -7,8 +7,10 @@
-
- non
+
+ non
+ non
+ statique
non
@@ -19,11 +21,6 @@
-
- non
- statique
- condition
-
statique
afilllist
diff --git a/tests/dictionaries/11valid_enum_function/00-base.xml b/tests/dictionaries/11valid_enum_function/00-base.xml
index 52eea8d97..c7a623d62 100644
--- a/tests/dictionaries/11valid_enum_function/00-base.xml
+++ b/tests/dictionaries/11valid_enum_function/00-base.xml
@@ -2,17 +2,14 @@
-
- 9
+
+ 9
+
+ 0
+ 10
+
-
-
- trange
- 0
- 10
- var
-
-
+
diff --git a/tests/dictionaries/11valid_enum_variable/00-base.xml b/tests/dictionaries/11valid_enum_variable/00-base.xml
index ed7f6d894..c758f48a1 100644
--- a/tests/dictionaries/11valid_enum_variable/00-base.xml
+++ b/tests/dictionaries/11valid_enum_variable/00-base.xml
@@ -2,8 +2,9 @@
-
- a
+
+ a
+ var
a
@@ -12,10 +13,5 @@
-
-
- var
- mode_conteneur_actif
-
-
+
diff --git a/tests/dictionaries/40ifin_validenum/00-base.xml b/tests/dictionaries/40ifin_validenum/00-base.xml
index 3fc52d089..161e3a305 100644
--- a/tests/dictionaries/40ifin_validenum/00-base.xml
+++ b/tests/dictionaries/40ifin_validenum/00-base.xml
@@ -10,16 +10,15 @@
non
-
+
+ a
+ b
+ c
+ a
+
-
- a
- b
- c
- mode_conteneur_actif3
-
d
mode_conteneur_actif
diff --git a/tests/dictionaries/51redefine_remove_check/00-base.xml b/tests/dictionaries/51redefine_remove_check/00-base.xml
deleted file mode 100644
index 12f9652cc..000000000
--- a/tests/dictionaries/51redefine_remove_check/00-base.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-
-
-
-
-
-
-
-
-
- a
- b
- c
- mode_conteneur_actif
-
-
-
diff --git a/tests/dictionaries/51redefine_remove_check/01-base.xml b/tests/dictionaries/51redefine_remove_check/01-base.xml
deleted file mode 100644
index f092eaff2..000000000
--- a/tests/dictionaries/51redefine_remove_check/01-base.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
-
-
-
- non
-
-
-
-
diff --git a/tests/dictionaries/51redefine_remove_check/makedict/after.json b/tests/dictionaries/51redefine_remove_check/makedict/after.json
deleted file mode 100644
index 2e6c541d0..000000000
--- a/tests/dictionaries/51redefine_remove_check/makedict/after.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "rougail.general.mode_conteneur_actif": {
- "owner": "default",
- "value": "non"
- }
-}
diff --git a/tests/dictionaries/51redefine_remove_check/makedict/base.json b/tests/dictionaries/51redefine_remove_check/makedict/base.json
deleted file mode 100644
index 25056378d..000000000
--- a/tests/dictionaries/51redefine_remove_check/makedict/base.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "rougail.general.mode_conteneur_actif": "non"
-}
diff --git a/tests/dictionaries/51redefine_remove_check/makedict/before.json b/tests/dictionaries/51redefine_remove_check/makedict/before.json
deleted file mode 100644
index 2e6c541d0..000000000
--- a/tests/dictionaries/51redefine_remove_check/makedict/before.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "rougail.general.mode_conteneur_actif": {
- "owner": "default",
- "value": "non"
- }
-}
diff --git a/tests/dictionaries/51redefine_remove_check/tiramisu/base.py b/tests/dictionaries/51redefine_remove_check/tiramisu/base.py
deleted file mode 100644
index 9d70847b8..000000000
--- a/tests/dictionaries/51redefine_remove_check/tiramisu/base.py
+++ /dev/null
@@ -1,17 +0,0 @@
-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 *
-option_3 = StrOption(name="mode_conteneur_actif", doc="No change", default="non", properties=frozenset({"force_default_on_freeze", "frozen", "hidden", "mandatory", "normal"}))
-option_2 = OptionDescription(name="general", doc="general", children=[option_3], properties=frozenset({"normal"}))
-option_1 = OptionDescription(name="rougail", doc="rougail", children=[option_2])
-option_0 = OptionDescription(name="baseoption", doc="baseoption", children=[option_1])
diff --git a/tests/dictionaries/51redefine_validenum/00-base.xml b/tests/dictionaries/51redefine_validenum/00-base.xml
index 2e2720f25..6a2263a32 100644
--- a/tests/dictionaries/51redefine_validenum/00-base.xml
+++ b/tests/dictionaries/51redefine_validenum/00-base.xml
@@ -2,15 +2,13 @@
-
+
+ a
+ b
+ c
+ a
+
-
-
- a
- b
- c
- mode_conteneur_actif
-
-
+
diff --git a/tests/dictionaries/51redefine_validenum/01-redefine.xml b/tests/dictionaries/51redefine_validenum/01-redefine.xml
index c8610c322..3e7a7635b 100644
--- a/tests/dictionaries/51redefine_validenum/01-redefine.xml
+++ b/tests/dictionaries/51redefine_validenum/01-redefine.xml
@@ -2,14 +2,12 @@
-
+
+ a
+ b
+ a
+
-
-
- a
- b
- mode_conteneur_actif
-
-
+
diff --git a/tests/dictionaries/60extra_externalspacecondition/extra_dirs/extra/00-base.xml b/tests/dictionaries/60extra_externalspacecondition/extra_dirs/extra/00-base.xml
index bd53c1ba8..c6d59a192 100644
--- a/tests/dictionaries/60extra_externalspacecondition/extra_dirs/extra/00-base.xml
+++ b/tests/dictionaries/60extra_externalspacecondition/extra_dirs/extra/00-base.xml
@@ -5,9 +5,17 @@
Exportation de la base de ejabberd
-
-
+
+ none
+ daily
+ weekly
+ monthly
+ none
+
+
pre
+ pre
+ post
diff --git a/tests/dictionaries/60extra_help/extra_dirs/extra/00-base.xml b/tests/dictionaries/60extra_help/extra_dirs/extra/00-base.xml
index 7ed073cc0..e55bb2f1d 100644
--- a/tests/dictionaries/60extra_help/extra_dirs/extra/00-base.xml
+++ b/tests/dictionaries/60extra_help/extra_dirs/extra/00-base.xml
@@ -5,9 +5,17 @@
Exportation de la base de ejabberd
-
-
+
+ none
+ daily
+ weekly
+ monthly
+ none
+
+
pre
+ pre
+ post
diff --git a/tests/dictionaries/60extra_leadership_valid_enum/extra_dirs/extra/00-base.xml b/tests/dictionaries/60extra_leadership_valid_enum/extra_dirs/extra/00-base.xml
index 09f0e4b9a..df8ea73d4 100644
--- a/tests/dictionaries/60extra_leadership_valid_enum/extra_dirs/extra/00-base.xml
+++ b/tests/dictionaries/60extra_leadership_valid_enum/extra_dirs/extra/00-base.xml
@@ -6,17 +6,12 @@
test
-
+
+ pre
+ post
pre
-
-
- pre
- post
- extra.ejabberd.description.mode
-
-
diff --git a/tests/dictionaries/60extra_load/extra_dirs/extra/00-base.xml b/tests/dictionaries/60extra_load/extra_dirs/extra/00-base.xml
index 3b7369414..cd2c3dc4f 100644
--- a/tests/dictionaries/60extra_load/extra_dirs/extra/00-base.xml
+++ b/tests/dictionaries/60extra_load/extra_dirs/extra/00-base.xml
@@ -5,9 +5,17 @@
Exportation de la base de ejabberd
-
-
+
+ none
+ daily
+ weekly
+ monthly
+ none
+
+
pre
+ pre
+ post
diff --git a/tests/dictionaries/60extra_mandatory/extra_dirs/extra/00-base.xml b/tests/dictionaries/60extra_mandatory/extra_dirs/extra/00-base.xml
index 32b7a5e69..3a96f5b9b 100644
--- a/tests/dictionaries/60extra_mandatory/extra_dirs/extra/00-base.xml
+++ b/tests/dictionaries/60extra_mandatory/extra_dirs/extra/00-base.xml
@@ -5,8 +5,18 @@
Exportation de la base de ejabberd
-
-
+
+ none
+ daily
+ weekly
+ monthly
+ none
+
+
+ pre
+ post
+ pre
+
diff --git a/tests/dictionaries/60extra_name_family/extra_dirs/extra/00-base.xml b/tests/dictionaries/60extra_name_family/extra_dirs/extra/00-base.xml
index 3b7369414..cd2c3dc4f 100644
--- a/tests/dictionaries/60extra_name_family/extra_dirs/extra/00-base.xml
+++ b/tests/dictionaries/60extra_name_family/extra_dirs/extra/00-base.xml
@@ -5,9 +5,17 @@
Exportation de la base de ejabberd
-
-
+
+ none
+ daily
+ weekly
+ monthly
+ none
+
+
pre
+ pre
+ post
diff --git a/tests/dictionaries/60extra_no_condition/extra_dirs/extra/00-base.xml b/tests/dictionaries/60extra_no_condition/extra_dirs/extra/00-base.xml
index bd53c1ba8..c6d59a192 100644
--- a/tests/dictionaries/60extra_no_condition/extra_dirs/extra/00-base.xml
+++ b/tests/dictionaries/60extra_no_condition/extra_dirs/extra/00-base.xml
@@ -5,9 +5,17 @@
Exportation de la base de ejabberd
-
-
+
+ none
+ daily
+ weekly
+ monthly
+ none
+
+
pre
+ pre
+ post
diff --git a/tests/dictionaries/60extra_redefine/extra_dirs/extra/00-base.xml b/tests/dictionaries/60extra_redefine/extra_dirs/extra/00-base.xml
index 3b7369414..cd2c3dc4f 100644
--- a/tests/dictionaries/60extra_redefine/extra_dirs/extra/00-base.xml
+++ b/tests/dictionaries/60extra_redefine/extra_dirs/extra/00-base.xml
@@ -5,9 +5,17 @@
Exportation de la base de ejabberd
-
-
+
+ none
+ daily
+ weekly
+ monthly
+ none
+
+
pre
+ pre
+ post
diff --git a/tests/dictionaries/80extra_externalspaceauto/extra_dirs/extra/00-base.xml b/tests/dictionaries/80extra_externalspaceauto/extra_dirs/extra/00-base.xml
index 68a5efc46..826a52cb1 100644
--- a/tests/dictionaries/80extra_externalspaceauto/extra_dirs/extra/00-base.xml
+++ b/tests/dictionaries/80extra_externalspaceauto/extra_dirs/extra/00-base.xml
@@ -5,9 +5,17 @@
Exportation de la base de ejabberd
-
-
+
+ none
+ daily
+ weekly
+ monthly
+ none
+
+
pre
+ pre
+ post
diff --git a/tests/dictionaries/80extra_externalspacecondition2/extra_dirs/extra/00-base.xml b/tests/dictionaries/80extra_externalspacecondition2/extra_dirs/extra/00-base.xml
index 68a5efc46..826a52cb1 100644
--- a/tests/dictionaries/80extra_externalspacecondition2/extra_dirs/extra/00-base.xml
+++ b/tests/dictionaries/80extra_externalspacecondition2/extra_dirs/extra/00-base.xml
@@ -5,9 +5,17 @@
Exportation de la base de ejabberd
-
-
+
+ none
+ daily
+ weekly
+ monthly
+ none
+
+
pre
+ pre
+ post
diff --git a/tests/dictionaries/80extra_rougail/extra_dirs/rougail/00-base.xml b/tests/dictionaries/80extra_rougail/extra_dirs/rougail/00-base.xml
index 081e73b0a..86ba1dcc4 100644
--- a/tests/dictionaries/80extra_rougail/extra_dirs/rougail/00-base.xml
+++ b/tests/dictionaries/80extra_rougail/extra_dirs/rougail/00-base.xml
@@ -5,9 +5,17 @@
Exportation de la base de ejabberd
-
-
+
+ none
+ daily
+ weekly
+ monthly
+ none
+
+
pre
+ pre
+ post
diff --git a/tests/dictionaries/80extra_services/extra_dirs/services/00-base.xml b/tests/dictionaries/80extra_services/extra_dirs/services/00-base.xml
index 3b7369414..cd2c3dc4f 100644
--- a/tests/dictionaries/80extra_services/extra_dirs/services/00-base.xml
+++ b/tests/dictionaries/80extra_services/extra_dirs/services/00-base.xml
@@ -5,9 +5,17 @@
Exportation de la base de ejabberd
-
-
+
+ none
+ daily
+ weekly
+ monthly
+ none
+
+
pre
+ pre
+ post
diff --git a/tests/dictionaries/80frozenifin_unknown/00-base.xml b/tests/dictionaries/80frozenifin_unknown/00-base.xml
index 7e34ddd11..5e2ce3e51 100644
--- a/tests/dictionaries/80frozenifin_unknown/00-base.xml
+++ b/tests/dictionaries/80frozenifin_unknown/00-base.xml
@@ -7,17 +7,16 @@
-
+
+ 1
+ 2
+ 3
+ 1
+
-
- 1
- 2
- 3
- enumvar
-
4
test_variable
diff --git a/tests/dictionaries/80valid_enum_base_redefine/00-base.xml b/tests/dictionaries/80valid_enum_base_redefine/00-base.xml
deleted file mode 100644
index 3c65e8f03..000000000
--- a/tests/dictionaries/80valid_enum_base_redefine/00-base.xml
+++ /dev/null
@@ -1,32 +0,0 @@
-
-
-
-
-
- non
-
-
-
-
- c
-
-
- c
-
-
-
-
-
- a
- b
- c
- enumvar
-
-
- a
- b
- c
- enumvar
-
-
-
diff --git a/tests/dictionaries/80valid_enum_base_redefine/01-base.xml b/tests/dictionaries/80valid_enum_base_redefine/01-base.xml
deleted file mode 100644
index aae222288..000000000
--- a/tests/dictionaries/80valid_enum_base_redefine/01-base.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-
-
-
-
-
- c
-
-
-
-
-
- a
- c
- enumvar
-
-
-
diff --git a/tests/dictionaries/80valid_enum_multi_param/00-base.xml b/tests/dictionaries/80valid_enum_multi_param/00-base.xml
index 9cd2bbef0..60d9fb999 100644
--- a/tests/dictionaries/80valid_enum_multi_param/00-base.xml
+++ b/tests/dictionaries/80valid_enum_multi_param/00-base.xml
@@ -2,8 +2,10 @@
-
- a
+
+ a
+ var
+ d
a
@@ -12,11 +14,5 @@
-
-
- var
- d
- mode_conteneur_actif
-
-
+
diff --git a/tests/dictionaries/80valid_enum_multi_variable/00-base.xml b/tests/dictionaries/80valid_enum_multi_variable/00-base.xml
index 355aaeadc..27ae8038d 100644
--- a/tests/dictionaries/80valid_enum_multi_variable/00-base.xml
+++ b/tests/dictionaries/80valid_enum_multi_variable/00-base.xml
@@ -2,8 +2,10 @@
-
- a
+
+ a
+ var
+ var2
a
@@ -17,11 +19,5 @@
-
-
- var
- var2
- mode_conteneur_actif
-
-
+
diff --git a/tests/dictionaries/88valid_enum_not_number2/00-base.xml b/tests/dictionaries/80valid_enum_no_choice/00-base.xml
similarity index 60%
rename from tests/dictionaries/88valid_enum_not_number2/00-base.xml
rename to tests/dictionaries/80valid_enum_no_choice/00-base.xml
index 831505b11..d456318a0 100644
--- a/tests/dictionaries/88valid_enum_not_number2/00-base.xml
+++ b/tests/dictionaries/80valid_enum_no_choice/00-base.xml
@@ -7,15 +7,10 @@
-
- non
+
+ c
-
-
- 1
- enumvar
-
-
+
diff --git a/tests/dictionaries/51redefine_remove_check/__init__.py b/tests/dictionaries/80valid_enum_no_choice/__init__.py
similarity index 100%
rename from tests/dictionaries/51redefine_remove_check/__init__.py
rename to tests/dictionaries/80valid_enum_no_choice/__init__.py
diff --git a/tests/dictionaries/80valid_enum_no_param/errno_4 b/tests/dictionaries/80valid_enum_no_choice/errno_4
similarity index 100%
rename from tests/dictionaries/80valid_enum_no_param/errno_4
rename to tests/dictionaries/80valid_enum_no_choice/errno_4
diff --git a/tests/dictionaries/80valid_enum_none_multi_variable/00-base.xml b/tests/dictionaries/80valid_enum_none_multi_variable/00-base.xml
index 03e34285b..780dd77db 100644
--- a/tests/dictionaries/80valid_enum_none_multi_variable/00-base.xml
+++ b/tests/dictionaries/80valid_enum_none_multi_variable/00-base.xml
@@ -2,18 +2,14 @@
-
- a
+
+ a
+ var
a
-
-
- var
- mode_conteneur_actif
-
-
+
diff --git a/tests/dictionaries/80valid_enum_no_param/00-base.xml b/tests/dictionaries/80valid_enum_not_choice/00-base.xml
similarity index 77%
rename from tests/dictionaries/80valid_enum_no_param/00-base.xml
rename to tests/dictionaries/80valid_enum_not_choice/00-base.xml
index b8e7cc338..49820c225 100644
--- a/tests/dictionaries/80valid_enum_no_param/00-base.xml
+++ b/tests/dictionaries/80valid_enum_not_choice/00-base.xml
@@ -9,12 +9,11 @@
c
+ a
+ b
+ c
-
-
- enumvar
-
-
+
diff --git a/tests/dictionaries/80valid_enum_base_redefine/__init__.py b/tests/dictionaries/80valid_enum_not_choice/__init__.py
similarity index 100%
rename from tests/dictionaries/80valid_enum_base_redefine/__init__.py
rename to tests/dictionaries/80valid_enum_not_choice/__init__.py
diff --git a/tests/dictionaries/80valid_enum_base_redefine/errno_3 b/tests/dictionaries/80valid_enum_not_choice/errno_3
similarity index 100%
rename from tests/dictionaries/80valid_enum_base_redefine/errno_3
rename to tests/dictionaries/80valid_enum_not_choice/errno_3
diff --git a/tests/dictionaries/80valid_enum_number_without_value/00-base.xml b/tests/dictionaries/80valid_enum_number_without_value/00-base.xml
index 7dc7ad5ac..e6be9698d 100644
--- a/tests/dictionaries/80valid_enum_number_without_value/00-base.xml
+++ b/tests/dictionaries/80valid_enum_number_without_value/00-base.xml
@@ -7,13 +7,11 @@
-
+
+
+
+
-
-
-
- enumvar
-
-
+
diff --git a/tests/dictionaries/88valid_enum_variable_optional/errno_14 b/tests/dictionaries/80valid_enum_number_without_value/errno_14
similarity index 100%
rename from tests/dictionaries/88valid_enum_variable_optional/errno_14
rename to tests/dictionaries/80valid_enum_number_without_value/errno_14
diff --git a/tests/dictionaries/80valid_enum_number_without_value/errno_27 b/tests/dictionaries/80valid_enum_number_without_value/errno_27
deleted file mode 100644
index e69de29bb..000000000
diff --git a/tests/dictionaries/81extra_externalspace/extra_dirs/extra/00-base.xml b/tests/dictionaries/81extra_externalspace/extra_dirs/extra/00-base.xml
index 68a5efc46..826a52cb1 100644
--- a/tests/dictionaries/81extra_externalspace/extra_dirs/extra/00-base.xml
+++ b/tests/dictionaries/81extra_externalspace/extra_dirs/extra/00-base.xml
@@ -5,9 +5,17 @@
Exportation de la base de ejabberd
-
-
+
+ none
+ daily
+ weekly
+ monthly
+ none
+
+
pre
+ pre
+ post
diff --git a/tests/dictionaries/88valid_enum_numberdefaultstring/00-base.xml b/tests/dictionaries/88valid_enum_invalid_default/00-base.xml
similarity index 58%
rename from tests/dictionaries/88valid_enum_numberdefaultstring/00-base.xml
rename to tests/dictionaries/88valid_enum_invalid_default/00-base.xml
index 86f9fc0b2..c77fc88bf 100644
--- a/tests/dictionaries/88valid_enum_numberdefaultstring/00-base.xml
+++ b/tests/dictionaries/88valid_enum_invalid_default/00-base.xml
@@ -7,17 +7,13 @@
-
- a
+
+ a
+ 1
+ 2
+ 3
-
-
- 1
- 2
- 3
- enumvar
-
-
+
diff --git a/tests/dictionaries/80valid_enum_no_param/__init__.py b/tests/dictionaries/88valid_enum_invalid_default/__init__.py
similarity index 100%
rename from tests/dictionaries/80valid_enum_no_param/__init__.py
rename to tests/dictionaries/88valid_enum_invalid_default/__init__.py
diff --git a/tests/dictionaries/88valid_enum_numberdefaultstring/errno_15 b/tests/dictionaries/88valid_enum_invalid_default/errno_15
similarity index 100%
rename from tests/dictionaries/88valid_enum_numberdefaultstring/errno_15
rename to tests/dictionaries/88valid_enum_invalid_default/errno_15
diff --git a/tests/dictionaries/88valid_enum_not_number/00-base.xml b/tests/dictionaries/88valid_enum_not_number/00-base.xml
deleted file mode 100644
index fde7b5749..000000000
--- a/tests/dictionaries/88valid_enum_not_number/00-base.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-
-
-
-
-
- non
-
-
-
-
-
-
-
-
- a
- b
- c
- enumvar
-
-
-
diff --git a/tests/dictionaries/88valid_enum_not_number/__init__.py b/tests/dictionaries/88valid_enum_not_number/__init__.py
deleted file mode 100644
index e69de29bb..000000000
diff --git a/tests/dictionaries/88valid_enum_not_number/errno_13 b/tests/dictionaries/88valid_enum_not_number/errno_13
deleted file mode 100644
index e69de29bb..000000000
diff --git a/tests/dictionaries/88valid_enum_not_number2/__init__.py b/tests/dictionaries/88valid_enum_not_number2/__init__.py
deleted file mode 100644
index e69de29bb..000000000
diff --git a/tests/dictionaries/88valid_enum_not_number2/errno_7 b/tests/dictionaries/88valid_enum_not_number2/errno_7
deleted file mode 100644
index e69de29bb..000000000
diff --git a/tests/dictionaries/88valid_enum_not_number_variable/00-base.xml b/tests/dictionaries/88valid_enum_not_number_variable/00-base.xml
deleted file mode 100644
index ffa5c8c42..000000000
--- a/tests/dictionaries/88valid_enum_not_number_variable/00-base.xml
+++ /dev/null
@@ -1,15 +0,0 @@
-
-
-
-
-
-
-
-
-
-
- str
- enumvar
-
-
-
diff --git a/tests/dictionaries/88valid_enum_not_number_variable/__init__.py b/tests/dictionaries/88valid_enum_not_number_variable/__init__.py
deleted file mode 100644
index e69de29bb..000000000
diff --git a/tests/dictionaries/88valid_enum_not_number_variable/errno_26 b/tests/dictionaries/88valid_enum_not_number_variable/errno_26
deleted file mode 100644
index e69de29bb..000000000
diff --git a/tests/dictionaries/88valid_enum_numberdefaultstring/__init__.py b/tests/dictionaries/88valid_enum_numberdefaultstring/__init__.py
deleted file mode 100644
index e69de29bb..000000000
diff --git a/tests/dictionaries/88valid_enum_variable_optional/00-base.xml b/tests/dictionaries/88valid_enum_variable_optional/00-base.xml
deleted file mode 100644
index 36ae120a6..000000000
--- a/tests/dictionaries/88valid_enum_variable_optional/00-base.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-
-
-
-
-
- a
-
-
- a
- b
- c
-
-
-
-
-
- var
- mode_conteneur_actif
-
-
-
diff --git a/tests/dictionaries/88valid_enum_variable_optional/__init__.py b/tests/dictionaries/88valid_enum_variable_optional/__init__.py
deleted file mode 100644
index e69de29bb..000000000