Kaltenberg/scripts/run-unit-tests.bash

58 lines
1.4 KiB
Bash
Raw Normal View History

#!/usr/bin/env bash
cd $(dirname $0)
SCRIPT_PATH=$(pwd)
cd ..
PROJECT_PATH=$(pwd)
function list_modules() {
MODULE_FOLDER=$1
MODULES=$(ls $MODULE_FOLDER)
for MODULE in $MODULES
do
if [[ -d "$MODULE_FOLDER/$MODULE/tests/unit-tests" ]];
then
echo $MODULE
fi
done
}
function list_sources() {
SOURCE_PATH=$1
ENTRY_PATH=$(pwd)
cd $SOURCE_PATH
SOURCES=$(find . -type f | grep ".c$")
for SOURCE in $SOURCES
do
echo $SOURCE_PATH/$(echo $SOURCE | cut -c 3-)
done
cd $ENTRY_PATH
}
function make_include_statements() {
MODULE_NAME=$1
for INCLUDE_PATH in $(cat modules/$MODULE_NAME/includes.txt)
do
MODIFIED_PATH="${INCLUDE_PATH//"{module}"/"$PROJECT_PATH/modules/$MODULE_NAME"}"
MODIFIED_PATH="${MODIFIED_PATH//"{module-folder}"/"$PROJECT_PATH/modules"}"
echo "-I ${MODIFIED_PATH//"{dependencies}"/"$PROJECT_PATH/dependencies"}"
done
}
MODULES=$(list_modules "modules/")
for MODULE in $MODULES
do
SOURCES=$(list_sources "modules/$MODULE/tests/unit-tests/src-c")
INCLUDE_STATEMENTS=$(make_include_statements $MODULE)
gcc -o $PROJECT_PATH/.build/test-$MODULE.elf \
$SOURCES \
.build/archives/*.a \
-I "modules/$MODULE/tests/unit-tests/inc-c" \
$INCLUDE_STATEMENTS
./.build/test-$MODULE.elf
done