#!/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) function main { build_container launch_container "${@}" } function build_container { $MAKE -C "$DIR/../docker/organic_test" } function launch_container { local additional_flags=() local additional_args=() 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 local features_joined=$(IFS=","; echo "${features[*]}") additional_args+=(cargo run --bin compare --no-default-features --features "$features_joined") additional_flags+=(--read-only) else additional_args+=(/bin/sh) additional_flags+=(-t) fi if [ "$BACKTRACE" = "YES" ]; then additional_flags+=(--env RUST_BACKTRACE=full) fi if [ $# -gt 0 ]; then # If we passed in args, we need to forward them along for path in "${@}"; do local full_path=$($REALPATH "$path") local containing_folder=$(dirname "$full_path") local file_name=$(basename "$full_path") docker run "${additional_flags[@]}" --init --rm -i --mount type=tmpfs,destination=/tmp -v "${containing_folder}:/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 "${additional_args[@]}" -- "/input/$file_name" done else docker run "${additional_flags[@]}" --init --rm -i --mount type=tmpfs,destination=/tmp -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 "${additional_args[@]}" fi } main "${@}"