validate_modules: fails with .id attribute not found (#73322)
* validate_modules: fails with .id attribute not found
This patch addresses a problem in the `found_try_except_import` test.
This module tries to identify lines like:
`HAS_FOO = True`
In this case, the target (`HAS_FOO`) is of type `ast.Name` and has a
`id` attribute which provide the name.
In my case, I've a line that set a module attribute`. In this case, the
target (`module.var`) has the type `ast.Attribute` and no `id`
attribute. The code trigger an `AttributeError` exception.
This patch ensures we compare a `ast.Name`.
* Update test/lib/ansible_test/_data/sanity/validate-modules/validate_modules/main.py
(cherry picked from commit 7cf80f50d1
)
This commit is contained in:
parent
6cde1cdf35
commit
985a395cd9
2 changed files with 5 additions and 0 deletions
|
@ -0,0 +1,3 @@
|
||||||
|
---
|
||||||
|
bugfixes:
|
||||||
|
- validate-modules - do not raise an ``AttributeError`` if a value is assigned to a module attribute in a try/except block.
|
|
@ -666,6 +666,8 @@ class ModuleValidator(Validator):
|
||||||
found_try_except_import = True
|
found_try_except_import = True
|
||||||
if isinstance(grandchild, ast.Assign):
|
if isinstance(grandchild, ast.Assign):
|
||||||
for target in grandchild.targets:
|
for target in grandchild.targets:
|
||||||
|
if not isinstance(target, ast.Name):
|
||||||
|
continue
|
||||||
if target.id.lower().startswith('has_'):
|
if target.id.lower().startswith('has_'):
|
||||||
found_has = True
|
found_has = True
|
||||||
if found_try_except_import and not found_has:
|
if found_try_except_import and not found_has:
|
||||||
|
|
Loading…
Reference in a new issue