From 6d571d8cac3e3e263ba70f9674780b2f4b1a0082 Mon Sep 17 00:00:00 2001 From: Emmanuel Garette Date: Mon, 15 Feb 2021 18:52:12 +0100 Subject: [PATCH] mandatory_if_in only for variables --- src/rougail/annotator/target.py | 5 ++++- src/rougail/data/rougail.dtd | 2 +- .../80load_mandatoryifin_family/00-base.xml | 20 +++++++++++++++++++ .../80load_mandatoryifin_family/__init__.py | 0 .../80load_mandatoryifin_family/errno_51 | 0 5 files changed, 25 insertions(+), 2 deletions(-) create mode 100644 tests/dictionaries/80load_mandatoryifin_family/00-base.xml create mode 100644 tests/dictionaries/80load_mandatoryifin_family/__init__.py create mode 100644 tests/dictionaries/80load_mandatoryifin_family/errno_51 diff --git a/src/rougail/annotator/target.py b/src/rougail/annotator/target.py index 2efb24ad..e75a19d0 100644 --- a/src/rougail/annotator/target.py +++ b/src/rougail/annotator/target.py @@ -62,12 +62,15 @@ class TargetAnnotator: f'is not allowed') raise DictConsistencyError(msg, 8, obj.xmlfiles) if target.type == 'family': + if obj.name not in ['disabled_if_in', 'disabled_if_not_in', "hidden_if_in", "hidden_if_not_in"]: + msg = _(f'target "{target.type}" not allow with "{obj.name}"') + raise DictConsistencyError(msg, 51, target.xmlfiles) target.name = self.objectspace.paths.get_family(target.name, obj.namespace, ) elif target.type.endswith('list') and \ obj.name not in ['disabled_if_in', 'disabled_if_not_in']: - msg = _(f'target "{target.type}" not allow') + msg = _(f'target "{target.type}" not allow with "{obj.name}"') raise DictConsistencyError(msg, 10, target.xmlfiles) except DictConsistencyError as err: if err.errno != 42: diff --git a/src/rougail/data/rougail.dtd b/src/rougail/data/rougail.dtd index d5f6fc39..787d3b3c 100644 --- a/src/rougail/data/rougail.dtd +++ b/src/rougail/data/rougail.dtd @@ -132,7 +132,7 @@ - + diff --git a/tests/dictionaries/80load_mandatoryifin_family/00-base.xml b/tests/dictionaries/80load_mandatoryifin_family/00-base.xml new file mode 100644 index 00000000..1a6182fb --- /dev/null +++ b/tests/dictionaries/80load_mandatoryifin_family/00-base.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + oui + general2 + + + + diff --git a/tests/dictionaries/80load_mandatoryifin_family/__init__.py b/tests/dictionaries/80load_mandatoryifin_family/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/tests/dictionaries/80load_mandatoryifin_family/errno_51 b/tests/dictionaries/80load_mandatoryifin_family/errno_51 new file mode 100644 index 00000000..e69de29b