diff --git a/tests/scripts/check-names.sh b/tests/scripts/check-names.sh new file mode 100755 index 000000000..bc8b6f6ff --- /dev/null +++ b/tests/scripts/check-names.sh @@ -0,0 +1,57 @@ +#!/bin/sh + +set -eu + +tests/scripts/list-macros.sh +tests/scripts/list-enum-consts.pl +tests/scripts/list-identifiers.sh +tests/scripts/list-symbols.sh + +FAIL=0 + +printf "Exported symbols declared in header: " +UNDECLARED=$( diff exported-symbols identifiers | sed -n -e 's/^< //p' ) +if [ "x$UNDECLARED" == "x" ]; then + 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 ) + 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 + +if [ "$FAIL" -eq 0 ]; then + rm macros actual-macros enum-consts identifiers exported-symbols + echo "PASSED" + exit 0 +else + echo "FAILED" + exit 1 +fi diff --git a/tests/scripts/list-enum-consts.pl b/tests/scripts/list-enum-consts.pl index bbb949016..c8e26366c 100755 --- a/tests/scripts/list-enum-consts.pl +++ b/tests/scripts/list-enum-consts.pl @@ -8,7 +8,7 @@ use open qw(:std utf8); -d 'include/mbedtls' or die "$0: must be run from root\n"; -@ARGV = ; +@ARGV = grep { ! /compat-1\.3\.h/ } ; my @consts; my $state = 'out'; diff --git a/tests/scripts/list-identifiers.sh b/tests/scripts/list-identifiers.sh index e144cd2e1..130d9d63f 100755 --- a/tests/scripts/list-identifiers.sh +++ b/tests/scripts/list-identifiers.sh @@ -7,7 +7,7 @@ if [ -d include/mbedtls ]; then :; else exit 1 fi -HEADERS=$( ls include/mbedtls/*.h | egrep -v 'bn_mul' ) +HEADERS=$( ls include/mbedtls/*.h | egrep -v 'compat-1\.3\.h|bn_mul' ) rm -f identifiers diff --git a/tests/scripts/list-macros.sh b/tests/scripts/list-macros.sh index 73859467c..3c84adba6 100755 --- a/tests/scripts/list-macros.sh +++ b/tests/scripts/list-macros.sh @@ -7,7 +7,7 @@ if [ -d include/mbedtls ]; then :; else exit 1 fi -HEADERS=$( ls include/mbedtls/*.h ) +HEADERS=$( ls include/mbedtls/*.h | egrep -v 'compat-1\.3\.h' ) sed -n -e 's/.*#define \([a-zA-Z0-9_]*\).*/\1/p' $HEADERS \ | egrep -v '^(asm|inline|EMIT|_CRT_SECURE_NO_DEPRECATE)$|^MULADDC_' \ diff --git a/tmp/analyze-names.sh b/tmp/analyze-names.sh deleted file mode 100755 index 36422ab54..000000000 --- a/tmp/analyze-names.sh +++ /dev/null @@ -1,51 +0,0 @@ -#!/bin/sh - -set -eu - -tmp/list-macros.sh -tmp/list-enum-consts.pl -tmp/list-identifiers.sh -tmp/list-symbols.sh - -UNDECLARED=$( diff exported-symbols identifiers | sed -n -e 's/^< //p' ) -if [ "x$UNDECLARED" == "x" ]; then - echo "All exported symbols are declared in headers: good" -else - echo "The following symbols are probably missing a 'static': $UNDECLARED" -fi - -for THING in macros identifiers enum-consts; do - echo '' - echo "=== $THING ===" - - NO_=$( grep -v _ $THING | tr '\n' ' ' ) - echo "Without underscore: $NO_" - - cut -f1 -d_ $THING | uniq -c | sort -nr > prefix-$THING - echo "By prefix: (10 most frequent, see prefix-$THING for full list)" - head -n 10 < prefix-$THING -done - -echo ''; echo "=== all public names ===" -sort -u macros identifiers enum-consts > public-names -wc -l public-names - - -NL=' -' -sed -n 's/POLARSSL_[A-Z0-9_]*/\'"$NL"'&\'"$NL"/gp \ - include/mbedtls/*.h tests/scripts/* scripts/* library/*.c configs/*.h \ - | grep POLARSSL | sort -u > _POLARSSL_XXX -diff public-names _POLARSSL_XXX | sed -n 's/^> //p' > extra-names -rm _POLARSSL_XXX - -echo 'polarssl_zeroize' >> extra-names - -wc -l extra-names - -for THING in public-names extra-names; do - if grep '[^A-Za-z0-9_]' $THING; then - echo "invalid character in $THING" >&2 - exit 1; - fi -done