diff --git a/src/rougail/annotator/constrainte.py b/src/rougail/annotator/constrainte.py
index df4d2c03..8e9e4d7c 100644
--- a/src/rougail/annotator/constrainte.py
+++ b/src/rougail/annotator/constrainte.py
@@ -126,7 +126,8 @@ class ConstrainteAnnotator:
xmlfiles = self.objectspace.display_xmlfiles(check.xmlfiles)
raise DictConsistencyError(_(f'valid_enum define in {xmlfiles} but already set in {old_xmlfiles} for "{check.target}", did you forget remove_check?'), 3)
if not hasattr(check, 'param'):
- raise DictConsistencyError(_(f'param is mandatory for a valid_enum of variable {check.target}'), 4)
+ xmlfiles = self.objectspace.display_xmlfiles(check.xmlfiles)
+ raise DictConsistencyError(_(f'param is mandatory for a valid_enum of variable "{check.target}" in {xmlfiles}'), 4)
variable = self.objectspace.paths.get_variable_obj(check.target)
values = self.load_params_in_valid_enum(check.param,
variable.name,
@@ -153,18 +154,22 @@ class ConstrainteAnnotator:
for param in params:
if param.type == 'variable':
if has_variable is not None:
- raise DictConsistencyError(_(f'only one "variable" parameter is allowed for valid_enum of variable {variable_name}'), 5)
+ xmlfiles = self.objectspace.display_xmlfiles(param.xmlfiles)
+ raise DictConsistencyError(_(f'only one "variable" parameter is allowed for valid_enum of variable "{variable_name}" in {xmlfiles}'), 5)
has_variable = True
variable = self.objectspace.paths.get_variable_obj(param.text)
if not variable.multi:
- raise DictConsistencyError(_(f'only multi "variable" parameter is allowed for valid_enum of variable {variable_name}'), 6)
+ xmlfiles = self.objectspace.display_xmlfiles(param.xmlfiles)
+ raise DictConsistencyError(_(f'only multi "variable" parameter is allowed for valid_enum of variable "{variable_name}" in {xmlfiles}'), 6)
values = param.text
else:
if has_variable:
- raise DictConsistencyError(_(f'only one "variable" parameter is allowed for valid_enum of variable {variable_name}'), 7)
+ xmlfiles = self.objectspace.display_xmlfiles(param.xmlfiles)
+ raise DictConsistencyError(_(f'only one parameter is allowed for valid_enum of variable "{variable_name}" in {xmlfiles}'), 7)
if not hasattr(param, 'text'):
if param.type == 'number':
- raise DictConsistencyError(_(f'value is mandatory for valid_enum of variable {variable_name}'), 8)
+ xmlfiles = self.objectspace.display_xmlfiles(param.xmlfiles)
+ raise DictConsistencyError(_(f'param type is number, so value is mandatory for valid_enum of variable "{variable_name}" in {xmlfiles}'), 8)
values.append(None)
else:
values.append(param.text)
diff --git a/tests/dictionaries/80valid_enum_multi_param/00-base.xml b/tests/dictionaries/80valid_enum_multi_param/00-base.xml
new file mode 100644
index 00000000..cc026b8e
--- /dev/null
+++ b/tests/dictionaries/80valid_enum_multi_param/00-base.xml
@@ -0,0 +1,23 @@
+
+
+
+
+
+ a
+
+
+ a
+ b
+ c
+
+
+
+
+
+ var
+ d
+
+
+
+
diff --git a/tests/dictionaries/80valid_enum_multi_param/__init__.py b/tests/dictionaries/80valid_enum_multi_param/__init__.py
new file mode 100644
index 00000000..e69de29b
diff --git a/tests/dictionaries/80valid_enum_multi_param/errno_7 b/tests/dictionaries/80valid_enum_multi_param/errno_7
new file mode 100644
index 00000000..e69de29b
diff --git a/tests/dictionaries/80valid_enum_multi_variable/00-base.xml b/tests/dictionaries/80valid_enum_multi_variable/00-base.xml
new file mode 100644
index 00000000..52d0748d
--- /dev/null
+++ b/tests/dictionaries/80valid_enum_multi_variable/00-base.xml
@@ -0,0 +1,28 @@
+
+
+
+
+
+ a
+
+
+ a
+ b
+ c
+
+
+ a
+ b
+ c
+
+
+
+
+
+ var
+ var2
+
+
+
+
diff --git a/tests/dictionaries/80valid_enum_multi_variable/__init__.py b/tests/dictionaries/80valid_enum_multi_variable/__init__.py
new file mode 100644
index 00000000..e69de29b
diff --git a/tests/dictionaries/80valid_enum_multi_variable/errno_5 b/tests/dictionaries/80valid_enum_multi_variable/errno_5
new file mode 100644
index 00000000..e69de29b
diff --git a/tests/dictionaries/80valid_enum_no_param/00-base.xml b/tests/dictionaries/80valid_enum_no_param/00-base.xml
new file mode 100644
index 00000000..1796ffd3
--- /dev/null
+++ b/tests/dictionaries/80valid_enum_no_param/00-base.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
+ non
+
+
+
+
+ c
+
+
+
+
+
+
+
+
+
+
diff --git a/tests/dictionaries/80valid_enum_no_param/__init__.py b/tests/dictionaries/80valid_enum_no_param/__init__.py
new file mode 100644
index 00000000..e69de29b
diff --git a/tests/dictionaries/80valid_enum_no_param/errno_4 b/tests/dictionaries/80valid_enum_no_param/errno_4
new file mode 100644
index 00000000..e69de29b
diff --git a/tests/dictionaries/80valid_enum_none_multi_variable/00-base.xml b/tests/dictionaries/80valid_enum_none_multi_variable/00-base.xml
new file mode 100644
index 00000000..aec6f36f
--- /dev/null
+++ b/tests/dictionaries/80valid_enum_none_multi_variable/00-base.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+ a
+
+
+ a
+
+
+
+
+
+ var
+
+
+
+
diff --git a/tests/dictionaries/80valid_enum_none_multi_variable/__init__.py b/tests/dictionaries/80valid_enum_none_multi_variable/__init__.py
new file mode 100644
index 00000000..e69de29b
diff --git a/tests/dictionaries/80valid_enum_none_multi_variable/errno_6 b/tests/dictionaries/80valid_enum_none_multi_variable/errno_6
new file mode 100644
index 00000000..e69de29b
diff --git a/tests/dictionaries/80valid_enum_number_without_value/00-base.xml b/tests/dictionaries/80valid_enum_number_without_value/00-base.xml
new file mode 100644
index 00000000..3986eae3
--- /dev/null
+++ b/tests/dictionaries/80valid_enum_number_without_value/00-base.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
+ non
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tests/dictionaries/80valid_enum_number_without_value/__init__.py b/tests/dictionaries/80valid_enum_number_without_value/__init__.py
new file mode 100644
index 00000000..e69de29b
diff --git a/tests/dictionaries/80valid_enum_number_without_value/errno_8 b/tests/dictionaries/80valid_enum_number_without_value/errno_8
new file mode 100644
index 00000000..e69de29b