summaryrefslogtreecommitdiff
path: root/test/lib/ansible_test
diff options
context:
space:
mode:
authorMatt Clay <matt@mystile.com>2019-08-09 17:56:44 -0700
committerMatt Clay <matt@mystile.com>2019-08-09 18:49:57 -0700
commit473bd6bb0a72ee6feeac8830c05f293c10e02bad (patch)
tree7149b95eb731a0db9878d7033ebe8e65dc37c140 /test/lib/ansible_test
parent3fac6a0adbaafddbbd6caaf000ca2610962aeb2a (diff)
downloadansible-473bd6bb0a72ee6feeac8830c05f293c10e02bad.tar.gz
Relax boilerplate sanity tests.
This will avoid requiring boilerplate for documentation only python files.
Diffstat (limited to 'test/lib/ansible_test')
-rwxr-xr-xtest/lib/ansible_test/_data/sanity/code-smell/future-import-boilerplate.py17
-rwxr-xr-xtest/lib/ansible_test/_data/sanity/code-smell/metaclass-boilerplate.py16
2 files changed, 33 insertions, 0 deletions
diff --git a/test/lib/ansible_test/_data/sanity/code-smell/future-import-boilerplate.py b/test/lib/ansible_test/_data/sanity/code-smell/future-import-boilerplate.py
index 373fd4d6f2..81081eed7b 100755
--- a/test/lib/ansible_test/_data/sanity/code-smell/future-import-boilerplate.py
+++ b/test/lib/ansible_test/_data/sanity/code-smell/future-import-boilerplate.py
@@ -2,6 +2,7 @@
from __future__ import (absolute_import, division, print_function)
__metaclass__ = type
+import ast
import sys
@@ -22,6 +23,22 @@ def main():
break
if missing:
+ with open(path) as file:
+ contents = file.read()
+
+ # noinspection PyBroadException
+ try:
+ node = ast.parse(contents)
+
+ # files consisting of only assignments have no need for future import boilerplate
+ # the only exception would be division during assignment, but we'll overlook that for simplicity
+ # the most likely case is that of a documentation only python file
+ if all(isinstance(statement, ast.Assign) for statement in node.body):
+ missing = False
+ except Exception: # pylint: disable=broad-except
+ pass # the compile sanity test will report this error
+
+ if missing:
print('%s: missing: from __future__ import (absolute_import, division, print_function)' % path)
diff --git a/test/lib/ansible_test/_data/sanity/code-smell/metaclass-boilerplate.py b/test/lib/ansible_test/_data/sanity/code-smell/metaclass-boilerplate.py
index cc211a3617..28d06f363b 100755
--- a/test/lib/ansible_test/_data/sanity/code-smell/metaclass-boilerplate.py
+++ b/test/lib/ansible_test/_data/sanity/code-smell/metaclass-boilerplate.py
@@ -2,6 +2,7 @@
from __future__ import (absolute_import, division, print_function)
__metaclass__ = type
+import ast
import sys
@@ -21,6 +22,21 @@ def main():
break
if missing:
+ with open(path) as file:
+ contents = file.read()
+
+ # noinspection PyBroadException
+ try:
+ node = ast.parse(contents)
+
+ # files consisting of only assignments have no need for metaclass boilerplate
+ # the most likely case is that of a documentation only python file
+ if all(isinstance(statement, ast.Assign) for statement in node.body):
+ missing = False
+ except Exception: # pylint: disable=broad-except
+ pass # the compile sanity test will report this error
+
+ if missing:
print('%s: missing: __metaclass__ = type' % path)