diff --git a/tutorials/Alltest b/tutorials/Alltest index 819cf9390552a9ef7dcaa83a891bb9fbb5005566..ac39728960170993198ac4def6a9e89325395614 100755 --- a/tutorials/Alltest +++ b/tutorials/Alltest @@ -4,7 +4,7 @@ # \\ / F ield | OpenFOAM: The Open Source CFD Toolbox # \\ / O peration | # \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation -# \\/ M anipulation | +# \\/ M anipulation | Copyright (C) 2017 OpenCFD Ltd. #------------------------------------------------------------------------------ # License # This file is part of OpenFOAM. @@ -26,20 +26,22 @@ # Alltest # # Description -# quickly tests the tutorials and writes out the scheme/solver information +# Quickly test the tutorials and write out the scheme/solver information # #------------------------------------------------------------------------------ cd ${0%/*} || exit 1 # Run from this directory usage() { + exec 1>&2 while [ "$#" -ge 1 ]; do echo "$1"; shift; done cat<<USAGE usage: ${0##*/} [OPTION] options: - -root <dir> specify root directory to run tests from + -git use git to retrieve the tutorials + -root dir specify root directory to run tests from -default sets up a default scheme on all schemes -help print the usage @@ -49,38 +51,54 @@ USAGE exit 1 } -#------------------------------------------------------------------------------ +# Report error and exit +die() +{ + exec 1>&2 + echo + echo "Error encountered:" + while [ "$#" -ge 1 ]; do echo " $1"; shift; done + echo + echo "See '${0##*/} -help' for usage" + echo + exit 1 +} -unset DEFAULT_SCHEMES +#------------------------------------------------------------------------------ ROOT="./" +unset DEFAULT_SCHEMES +unset useGit # parse options while [ "$#" -gt 0 ] do case "$1" in + -h | -help) + usage + ;; -r | -root) [ "$#" -ge 2 ] || usage "'$1' option requires an argument" ROOT="$2" shift ;; - -h | -help) - usage + -git) + useGit=true ;; -d | -default) DEFAULT_SCHEMES=true ;; - -*) - usage "unknown option: '$*'" - ;; *) - usage "unknown option/argument: '$*'" + usage "unknown option/argument: '$1'" ;; esac shift done +# +# set up a default scheme on all schemes +# setDefaultFvSchemes() { cat<<EOF @@ -110,7 +128,7 @@ EOF } # -# VARIABLE +# Location of the main controlDict # unset MAIN_CONTROL_DICT @@ -152,15 +170,15 @@ SOLVERS_TEMP="FvSolution.temp" if [ -d "$TEST_RUN_DIR" ] then + echo "Removing old directory: $TEST_RUN_DIR" 1>&2 rm -rf $TEST_RUN_DIR fi -echo "Modifying ${MAIN_CONTROL_DICT}" +echo "Modifying ${MAIN_CONTROL_DICT}" 1>&2 if [ -e ${MAIN_CONTROL_DICT}.orig ] then - echo "File ${MAIN_CONTROL_DICT}.orig already exists" - echo "Did Alltest fail in some way and then run again?" - exit 1 + die "File ${MAIN_CONTROL_DICT}.orig already exists" \ + "Did Alltest fail in some way and then run again?" fi # Clean up on termination and on Ctrl-C @@ -169,31 +187,45 @@ trap 'mv ${MAIN_CONTROL_DICT}.orig ${MAIN_CONTROL_DICT} 2>/dev/null; exit 0' \ cp ${MAIN_CONTROL_DICT} ${MAIN_CONTROL_DICT}.orig sed \ --e s/"\(fvSchemes[ \t]*\)\([0-9]\);"/"\1 1;"/g \ --e s/"\(solution[ \t]*\)\([0-9]\);"/"\1 1;"/g \ -${MAIN_CONTROL_DICT}.orig > ${MAIN_CONTROL_DICT} + -e s/"\(fvSchemes[ \t]*\)\([0-9]\);"/"\1 1;"/g \ + -e s/"\(solution[ \t]*\)\([0-9]\);"/"\1 1;"/g \ + ${MAIN_CONTROL_DICT}.orig > ${MAIN_CONTROL_DICT} -echo "Copying the tutorials" -cp -a ${TUTORIALS_DIR} ${TEST_RUN_DIR} +if [ -n "$useGit" ] +then + echo "Copying the tutorials from current git branch" 1>&2 + if git rev-parse --is-inside-work-tree > /dev/null 2>&1 && \ + base="$(git rev-parse --show-toplevel 2>/dev/null)" + then + mkdir -p ${TEST_RUN_DIR} + ( cd $base/tutorials && git archive --format=tar HEAD . ) | \ + ( cd $TEST_RUN_DIR && tar -xf - ) + else + die "Not in a git-repo" + fi +else + echo "Copying the tutorials" 1>&2 + cp -a ${TUTORIALS_DIR} ${TEST_RUN_DIR} +fi -echo "Modifying the controlDicts to run only one time step" +echo "Modifying the controlDicts to run only one time step" 1>&2 cd ${TEST_RUN_DIR} || exit 1 -for CD in `find . -name "controlDict*"` +for CD in $(find . -type f -name "controlDict*") do mv ${CD} ${CD}.orig sed \ - -e s/"\(startFrom[ \t]*\)\([a-zA-Z]*\);"/"\1 latestTime;"/g \ - -e s/"\(stopAt[ \t]*\)\([a-zA-Z]*\);"/"\1 nextWrite;"/g \ - -e s/"\(writeControl[ \t]*\)\([a-zA-Z]*\);"/"\1 timeStep;"/g \ - -e s/"\(writeInterval[ \t]*\)\([0-9a-zA-Z.-]*\);"/"\1 1;"/g \ - ${CD}.orig > ${CD} + -e s/"\(startFrom[ \t]*\)\([a-zA-Z]*\);"/"\1 latestTime;"/g \ + -e s/"\(stopAt[ \t]*\)\([a-zA-Z]*\);"/"\1 nextWrite;"/g \ + -e s/"\(writeControl[ \t]*\)\([a-zA-Z]*\);"/"\1 timeStep;"/g \ + -e s/"\(writeInterval[ \t]*\)\([0-9a-zA-Z.-]*\);"/"\1 1;"/g \ + ${CD}.orig > ${CD} done if [ "$DEFAULT_SCHEMES" = true ] then - echo "Modifying the fvSchemes to contain only default schemes" - for FV_SC in `find . -name fvSchemes` + echo "Modifying the fvSchemes to contain only default schemes" 1>&2 + for FV_SC in $(find . -type f -name fvSchemes) do for S in $FV_SCHEMES do @@ -204,13 +236,13 @@ then done fi + cp -f $FOAM_TUTORIALS/Allrun . ./Allrun - sed -e :a -e '/\\$/N; s/\\\n//; ta' Allrun > temp APPLICATIONS=\ - `grep "applications=" temp | sed 's/applications=\"\([A-Za-z \t]*\)\"/\1/g'` + $(grep "applications=" temp | sed 's/applications=\"\([A-Za-z \t]*\)\"/\1/g') rm $SCHEMES_FILE > /dev/null 2>&1 for APP in $APPLICATIONS @@ -221,13 +253,13 @@ do do rm $SCHEMES_TEMP $SOLVERS_TEMP > /dev/null 2>&1 echo " ${ST}" >> $SCHEMES_FILE - for LOG in `find ${APP} -name "log.${APP}"` + for LOG in $(find ${APP} -type f -name "log.${APP}") do - for S in `grep ${ST} ${LOG} | cut -d" " -f4` + for S in $(grep ${ST} ${LOG} | cut -d" " -f4) do echo " ${S}" >> $SCHEMES_TEMP done - echo `grep solver ${LOG} | cut -d" " -f4` >> $SOLVERS_TEMP + echo $(grep solver ${LOG} | cut -d" " -f4) >> $SOLVERS_TEMP done if [ -f $SCHEMES_TEMP ] then