# do not use -o pipefail
set -eux
+#Ensure that tox from tox-install.sh takes precedence.
+PATH=$HOME/.local/bin:$PATH
+
ARCHIVE_TOX_DIR="$WORKSPACE/archives/tox"
ARCHIVE_DOC_DIR="$WORKSPACE/archives/docs"
mkdir -p "$ARCHIVE_TOX_DIR"
export TOX_TESTENV_PASSENV=PYTHONPATH
fi
+#Useful debug
+tox --version
+
PARALLEL="${PARALLEL:-true}"
-if [[ ${PARALLEL} = true ]]; then
- if [[ -n ${TOX_ENVS:-} ]]; then
- tox -e "$TOX_ENVS" --parallel auto --parallel-live | tee -a "$ARCHIVE_TOX_DIR/tox.log"
- tox_status="${PIPESTATUS[0]}"
- else
- tox --parallel auto --parallel-live | tee -a "$ARCHIVE_TOX_DIR/tox.log"
- tox_status="${PIPESTATUS[0]}"
- fi
-else
- if [[ -n ${TOX_ENVS:-} ]]; then
- tox -e "$TOX_ENVS" | tee -a "$ARCHIVE_TOX_DIR/tox.log"
- tox_status="${PIPESTATUS[0]}"
- else
- tox | tee -a "$ARCHIVE_TOX_DIR/tox.log"
- tox_status="${PIPESTATUS[0]}"
- fi
-fi
+TOX_OPTIONS_LIST=""
+
+if [[ -n ${TOX_ENVS:-} ]]; then
+ TOX_OPTIONS_LIST=$TOX_OPTIONS_LIST" -e $TOX_ENVS"
+fi;
+
+case ${PARALLEL,,} in
+ true|auto )
+ TOX_OPTIONS_LIST=$TOX_OPTIONS_LIST" --parallel auto --parallel-live";;
+ all )
+ TOX_OPTIONS_LIST=$TOX_OPTIONS_LIST" --parallel all --parallel-live";;
+ [0-9]* )
+ TOX_OPTIONS_LIST=$TOX_OPTIONS_LIST" --parallel ${PARALLEL} --parallel-live";;
+esac
+
+
+# $TOX_OPTIONS_LIST are intentionnaly not surrounded by quotes
+# to correcly pass options to tox
+# shellcheck disable=SC2086
+tox $TOX_OPTIONS_LIST | tee -a "$ARCHIVE_TOX_DIR/tox.log"
+tox_status="${PIPESTATUS[0]}"
echo "---> Completed tox runs"
# shellcheck disable=SC2116
for i in .tox/*/log; do
tox_env=$(echo "$i" | awk -F'/' '{print $2}')
- cp -r "$i" "$ARCHIVE_TOX_DIR/$tox_env"
+ # defend against glob finding no matches
+ if ! cp -r "$i" "$ARCHIVE_TOX_DIR/$tox_env"; then
+ echo "WARN: no logs found to archive"
+ break
+ fi
done
# If docs are generated push them to archives.