#!/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 DIRNAME=$(dirname $0) COMMAND=$(basename $0) if echo $COMMAND | grep -q 6; then $DIRNAME/all-tests2; $DIRNAME/all-tests3; exit fi 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.$hash.py$version" latest="zz.latest.py$version" # 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 make_retcod=$! echo ======================================== end=$(date +%s) echo all-tests : end at $((date)); echo total duration $(($end-$begin)) seconds return $make_retcod } # WARNING # the current code for analyzing the output is very basic # this needs to be checked manually for some time # create a 'latest' symlink ln -f -s $output $latest 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