Files
SAPFOR/dvm/tools/tester/trunk/automation/test-revision.sh
2024-05-02 17:08:55 +03:00

101 lines
2.3 KiB
Bash

#!/bin/sh
unset CDPATH
MY_DIR=$(cd "$(dirname "$(which "$0")")" && pwd)
POPULATE_FLAG=0
WORKING_DIR=`pwd`
REV=
parse_params() {
while [ -n "$1" ]; do
if [ "$1" = "--working-dir" ]; then
WORKING_DIR="$2"
shift
elif [ "$1" = "--populate" ]; then
POPULATE_FLAG=1
else
REV=$1
fi
shift
done
}
parse_params $@
if [ -z "$REV" ]; then
exit 1
fi
if [ -f "$WORKING_DIR/dvm-tester.config" ]; then
. "$WORKING_DIR/dvm-tester.config"
else
exit 1
fi
REPO_URL="$REPO_BASE_URL/dvm/releases/current-trunk"
SVN_PARAMS="--username $REPO_USER --password $REPO_PASS --non-interactive"
update_test_suite() {
if [ -e "$TEST_SUITE/.svn" ]; then
( cd "$TEST_SUITE" && svn $SVN_PARAMS update )
fi
}
test_revision() {
REV=$1
echo "[$(date)] Testing revision $REV"
SAVE_DIR=`pwd`
WORK_DIR="$WORKING_DIR/dvm_r$REV"
rm -rf "$WORK_DIR"
svn co $SVN_PARAMS -r $REV "$REPO_URL" "$WORK_DIR" >/dev/null
SVN_RES=$?
while [ $SVN_RES -ne 0 ]; do
sleep 1
rm -rf "$WORK_DIR"
svn co $SVN_PARAMS -r $REV "$REPO_URL" "$WORK_DIR" >/dev/null
SVN_RES=$?
done
cd "$WORK_DIR"
TMP_FILE=`mktemp`
svn propget svn:externals >$TMP_FILE
SVN_RES=$?
while [ $SVN_RES -ne 0 ]; do
svn propget svn:externals >$TMP_FILE
SVN_RES=$?
done
CHILDREN=`cat $TMP_FILE | sed '/^$/d' | awk '{print $(NF)}'`
rm $TMP_FILE
for d in $CHILDREN; do
cd "$WORK_DIR/$d"
svn up $SVN_PARAMS -r $REV >/dev/null
SVN_RES=$?
while [ $SVN_RES -ne 0 ]; do
sleep 1
svn cleanup $SVN_PARAMS
svn up $SVN_PARAMS -r $REV >/dev/null
SVN_RES=$?
done
done
rm -rf "$WORK_DIR.tmp"
mv "$WORK_DIR" "$WORK_DIR.tmp"
svn export "$WORK_DIR.tmp" "$WORK_DIR" >/dev/null
SVN_RES=$?
while [ $SVN_RES -ne 0 ]; do
sleep 1
rm -rf "$WORK_DIR"
svn export "$WORK_DIR.tmp" "$WORK_DIR" >/dev/null
SVN_RES=$?
done
rm -rf "$WORK_DIR.tmp"
cd "$WORKING_DIR"
POPULATE_FLAG=$POPULATE_FLAG "$MY_DIR/build-and-test.sh" "$WORK_DIR" $REV
echo "[$(date)] Testing revision $REV done"
# rm -rf "$WORK_DIR"
cd "$SAVE_DIR"
}
update_test_suite
test_revision $REV