mirror of
https://github.com/bitcoin/bitcoin.git
synced 2026-05-05 11:28:49 +02:00
build: Add option --enable-danger-fuzz-link-all
This commit is contained in:
@@ -10,6 +10,7 @@ endif
|
||||
|
||||
TEST_SRCDIR = test
|
||||
TEST_BINARY=test/test_bitcoin$(EXEEXT)
|
||||
FUZZ_BINARY=test/fuzz/fuzz$(EXEEXT)
|
||||
|
||||
JSON_TEST_FILES = \
|
||||
test/data/script_tests.json \
|
||||
@@ -320,6 +321,11 @@ if EMBEDDED_UNIVALUE
|
||||
$(AM_V_at)$(MAKE) $(AM_MAKEFLAGS) -C univalue check
|
||||
endif
|
||||
|
||||
if ENABLE_FUZZ_LINK_ALL
|
||||
all-local: $(FUZZ_BINARY)
|
||||
bash ./test/fuzz/danger_link_all.sh
|
||||
endif
|
||||
|
||||
%.cpp.test: %.cpp
|
||||
@echo Running tests: `cat $< | grep -E "(BOOST_FIXTURE_TEST_SUITE\\(|BOOST_AUTO_TEST_SUITE\\()" | cut -d '(' -f 2 | cut -d ',' -f 1 | cut -d ')' -f 1` from $<
|
||||
$(AM_V_at)$(TEST_BINARY) --catch_system_errors=no -l test_suite -t "`cat $< | grep -E "(BOOST_FIXTURE_TEST_SUITE\\(|BOOST_AUTO_TEST_SUITE\\()" | cut -d '(' -f 2 | cut -d ',' -f 1 | cut -d ')' -f 1`" -- DEBUG_LOG_OUT > $<.log 2>&1 || (cat $<.log && false)
|
||||
|
||||
28
src/test/fuzz/danger_link_all.sh
Executable file
28
src/test/fuzz/danger_link_all.sh
Executable file
@@ -0,0 +1,28 @@
|
||||
#!/usr/bin/env bash
|
||||
# Copyright (c) 2020 The Bitcoin Core developers
|
||||
# Distributed under the MIT software license, see the accompanying
|
||||
# file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
||||
|
||||
export LC_ALL=C.UTF-8
|
||||
|
||||
set -e
|
||||
|
||||
ROOT_DIR="$(git rev-parse --show-toplevel)"
|
||||
|
||||
# Run only once (break make recursion)
|
||||
if [ -d "${ROOT_DIR}/lock_fuzz_link_all" ]; then
|
||||
exit
|
||||
fi
|
||||
mkdir "${ROOT_DIR}/lock_fuzz_link_all"
|
||||
|
||||
echo "Linking each fuzz target separately."
|
||||
for FUZZING_HARNESS in $(PRINT_ALL_FUZZ_TARGETS_AND_ABORT=1 "${ROOT_DIR}/src/test/fuzz/fuzz" | sort -u); do
|
||||
echo "Building src/test/fuzz/${FUZZING_HARNESS} ..."
|
||||
git checkout -- "${ROOT_DIR}/src/test/fuzz/fuzz.cpp"
|
||||
sed -i "s/std::getenv(\"FUZZ\")/\"${FUZZING_HARNESS}\"/g" "${ROOT_DIR}/src/test/fuzz/fuzz.cpp"
|
||||
make
|
||||
mv "${ROOT_DIR}/src/test/fuzz/fuzz" "${ROOT_DIR}/src/test/fuzz/${FUZZING_HARNESS}"
|
||||
done
|
||||
git checkout -- "${ROOT_DIR}/src/test/fuzz/fuzz.cpp"
|
||||
rmdir "${ROOT_DIR}/lock_fuzz_link_all"
|
||||
echo "Successfully built all fuzz targets."
|
||||
Reference in New Issue
Block a user