101 lines
2.3 KiB
Bash
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
|