On Tue, Jul 17, 2018 at 03:27:50PM +0200, Hannes Reinecke wrote:
> Adding an option '--outdir' to store results in a different
> director so as not to clutter the git repository itself.
> 
> Signed-off-by: Hannes Reinecke <[email protected]>
> ---
>  check | 14 ++++++++++----
>  1 file changed, 10 insertions(+), 4 deletions(-)
> 
> diff --git a/check b/check
> index a635531..42d07f8 100755
> --- a/check
> +++ b/check
> @@ -334,7 +334,7 @@ _call_test() {
>       fi
>  
>       trap _cleanup EXIT
> -     if ! TMPDIR="$(mktemp --tmpdir -p "$PWD/results" -d 
> "tmpdir.${TEST_NAME//\//.}.XXX")"; then
> +     if ! TMPDIR="$(mktemp --tmpdir -p "$RESULTS_DIR" -d 
> "tmpdir.${TEST_NAME//\//.}.XXX")"; then
>               return
>       fi
>  
> @@ -415,7 +415,7 @@ _run_test() {
>                       return 0
>               fi
>  
> -             RESULTS_DIR="results/nodev"
> +             RESULTS_DIR="${OUT_DIR}/results/nodev"
>               _call_test test
>       else
>               if [[ ${#TEST_DEVS[@]} -eq 0 ]]; then
> @@ -434,7 +434,7 @@ _run_test() {
>                               _output_notrun "$TEST_NAME => $(basename 
> "$TEST_DEV")"
>                               continue
>                       fi
> -                     RESULTS_DIR="results/$(basename "$TEST_DEV")"
> +                     RESULTS_DIR="${OUT_DIR}/results/$(basename "$TEST_DEV")"
>                       if ! _call_test test_device; then
>                               ret=1
>                       fi
> @@ -567,6 +567,7 @@ Test runs:
>                        tests to run
>  
>  Miscellaneous:
> +  -o, --outdir=OUTDIR    write results into the specified directory
>    -h, --help             display this help message and exit"
>  
>       case "$1" in
> @@ -581,12 +582,13 @@ Miscellaneous:
>       esac
>  }
>  
> -if ! TEMP=$(getopt -o 'dq::x:h' --long 'quick::,exclude:,help' -n "$0" -- 
> "$@"); then
> +if ! TEMP=$(getopt -o 'dq::o:x:h' --long 'quick::,exclude:,outdir:,help' -n 
> "$0" -- "$@"); then
>       exit 1
>  fi
>  
>  eval set -- "$TEMP"
>  unset TEMP
> +OUT_DIR="."

This doesn't allow setting it from the config file. How about this?

diff --git a/check b/check
index 5f4461f..5e99415 100755
--- a/check
+++ b/check
@@ -313,7 +313,7 @@ _call_test() {
        local test_func="$1"
        local seqres="${RESULTS_DIR}/${TEST_NAME}"
        # shellcheck disable=SC2034
-       FULL="$PWD/${seqres}.full"
+       FULL="${seqres}.full"
        declare -A TEST_DEV_QUEUE_SAVED
 
        _read_last_test_run
@@ -334,7 +334,7 @@ _call_test() {
        fi
 
        trap _cleanup EXIT
-       if ! TMPDIR="$(mktemp --tmpdir -p "$PWD/results" -d 
"tmpdir.${TEST_NAME//\//.}.XXX")"; then
+       if ! TMPDIR="$(mktemp --tmpdir -p "$OUTPUT" -d 
"tmpdir.${TEST_NAME//\//.}.XXX")"; then
                return
        fi
 
@@ -415,7 +415,7 @@ _run_test() {
                        return 0
                fi
 
-               RESULTS_DIR="results/nodev"
+               RESULTS_DIR="$OUTPUT/nodev"
                _call_test test
        else
                if [[ ${#TEST_DEVS[@]} -eq 0 ]]; then
@@ -434,7 +434,7 @@ _run_test() {
                                _output_notrun "$TEST_NAME => $(basename 
"$TEST_DEV")"
                                continue
                        fi
-                       RESULTS_DIR="results/$(basename "$TEST_DEV")"
+                       RESULTS_DIR="$OUTPUT/$(basename "$TEST_DEV")"
                        if ! _call_test test_device; then
                                ret=1
                        fi
@@ -559,6 +559,9 @@ Test runs:
   -d, --device-only     only run tests which use a test device from the
                         TEST_DEVS config setting
 
+  -o, --output=DIR      output results to the given directory (the default is
+                        ./results)
+
   -q, --quick=SECONDS   do a quick run (only run quick tests and limit the
                         runtime of longer tests to the given timeout,
                         defaulting to 30 seconds)
@@ -581,7 +584,7 @@ Miscellaneous:
        esac
 }
 
-if ! TEMP=$(getopt -o 'dq::x:h' --long 'quick::,exclude:,help' -n "$0" -- 
"$@"); then
+if ! TEMP=$(getopt -o 'do:q::x:h' --long 'quick::,exclude:,output:,help' -n 
"$0" -- "$@"); then
        exit 1
 fi
 
@@ -596,6 +599,7 @@ fi
 # Default configuration.
 : "${DEVICE_ONLY:=0}"
 : "${QUICK_RUN:=0}"
+: "${OUTPUT:=results}"
 if [[ -v EXCLUDE ]] && ! declare -p EXCLUDE | grep -q '^declare -a'; then
        # If EXCLUDE was not defined as an array, convert it to one.
        # shellcheck disable=SC2190,SC2206
@@ -617,6 +621,10 @@ while true; do
                        DEVICE_ONLY=1
                        shift
                        ;;
+               '-o'|'--output')
+                       OUTPUT="$2"
+                       shift 2
+                       ;;
                '-q'|'--quick')
                        QUICK_RUN=1
                        # Use the timeout specified on the command line, from
@@ -659,4 +667,7 @@ for filter in "${TEMP_EXCLUDE[@]}"; do
 done
 unset TEMP_EXCLUDE
 
+mkdir -p "$OUTPUT"
+OUTPUT="$(realpath "$OUTPUT")"
+
 _check "$@"

Reply via email to