From 17541e22a3a97a74b4ffc30d7c61183f421a7ace Mon Sep 17 00:00:00 2001 From: Rusty Russell Date: Fri, 6 Sep 2019 14:11:05 +0930 Subject: [PATCH] update-mocks: allow a function to specify that mock should not abort. We're going to add memleak_add_helper_, and we want the mock to be a noop, not an abort. Signed-off-by: Rusty Russell --- tools/mockup.sh | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/tools/mockup.sh b/tools/mockup.sh index ef66fa0de..b48686536 100755 --- a/tools/mockup.sh +++ b/tools/mockup.sh @@ -19,22 +19,27 @@ for SYMBOL; do # If there are multiple declarations, pick first (eg. common/memleak.h # has notleak_ as a declaration, and then an inline). WHERE=$(grep -nH "^[a-zA-Z0-9_ (),]* [*]*$SYMBOL(" ./*/*.h | head -n1) - if [ x"$WHERE" != x ]; then - # \n on RHS is a GNU extension, and we want to work on FreeBSD - # shellcheck disable=SC1004 - STUB='\ -{ fprintf(stderr, "'$SYMBOL' called!\\n"); abort(); }' - else + if [ x"$WHERE" = x ]; then echo "/* Could not find declaration for $SYMBOL */" continue fi - echo "/* Generated stub for $SYMBOL */" FILE=${WHERE%%:*} FILE_AND_LINE=${WHERE%:*} LINE=${FILE_AND_LINE#*:} END=$(tail -n "+${LINE}" < "$FILE" | grep -n ';$'); NUM=${END%%:*} + if grep -q "$SYMBOL.*mock empty" "$FILE"; then + STUB="{ }" + else + # \n on RHS is a GNU extension, and we want to work on FreeBSD + # shellcheck disable=SC1004 + STUB='\ +{ fprintf(stderr, "'$SYMBOL' called!\\n"); abort(); }' + fi + + echo "/* Generated stub for $SYMBOL */" + tail -n "+${LINE}" < "$FILE" | head -n "$NUM" | sed 's/^extern *//' | sed 's/PRINTF_FMT([^)]*)//' | sed 's/NON_NULL_ARGS([^)]*)//' | sed 's/NO_NULL_ARGS//g' | sed 's/NORETURN//g' | sed 's/LAST_ARG_NULL//g' | sed 's/WARN_UNUSED_RESULT//g' | sed 's/,/ UNNEEDED,/g' | sed 's/\([a-z0-9A-Z*_]* [a-z0-9A-Z*_]*\));/\1 UNNEEDED);/' | sed "s/;\$/$STUB/" | sed 's/\s*$//' done