Added a new job to check for changed files before executing the CI workflow. Integrated Tinybird local service, updated environment variables, and refined the CI steps for better functionality and clarity.
61 lines
1.6 KiB
Bash
Executable File
61 lines
1.6 KiB
Bash
Executable File
|
|
#!/usr/bin/env bash
|
|
set -euxo pipefail
|
|
|
|
export TB_VERSION_WARNING=0
|
|
|
|
run_test() {
|
|
t=$1
|
|
echo "** Running $t **"
|
|
echo "** $(cat $t)"
|
|
tmpfile=$(mktemp)
|
|
retries=0
|
|
TOTAL_RETRIES=3
|
|
|
|
# When appending fixtures, we need to retry in case of the data is not replicated in time
|
|
while [ $retries -lt $TOTAL_RETRIES ]; do
|
|
# Run the test and store the output in a temporary file
|
|
bash $t $2 >$tmpfile
|
|
exit_code=$?
|
|
if [ "$exit_code" -eq 0 ]; then
|
|
# If the test passed, break the loop
|
|
if diff -B ${t}.result $tmpfile >/dev/null 2>&1; then
|
|
break
|
|
# If the test failed, increment the retries counter and try again
|
|
else
|
|
retries=$((retries+1))
|
|
fi
|
|
# If the bash command failed, print an error message and break the loop
|
|
else
|
|
break
|
|
fi
|
|
done
|
|
|
|
if diff -B ${t}.result $tmpfile >/dev/null 2>&1; then
|
|
echo "✅ Test $t passed"
|
|
rm $tmpfile
|
|
return 0
|
|
elif [ $retries -eq $TOTAL_RETRIES ]; then
|
|
echo "🚨 ERROR: Test $t failed, diff:";
|
|
diff -B ${t}.result $tmpfile
|
|
rm $tmpfile
|
|
return 1
|
|
else
|
|
echo "🚨 ERROR: Test $t failed with bash command exit code $?"
|
|
cat $tmpfile
|
|
rm $tmpfile
|
|
return 1
|
|
fi
|
|
echo ""
|
|
}
|
|
export -f run_test
|
|
|
|
fail=0
|
|
find ./tests -name "*.test" -print0 | xargs -0 -I {} -P 4 bash -c 'run_test "$@"' _ {} || fail=1
|
|
|
|
if [ $fail == 1 ]; then
|
|
exit -1;
|
|
fi
|
|
|
|
|
|
echo "DELETE ME - I'M HERE TO TRIGGER THE CI - 1" |