Test reorganization and cleanup. (#18270)

- Correct directory name in test/README.md
- Move code-smell tests to test/sanity/code-smell
- Update code-smell.sh to use new script paths
- Add test/integration/target-prefixes.win for ansible-test
- Move module unit tests to match module directory layout
This commit is contained in:
Matt Clay 2016-10-31 12:53:11 -07:00 committed by GitHub
commit 71819c0a60
15 changed files with 7 additions and 6 deletions

View file

@ -0,0 +1,52 @@
#!/bin/sh
metaclass1=$(find ./bin -type f -exec grep -HL '__metaclass__ = type' \{\} \; )
future1=$(find ./bin -type f -exec grep -HL 'from __future__ import (absolute_import, division, print_function)' \{\} \;)
metaclass2=$(find ./lib/ansible -path ./lib/ansible/modules/core -prune \
-o -path ./lib/ansible/modules/extras -prune \
-o -path ./lib/ansible/module_utils -prune \
-o -path ./lib/ansible/compat/six/_six.py -prune \
-o -path ./lib/ansible/utils/module_docs_fragments -prune \
-o -name '*.py' -exec grep -HL '__metaclass__ = type' \{\} \;)
future2=$(find ./lib/ansible -path ./lib/ansible/modules/core -prune \
-o -path ./lib/ansible/modules/extras -prune \
-o -path ./lib/ansible/module_utils -prune \
-o -path ./lib/ansible/compat/six/_six.py -prune \
-o -path ./lib/ansible/utils/module_docs_fragments -prune \
-o -name '*.py' -exec grep -HL 'from __future__ import (absolute_import, division, print_function)' \{\} \;)
### TODO:
### - contrib/
### - module_utils that are py2.6+
if test -n "$metaclass1" -o -n "$metaclass2" ; then
printf "\n== Missing __metaclass__ = type ==\n"
fi
if test -n "$metaclass1" ; then
printf "$metaclass1\n"
fi
if test -n "$metaclass2" ; then
printf "$metaclass2\n"
fi
if test -n "$future1" -o -n "$future2" ; then
printf "\n== Missing from __future__ import (absolute_import, division, print_function) ==\n"
fi
if test -n "$future1" ; then
printf "$future1\n"
fi
if test -n "$future2" ; then
printf "$future2\n"
fi
if test -n "$future1$future2$metaclass1$metaclass2" ; then
failures=$(printf "$future1$future2$metaclass1$metaclass2"| wc -l)
failures=$(expr $failures + 2)
exit $failures
fi
exit 0

View file

@ -0,0 +1,18 @@
#!/bin/sh
#
# Test that we do not access private attributes of other objects.
#
# * private attributes of ourself are okay: self._private.
# * Private attributes of other objects are not: self.other._private
#
# Currently the code has many places where we're violating this test so we need
# to clean up the code before we can enable this. Maybe we'll need to
# selectively blacklist modules so that we can work on this a piece at a time.
#
# Also need to implement whitelist for certain things like bundled libraries
# that violate this.
#
# 23-10-2015: Count was 508 lines
grep -Pri '(?<!self)\._(?!_)' $1|grep -v modules

View file

@ -0,0 +1,16 @@
#!/bin/sh
BASEDIR=${1-"."}
# Not entirely correct but
# * basestring is still present and harmless in comments
# * basestring is also currently present in modules. Porting of modules is more
# of an Ansible 2.3 or greater goal.
BASESTRING_USERS=$(grep -r basestring $BASEDIR |grep isinstance| grep -v lib/ansible/compat/six/_six.py|grep -v lib/ansible/module_utils/six.py|grep -v lib/ansible/modules/core|grep -v lib/ansible/modules/extras)
if test -n "$BASESTRING_USERS" ; then
printf "$BASESTRING_USERS"
exit 1
else
exit 0
fi

View file

@ -0,0 +1,13 @@
#!/bin/sh
BASEDIR=${1-"."}
URLLIB_USERS=$(find "$BASEDIR" -name '*.py' -exec grep -H urlopen \{\} \;)
URLLIB_USERS=$(echo "$URLLIB_USERS" | sed '/\(\n\|lib\/ansible\/module_utils\/urls.py\|lib\/ansible\/module_utils\/six.py\|lib\/ansible\/compat\/six\/_six.py\|.tox\)/d')
URLLIB_USERS=$(echo "$URLLIB_USERS" | sed '/^[^:]\+:#/d')
if test -n "$URLLIB_USERS" ; then
printf "$URLLIB_USERS"
exit 1
else
exit 0
fi

View file

@ -0,0 +1,10 @@
#!/bin/sh
BASEDIR=${1-"lib/ansible"}
cd "$BASEDIR"
grep -r FieldAttribute . |grep 'default' | grep 'required'
if test $? -eq 0 ; then
exit 1
fi
exit 0

View file

@ -0,0 +1,17 @@
#!/bin/sh
# Do we want to check dynamic inventory, bin, etc?
BASEDIR=${1-"lib"}
# REGEX of individual files where the import of six is not a problem
# digital_ocean is checking for six because dopy doesn't specify the
# requirement on six so it needs to try importing six to give the correct error
# message
WHITELIST='(lib/ansible/modules/core/cloud/digital_ocean/digital_ocean.py)'
SIX_USERS=$(find "$BASEDIR" -name '*.py' -exec grep -wH six \{\} \;|grep import |grep -v ansible.compat| grep -v ansible.module_utils.six| egrep -v "^$WHITELIST:")
if test -n "$SIX_USERS" ; then
printf "$SIX_USERS"
exit 1
else
exit 0
fi