#!/bin/bash set -e function run() { local example=$1 export example export EXAMPLE_DIR=$(pwd)/actions/example-$example if test -f $EXAMPLE_DIR/setup.sh ; then echo "============================ SETUP example-$example ===================" bash -ex $EXAMPLE_DIR/setup.sh || return 1 fi if test -f $EXAMPLE_DIR/run.sh ; then echo "============================ RUN example-$example ===================" bash -ex $EXAMPLE_DIR/run.sh || return 1 else forgejo-test-helper.sh run_workflow actions/example-$example $url root example-$example setup-forgejo $token || return 1 fi if test -f $EXAMPLE_DIR/teardown.sh ; then echo "============================ TEARDOWN example-$example ===================" bash -ex $EXAMPLE_DIR/teardown.sh || return 1 fi } function examples_v1_20() { echo 'echo checkout service container expression local-action docker-action if if-fail' } function examples_v1_21() { # keep "cron" last otherwise it will linger and pollute the following runs echo 'echo push-cancel artifacts service checkout pull-request container expression local-action docker-action if if-fail cron' } function examples_v1_22() { examples_v1_21 } function setup() { local binary=$1 forgejo-binary.sh setup root admin1234 $binary forgejo-runner.sh setup } function teardown() { forgejo-curl.sh logout forgejo-runner.sh teardown forgejo-binary.sh teardown } function main() { local binary="$1" shift export version="$1" shift export DOT=$DIR/forgejo-curl teardown if test "$#" = 0 ; then examples=$(examples_$version) else examples="$@" fi if test "$examples" = "none" ; then exit 0 fi setup $binary if ! test -f "$DIR/forgejo-auth-url" ; then echo "DIR=$DIR must be a directory with a forgejo-auth-url file" fi export FORGEJO_RUNNER_LOGS=$DIR/forgejo-runner.log export url=$(cat $DIR/forgejo-auth-url) export token=$(cat $DIR/forgejo-token) for example in $examples ; do echo "======================== BEGIN example-$example ===================" if ! time run $example >& /tmp/run.out ; then cat /tmp/run.out echo "======================== FAIL example-$example ===================" sleep 5 # hack for Forgejo v1.21 to workaround a bug by which the last lines of the output are moved to the next step false fi echo "======================== END example-$example ===================" done } main "$@"