#!/usr/bin/env bash # set -euo pipefail IFS=$'\n\t' DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" : ${SHELL:="NO"} # or YES to launch a shell instead of running the test : ${TRACE:="NO"} # or YES to send traces to jaeger : ${BACKTRACE:="NO"} # or YES to print a rust backtrace when panicking : ${NO_COLOR:=""} # Set to anything to disable color output REALPATH=$(command -v uu-realpath || command -v realpath) MAKE=$(command -v gmake || command -v make) ############## Setup ######################### function die { local status_code="$1" shift (>&2 echo "${@}") exit "$status_code" } function log { (>&2 echo "${@}") } ############## Program ######################### function main { build_container launch_container "${@}" } function build_container { $MAKE -C "$DIR/../docker/organic_test" } function launch_container { local additional_flags=() local features=(compare) if [ "$NO_COLOR" != "" ]; then additional_flags+=(--env "NO_COLOR=$NO_COLOR") fi if [ "$TRACE" = "YES" ]; then # We use the host network so it can talk to jaeger hosted at 127.0.0.1 additional_flags+=(--network=host --env RUST_LOG=debug) features+=(tracing) fi if [ "$SHELL" != "YES" ]; then additional_flags+=(--read-only) else additional_flags+=(-t) fi if [ "$BACKTRACE" = "YES" ]; then additional_flags+=(--env RUST_BACKTRACE=full) fi if [ "$SHELL" = "YES" ]; then exec docker run "${additional_flags[@]}" --init --rm -i --mount type=tmpfs,destination=/tmp -v "/:/input:ro" -v "$($REALPATH "$DIR/../"):/source:ro" --mount source=cargo-cache,target=/usr/local/cargo/registry --mount source=rust-cache,target=/target --env CARGO_TARGET_DIR=/target -w /source --entrypoint "" organic-test /bin/sh fi local features_joined features_joined=$(IFS=","; echo "${features[*]}") if [ $# -gt 0 ]; then # If we passed in args, we need to forward them along for path in "${@}"; do local full_path full_path=$($REALPATH "$path") init_script=$(cat <