#!/bin/bash # # helper script to run some predefined set of tests # store results in a file that contains the git hash # and also shows differences if any # # if this command is run as all-tests3, then we will just do # make PYTHON=python3 # # xxx - WARNING : most likely the python2 and python3 tests # cannot safely be run together; need to check the nepi exp_ids # used more closely COMMAND=$(basename $0) PYTHON=python version=2 echo $COMMAND | grep -q 3 && { PYTHON=python3; version=3; } hash=$(git log -n 1 | head -1 | sed -e 's,commit ,,' -e 's,\(........\).*,\1,') # compute output file name output="zz.py$version.$hash" # if there is any pending change, use another name is_pristine="" changes=$(git diff HEAD | wc -l); changes=$(echo $changes) [ "$changes" == 0 ] && is_pristine=true [ -n "$is_pristine" ] || output="$output-pending" function all_tests () { echo all-tests : begin at; date begin=$(date +%s) echo ======================================== echo status echo ======================================== echo ===== Current hash $hash echo ===== Current branch git branch echo ===== Uncommitted changes git diff HEAD echo ======================================== echo tests echo ======================================== make PYTHON=$PYTHON all-tests echo ======================================== end=$(date +%s) echo all-tests : end at; date; echo total duration $(($end-$begin)) seconds } # WARNING: the current code for analyzing the output is not quite right # I've seen cases where the tests session goes very badly - with broken imports for example # but it's considered OK though # we mght wish to take the opposite angle : check we have as many OK as expected # but then the list of default targets should be declared here and not in Makefile # in any case this is good enough for now all_tests >& $output retcod=$? # analyze this output for success or not success=$output.success failure=$output.failed if [ "$retcod" != 0 ]; then touch $failure elif grep -q '^FAIL' $output; then touch $failure else touch $success fi