diff --git a/src/rougail/annotator/variable.py b/src/rougail/annotator/variable.py index b753485fb..1f622026c 100644 --- a/src/rougail/annotator/variable.py +++ b/src/rougail/annotator/variable.py @@ -167,8 +167,7 @@ class Annotator(Walk): # pylint: disable=R0903 self.objectspace.multis[variable.path] = True if variable.path in self.objectspace.leaders: if not self.objectspace.multis.get(variable.path, False): - msg = _(f'the variable "{variable.path}" in a leadership must be multi') - raise DictConsistencyError(msg, 32, variable.xmlfiles) + variable.multi = self.objectspace.multis[variable.path] = True family = self.objectspace.paths[variable.path.rsplit(".", 1)[0]] if variable.hidden: family.hidden = variable.hidden diff --git a/tests/dictionaries/80leadership_leader_not_multi/__init__.py b/tests/dictionaries/40_0leadership_leader_not_multi/__init__.py similarity index 100% rename from tests/dictionaries/80leadership_leader_not_multi/__init__.py rename to tests/dictionaries/40_0leadership_leader_not_multi/__init__.py diff --git a/tests/dictionaries/80leadership_leader_not_multi/dictionaries/rougail/00-base.yml b/tests/dictionaries/40_0leadership_leader_not_multi/dictionaries/rougail/00-base.yml similarity index 100% rename from tests/dictionaries/80leadership_leader_not_multi/dictionaries/rougail/00-base.yml rename to tests/dictionaries/40_0leadership_leader_not_multi/dictionaries/rougail/00-base.yml diff --git a/tests/dictionaries/40_0leadership_leader_not_multi/makedict/after.json b/tests/dictionaries/40_0leadership_leader_not_multi/makedict/after.json new file mode 100644 index 000000000..f7be8deb1 --- /dev/null +++ b/tests/dictionaries/40_0leadership_leader_not_multi/makedict/after.json @@ -0,0 +1,10 @@ +{ + "rougail.general.mode_conteneur_actif": { + "owner": "default", + "value": "non" + }, + "rougail.general1.leader.leader": { + "owner": "default", + "value": [] + } +} diff --git a/tests/dictionaries/40_0leadership_leader_not_multi/makedict/base.json b/tests/dictionaries/40_0leadership_leader_not_multi/makedict/base.json new file mode 100644 index 000000000..14aaf55f0 --- /dev/null +++ b/tests/dictionaries/40_0leadership_leader_not_multi/makedict/base.json @@ -0,0 +1,4 @@ +{ + "rougail.general.mode_conteneur_actif": "non", + "rougail.general1.leader.leader": [] +} diff --git a/tests/dictionaries/40_0leadership_leader_not_multi/makedict/before.json b/tests/dictionaries/40_0leadership_leader_not_multi/makedict/before.json new file mode 100644 index 000000000..f7be8deb1 --- /dev/null +++ b/tests/dictionaries/40_0leadership_leader_not_multi/makedict/before.json @@ -0,0 +1,10 @@ +{ + "rougail.general.mode_conteneur_actif": { + "owner": "default", + "value": "non" + }, + "rougail.general1.leader.leader": { + "owner": "default", + "value": [] + } +} diff --git a/tests/dictionaries/40_0leadership_leader_not_multi/makedict/mandatory.json b/tests/dictionaries/40_0leadership_leader_not_multi/makedict/mandatory.json new file mode 100644 index 000000000..d822a392c --- /dev/null +++ b/tests/dictionaries/40_0leadership_leader_not_multi/makedict/mandatory.json @@ -0,0 +1 @@ +["rougail.general1.leader.leader"] \ No newline at end of file diff --git a/tests/dictionaries/40_0leadership_leader_not_multi/tiramisu/base.py b/tests/dictionaries/40_0leadership_leader_not_multi/tiramisu/base.py new file mode 100644 index 000000000..ae410ef62 --- /dev/null +++ b/tests/dictionaries/40_0leadership_leader_not_multi/tiramisu/base.py @@ -0,0 +1,17 @@ +from tiramisu import * +from tiramisu.setting import ALLOWED_LEADER_PROPERTIES +from re import compile as re_compile +from rougail.tiramisu import func, dict_env, load_functions, ConvertDynOptionDescription +load_functions('tests/dictionaries/../eosfunc/test.py') +ALLOWED_LEADER_PROPERTIES.add("basic") +ALLOWED_LEADER_PROPERTIES.add("standard") +ALLOWED_LEADER_PROPERTIES.add("advanced") +option_3 = StrOption(name="mode_conteneur_actif", doc="No change", default="non", properties=frozenset({"mandatory", "standard"}), informations={'type': 'string'}) +optiondescription_2 = OptionDescription(name="general", doc="general", children=[option_3], properties=frozenset({"standard"})) +option_6 = StrOption(name="leader", doc="leader", multi=True, properties=frozenset({"basic", "mandatory", "notempty"}), informations={'type': 'string'}) +option_7 = StrOption(name="follower1", doc="follower1", multi=True, properties=frozenset({"basic", "mandatory"}), informations={'type': 'string'}) +option_8 = StrOption(name="follower2", doc="follower2", multi=True, properties=frozenset({"basic", "mandatory"}), informations={'type': 'string'}) +optiondescription_5 = Leadership(name="leader", doc="leader", children=[option_6, option_7, option_8], properties=frozenset({"basic"})) +optiondescription_4 = OptionDescription(name="general1", doc="general1", children=[optiondescription_5], properties=frozenset({"basic"})) +optiondescription_1 = OptionDescription(name="rougail", doc="Rougail", children=[optiondescription_2, optiondescription_4], properties=frozenset({"basic"})) +option_0 = OptionDescription(name="baseoption", doc="baseoption", children=[optiondescription_1]) diff --git a/tests/dictionaries/40_0leadership_leader_not_multi/tiramisu/multi.py b/tests/dictionaries/40_0leadership_leader_not_multi/tiramisu/multi.py new file mode 100644 index 000000000..9de96b81e --- /dev/null +++ b/tests/dictionaries/40_0leadership_leader_not_multi/tiramisu/multi.py @@ -0,0 +1,27 @@ +from tiramisu import * +from tiramisu.setting import ALLOWED_LEADER_PROPERTIES +from re import compile as re_compile +from rougail.tiramisu import func, dict_env, load_functions, ConvertDynOptionDescription +load_functions('tests/dictionaries/../eosfunc/test.py') +ALLOWED_LEADER_PROPERTIES.add("basic") +ALLOWED_LEADER_PROPERTIES.add("standard") +ALLOWED_LEADER_PROPERTIES.add("advanced") +option_4 = StrOption(name="mode_conteneur_actif", doc="No change", default="non", properties=frozenset({"mandatory", "standard"}), informations={'type': 'string'}) +optiondescription_3 = OptionDescription(name="general", doc="general", children=[option_4], properties=frozenset({"standard"})) +option_7 = StrOption(name="leader", doc="leader", multi=True, properties=frozenset({"basic", "mandatory", "notempty"}), informations={'type': 'string'}) +option_8 = StrOption(name="follower1", doc="follower1", multi=True, properties=frozenset({"basic", "mandatory"}), informations={'type': 'string'}) +option_9 = StrOption(name="follower2", doc="follower2", multi=True, properties=frozenset({"basic", "mandatory"}), informations={'type': 'string'}) +optiondescription_6 = Leadership(name="leader", doc="leader", children=[option_7, option_8, option_9], properties=frozenset({"basic"})) +optiondescription_5 = OptionDescription(name="general1", doc="general1", children=[optiondescription_6], properties=frozenset({"basic"})) +optiondescription_2 = OptionDescription(name="rougail", doc="Rougail", children=[optiondescription_3, optiondescription_5], properties=frozenset({"basic"})) +optiondescription_1 = OptionDescription(name="1", doc="1", children=[optiondescription_2], properties=frozenset({"basic"})) +option_13 = StrOption(name="mode_conteneur_actif", doc="No change", default="non", properties=frozenset({"mandatory", "standard"}), informations={'type': 'string'}) +optiondescription_12 = OptionDescription(name="general", doc="general", children=[option_13], properties=frozenset({"standard"})) +option_16 = StrOption(name="leader", doc="leader", multi=True, properties=frozenset({"basic", "mandatory", "notempty"}), informations={'type': 'string'}) +option_17 = StrOption(name="follower1", doc="follower1", multi=True, properties=frozenset({"basic", "mandatory"}), informations={'type': 'string'}) +option_18 = StrOption(name="follower2", doc="follower2", multi=True, properties=frozenset({"basic", "mandatory"}), informations={'type': 'string'}) +optiondescription_15 = Leadership(name="leader", doc="leader", children=[option_16, option_17, option_18], properties=frozenset({"basic"})) +optiondescription_14 = OptionDescription(name="general1", doc="general1", children=[optiondescription_15], properties=frozenset({"basic"})) +optiondescription_11 = OptionDescription(name="rougail", doc="Rougail", children=[optiondescription_12, optiondescription_14], properties=frozenset({"basic"})) +optiondescription_10 = OptionDescription(name="2", doc="2", children=[optiondescription_11], properties=frozenset({"basic"})) +option_0 = OptionDescription(name="baseoption", doc="baseoption", children=[optiondescription_1, optiondescription_10]) diff --git a/tests/dictionaries/40_0leadership_leader_not_multi/tiramisu/no_namespace.py b/tests/dictionaries/40_0leadership_leader_not_multi/tiramisu/no_namespace.py new file mode 100644 index 000000000..7db034ef0 --- /dev/null +++ b/tests/dictionaries/40_0leadership_leader_not_multi/tiramisu/no_namespace.py @@ -0,0 +1,16 @@ +from tiramisu import * +from tiramisu.setting import ALLOWED_LEADER_PROPERTIES +from re import compile as re_compile +from rougail.tiramisu import func, dict_env, load_functions, ConvertDynOptionDescription +load_functions('tests/dictionaries/../eosfunc/test.py') +ALLOWED_LEADER_PROPERTIES.add("basic") +ALLOWED_LEADER_PROPERTIES.add("standard") +ALLOWED_LEADER_PROPERTIES.add("advanced") +option_2 = StrOption(name="mode_conteneur_actif", doc="No change", default="non", properties=frozenset({"mandatory", "standard"}), informations={'type': 'string'}) +optiondescription_1 = OptionDescription(name="general", doc="general", children=[option_2], properties=frozenset({"standard"})) +option_5 = StrOption(name="leader", doc="leader", multi=True, properties=frozenset({"basic", "mandatory", "notempty"}), informations={'type': 'string'}) +option_6 = StrOption(name="follower1", doc="follower1", multi=True, properties=frozenset({"basic", "mandatory"}), informations={'type': 'string'}) +option_7 = StrOption(name="follower2", doc="follower2", multi=True, properties=frozenset({"basic", "mandatory"}), informations={'type': 'string'}) +optiondescription_4 = Leadership(name="leader", doc="leader", children=[option_5, option_6, option_7], properties=frozenset({"basic"})) +optiondescription_3 = OptionDescription(name="general1", doc="general1", children=[optiondescription_4], properties=frozenset({"basic"})) +option_0 = OptionDescription(name="baseoption", doc="baseoption", children=[optiondescription_1, optiondescription_3]) diff --git a/tests/dictionaries/80leadership_leader_not_multi/errno_32 b/tests/dictionaries/80leadership_leader_not_multi/errno_32 deleted file mode 100644 index e69de29bb..000000000