1
0
mirror of https://git.disroot.org/80486DX2-66/polonium.git synced 2024-11-09 15:02:20 +05:30
polonium/test.sh

69 lines
1.3 KiB
Bash

#!/bin/sh
mkdir_if_not_exists() {
[ -d "$1" ] || mkdir "$1"
}
make_log="$(pwd)/make.log"
exec_name='polonium_debug'
exec_file="$(pwd)/bin/$exec_name"
exec_log="$(pwd)/exec.log"
corrupt() {
cp "$1" "$2" || return 1
file_name="$(pwd)/$2"
args=("$file_name" "-p" "60" "-t" "2" "-n" "2" "--noconfirm" \
"-s" "999999999")
printf -- "--- [*] $exec_name ${args[*]}\n"
"$exec_file" "${args[@]}" > "$exec_log" 2>&1
return $?
}
iterate_on_test_files() {
find $1 -maxdepth 1 -type f -name 'test.*' | while IFS= read -r file; do
basename="$(basename "$file")"
corrupt "$file" "./corrupted/$basename"
if [ "$?" -ne "0" ]; then
printf "[!] Polonium failed:\n"
cat "$exec_log"
rm "$exec_log"
return 1
fi
rm "$exec_log"
return 0
done
}
set +o histexpand # Disable parsing "!" as the history expansion character
# If either binary or object files are present, clean up
[ -d ./bin -o -d ./obj ] && make clean > /dev/null 2>&1
printf "[*] Making\n"
make DEBUG=1 all > "$make_log" 2>&1
if [ "$?" -ne "0" ]; then
printf "[!] Makefile failed:\n"
cat "$make_log"
rm "$make_log"
exit 1
fi
rm "$make_log"
cd ./test_files || exit 1
printf "[*] Generating corrupted versions of test files\n"
mkdir_if_not_exists ./corrupted/
iterate_on_test_files .
if [ "$?" -ne "0" ]; then
exit 1
fi
printf "[>] All done!\n"