do-nightly-tests-and-publish at [d5fb66316b]

File build/test/do-nightly-tests-and-publish artifact 5c58eff196 part of check-in d5fb66316b


#! /bin/bash

# Update PATH to include path to Tclkit, otherwise cross-compiles will fail
PATH="${PATH}:/home/rkeene/bin:/usr/local/bin"
export PATH

# Define build and web paths
KITCREATORDIR="/home/rkeene/devel/kitcreator"
WEBROOTDIR="/web/rkeene/devel/kitcreator/kitbuild"
export KITCREATORDIR WEBROOTDIR

cd "${KITCREATORDIR}" || exit 1

FOSSIL_CHANGE="$(fossil timeline -n 1 -t ci | grep '^[0-9:]* \[' | sed 's@^[0-9:]* \[\([0-9a-f]*\)\].*$@\1@')"
TESTNAME="fossil_${FOSSIL_CHANGE}"
export FOSSIL_CHANGE TESTNAME

# On Wednesday, do a distclean to force redownloading everything (mainly
# for CVS Head) and force a rebuild to ensure up-to-date build status
if [ "$(date '+%u')" = "3" ]; then
	./kitcreator distclean || exit 1

	touch "${KITCREATORDIR}/build/test/force_nightly"
fi

if [ -d "${WEBROOTDIR}/${TESTNAME}" ]; then
	# Don't re-run the tests if nothing has changed
	if [ -f "${KITCREATORDIR}/build/test/force_nightly" ]; then
		rm -f "${KITCREATORDIR}/build/test/force_nightly"
	else
		exit 0
	fi
fi

cd build/test || exit 1

if [ ! -x test -o ! -x publish-tests ]; then
	echo 'Missing scripts, aborting.' >&2

	exit 1
fi

# Only run one at a time
if [ -f '__AUTO_TESTS_RUNNING__' ]; then
	exit 1
fi
touch '__AUTO_TESTS_RUNNING__'

# Clean builds
rm -rf kits

# Run tests
nice -n 20 ./test >/dev/null 2>/dev/null

# Clean old auto-generated published results
rm -rf "${WEBROOTDIR}"/svn_r*/ "${WEBROOTDIR}"/fossil_*/

# Publish New Results
./publish-tests "${TESTNAME}"

# Clean
rm -f '__AUTO_TESTS_RUNNING__'

exit 0