TMPDIR=$(mktemp -d) trap "rm -fr $TMPDIR" EXIT function setup_with_rebuild() { FORGEJO_RUNNER_CONFIG=$EXAMPLE_DIR/runner-config-with-rebuild.yml forgejo-runner.sh reload } function setup_without_rebuild() { FORGEJO_RUNNER_CONFIG=$EXAMPLE_DIR/runner-config-without-rebuild.yml forgejo-runner.sh reload } function run() { local dir="$1" local expected="$2" local repo=root/example-$example forgejo-test-helper.sh push_workflow $dir $url root example-$example setup-forgejo $token sha=$(forgejo-test-helper.sh branch_tip $url $repo main) forgejo-test-helper.sh wait_$expected $url $repo $sha } function get_remote_image() { docker image ls --format='{{ .Repository }}' | grep '^runner-remote-docker-action' } function remove_remote_images() { docker image ls --format='{{ .Repository }}' | grep '^runner-remote-docker-action' | while read image; do docker rmi $image done } function was_built() { grep --quiet 'docker build -t runner-remote-docker-action' $FORGEJO_RUNNER_LOGS } function main() { local dir=$TMPDIR/repository cp -a $EXAMPLE_DIR $dir remove_remote_images : : Run one : setup_without_rebuild run $dir success local image="$(get_remote_image)" test "$image" was_built : : Run two: verify the image was not rebuilt : setup_without_rebuild # resets the logs run $dir success test "$image" = "$(get_remote_image)" ! was_built : : Run two: verify the image was rebuilt and : the image name stayed the same : setup_with_rebuild run $dir success test "$image" = "$(get_remote_image)" was_built } main