e41984d0a5
ref https://linear.app/tryghost/issue/ANAL-27/setup-tinybird-project-and-cicd - Tinybird has a system for managing it's configuration as code, with full ci/cd support - The tinybird CLI tool uses python, so we'll run that using docker, via `yarn tb` - Some of the files tinybird adds should not be in source control, so we've added those to git ignore - Everything in /ghost/tinybird is tinybird's init config
59 lines
1.5 KiB
Bash
Executable File
59 lines
1.5 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
|