mbedtls/tests/scripts/check-names.sh

116 lines
2.5 KiB
Bash
Raw Normal View History

2015-04-09 08:47:44 +00:00
#!/bin/sh
#
# This file is part of mbed TLS (https://tls.mbed.org)
#
2019-05-22 16:22:45 +00:00
# Copyright (c) 2015-2019, ARM Limited, All Rights Reserved
2015-04-09 08:47:44 +00:00
set -eu
2019-05-22 16:22:45 +00:00
if [ $# -ne 0 ] && [ "$1" = "--help" ]; then
cat <<EOF
$0 [-v]
This script confirms that the naming of all symbols and identifiers in mbed
TLS are consistent with the house style and are also self-consistent.
-v If the script fails unexpectedly, print a command trace.
EOF
exit
fi
if grep --version|head -n1|grep GNU >/dev/null; then :; else
echo "This script requires GNU grep.">&2
exit 1
fi
trace=
if [ $# -ne 0 ] && [ "$1" = "-v" ]; then
shift
trace='-x'
exec 2>check-names.err
trap 'echo "FAILED UNEXPECTEDLY, status=$?";
cat check-names.err' EXIT
set -x
fi
printf "Analysing source code...\n"
sh $trace tests/scripts/list-macros.sh
2015-04-09 08:47:44 +00:00
tests/scripts/list-enum-consts.pl
sh $trace tests/scripts/list-identifiers.sh
sh $trace tests/scripts/list-symbols.sh
2015-04-09 08:47:44 +00:00
FAIL=0
printf "\nExported symbols declared in header: "
2015-04-09 08:47:44 +00:00
UNDECLARED=$( diff exported-symbols identifiers | sed -n -e 's/^< //p' )
2015-08-04 15:15:13 +00:00
if [ "x$UNDECLARED" = "x" ]; then
2015-04-09 08:47:44 +00:00
echo "PASS"
else
echo "FAIL"
echo "$UNDECLARED"
FAIL=1
fi
diff macros identifiers | sed -n -e 's/< //p' > actual-macros
for THING in actual-macros enum-consts; do
printf "Names of $THING: "
test -r $THING
BAD=$( grep -v '^MBEDTLS_[0-9A-Z_]*[0-9A-Z]$' $THING || true )
2015-04-09 08:47:44 +00:00
if [ "x$BAD" = "x" ]; then
echo "PASS"
else
echo "FAIL"
echo "$BAD"
FAIL=1
fi
done
for THING in identifiers; do
printf "Names of $THING: "
test -r $THING
BAD=$( grep -v '^mbedtls_[0-9a-z_]*[0-9a-z]$' $THING || true )
if [ "x$BAD" = "x" ]; then
echo "PASS"
else
echo "FAIL"
echo "$BAD"
FAIL=1
fi
done
2015-04-09 10:20:53 +00:00
printf "Likely typos: "
sort -u actual-macros enum-consts > _caps
HEADERS=$( ls include/mbedtls/*.h crypto/include/mbedtls/*.h | egrep -v 'compat-1\.3\.h' )
2015-04-09 10:20:53 +00:00
NL='
'
sed -n 's/MBED..._[A-Z0-9_]*/\'"$NL"'&\'"$NL"/gp \
2015-04-09 10:20:53 +00:00
$HEADERS library/*.c \
| grep MBEDTLS | sort -u > _MBEDTLS_XXX
TYPOS=$( diff _caps _MBEDTLS_XXX | sed -n 's/^> //p' \
| egrep -v 'XXX|__|_$|^MBEDTLS_.*CONFIG_FILE$' || true )
2015-04-09 10:20:53 +00:00
rm _MBEDTLS_XXX _caps
2015-08-04 15:15:13 +00:00
if [ "x$TYPOS" = "x" ]; then
2015-04-09 10:20:53 +00:00
echo "PASS"
else
echo "FAIL"
echo "$TYPOS"
FAIL=1
fi
if [ -n "$trace" ]; then
set +x
trap - EXIT
rm check-names.err
fi
printf "\nOverall: "
2015-04-09 08:47:44 +00:00
if [ "$FAIL" -eq 0 ]; then
rm macros actual-macros enum-consts identifiers exported-symbols
echo "PASSED"
exit 0
else
echo "FAILED"
exit 1
fi