#!/bin/sh
#SCRIPT=$(readlink -f "$0")
#SCRIPTPATH=$(dirname "$SCRIPT")
#. "$SCRIPTPATH/.dbwebb.version"
. "bin/.dbwebb.version"
TESTS=0
ASSERTS=0
FAULTS=0
ECHO="printf"
TMPFILE="/tmp/dbwebb-error-{$USER}-$$"
# Remove old tmp files
find /tmp -maxdepth 1 -name 'dbwebb-error*' -user mosstud -type f -exec rm -f {} \;
#export SUDO_ASKPASS=askpass
#SUDO="sudo -A -u dbwebb"
SUDO=""
#
# Print usage of script
#
printUsage()
{
$ECHO "\nUtility dbwebb-inspect $VERSION by Mikael Roos, to inspect course results as a teacher."
$ECHO "\n"
$ECHO "\nUsage: dbwebb-inspect [options] <item> <user>"
$ECHO "\n"
$ECHO "Options:"
$ECHO "\n"
$ECHO "\n -h Print this message and exit."
$ECHO "\n -v Print version and exit."
$ECHO "\n"
$ECHO "\nItem:"
$ECHO "\n"
$ECHO "\n kmom01 Inspect selected kmom."
$ECHO "\n kmom02 Inspect selected kmom."
$ECHO "\n kmom03 Inspect selected kmom."
$ECHO "\n kmom04 Inspect selected kmom."
$ECHO "\n kmom05 Inspect selected kmom."
$ECHO "\n kmom06 Inspect selected kmom."
$ECHO "\n kmom10 Inspect selected kmom."
$ECHO "\n"
$ECHO "\nExample:"
$ECHO "\n"
$ECHO "\n $ dbwebb-inspect kmom01"
$ECHO "\n $ dbwebb-inspect kmom01 mosstud"
$ECHO "\n"
$ECHO "\n"
}
#
# Check the environment
#
checkEnvironment()
{
$ECHO "\n-----------------------------------------"
$ECHO "\n----------- dbwebb inspect --------------"
$ECHO "\n-----------------------------------------"
# Check who you are
if [ "$USER" = "$THEUSER" ]
then
$ECHO "\nChecking your own $KMOM, ok."
else
$ECHO "\nChecking $KMOM for $THEUSER as `whoami` at `hostname`."
fi
dirname="$THEDIR"
assert 0 "test -r $dirname -a -d $dirname" "Directory $dirname not readable.\nPerhaps login to the studserver and execute the command:\nsudo setpre-dbwebb-kurser.bash $THEUSER"
if [ $? -eq 1 ]; then
$ECHO "\nFor debug:"
$ECHO "\n`whoami`\n"
$ECHO "\n`groups`\n"
dir="$( dirname $THEDIR )"
$ECHO "\n`ls -ld $dir`\n"
$ECHO "\n$dir is directory `test -d $dir; echo $?`\n"
$ECHO "\n$dir is readable `test -r $dir; echo $?`\n"
$ECHO "\n`ls -ld $THEDIR`\n"
$ECHO "\n$THEDIR is directory `test -d $THEDIR; echo $?`\n"
$ECHO "\n$THEDIR is readable `test -r $THEDIR; echo $?`\n"
fi
$ECHO "\nOpen files in an editor:"
$ECHO "\n$EDITOR $dirname"
}
#
# Test python me
#
pythonme()
{
$ECHO "\n\n-----------------------------------------"
$ECHO "\n----------- me-page ---------------------"
$ECHO "\n-----------------------------------------"
filename="$THEDIR/me/me.cgi"
assert 0 "test -r $filename -a -f $filename" "CGI-script for me-page is not readable. $filename"
url="$SERVERURL/~$THEUSER/$BASEDIR/$PROJECT"
$ECHO "\nLink to me-page: $url/me/me.cgi"
filename="$THEDIR/me/redovisning.cgi"
assert 0 "test -r $filename -a -f $filename" "CGI-script for redovisning-page is not readable. $filename"
url="$SERVERURL/~$THEUSER/$BASEDIR/$PROJECT"
$ECHO "\nLink to redovisning-page: $url/me/redovisning.cgi"
$ECHO "\nOpen files in an editor:"
$ECHO "\n$EDITOR $THEDIR/me"
$ECHO "\n$EDITOR $THEDIR/me/me.cgi"
$ECHO "\nPress enter to continue..."
read void
}
#
# Publish kmom to webserver
#
publishKmom()
{
target="$1"
$ECHO "\nPublish $THEKMOM [yN]? "
read answer
default="n"
answer=${answer:-$default}
if [ "$answer" = "y" -o "$answer" = "Y" ]
then
rsync -a --delete "$THEDIR/$target/" "$PUBLISH_STUD/"
for filename in $(find "$PUBLISH_STUD" -type f -name '*.cgi'); do
chmod 755 "$filename"
done
url="$SERVERURL/~$USER/$BASEDIR/$STUD_DIR"
$ECHO "\nLink: $url"
$ECHO "\nOpen files in an editor:"
$ECHO "\n$EDITOR $PUBLISH_STUD/"
$ECHO "\nMove to the directory:"
$ECHO "\ncd $PUBLISH_STUD/"
fi
}
#
# Test check the kmom dir exists
#
checkKmomDir()
{
dirname="$THEDIR/$1"
assert 0 "test -r $dirname -a -d $dirname" "Directory $dirname not readable."
}
#
# Execute a command, maybe as another user
#
executeCommand()
{
what="$1"
move1="$2"
cmd="$3"
move2="$4"
filename="$move1/$what"
if [ -f "$filename" -o -r "$filename" ]; then
$ECHO "\nExecute the program $what [Yn]? "
read answer
default="y"
answer=${answer:-$default}
if [ "$answer" = "y" -o "$answer" = "Y" ]; then
cd "$move1"
if [ "$USER" = "$THEUSER" ]; then
$cmd
else
$SUDO $cmd
fi
status=$?
cd "$move2"
if [ $status -eq 0 ]; then
assert 1 "test" "Command executed successfully."
$ECHO "\n\n$MSG_OK Command executed with a exit status 0 - indicating success."
else
assert 0 "test" "Command return non-zero exit status which might indicate failure."
fi
fi
else
assert 0 "test" "The file $what is missing or not readable."
fi
}
#
# Test validate a kmom
#
validateKmom()
{
THEKMOM="$1"
$ECHO "\nValidate $THEKMOM [Yn]? "
read answer
default="y"
answer=${answer:-$default}
if [ "$answer" = "y" -o "$answer" = "Y" ]
then
bin/dbwebb-validate -i -n -m -e -t $THEKMOM $THEUSER
fi
}
#
# Test python plane
#
pythonplane()
{
$ECHO "\n\n-----------------------------------------"
$ECHO "\n----------- plane ----------------"
$ECHO "\n-----------------------------------------"
target="$1"
dirname="$THEDIR/$target"
assert 0 "test -r $dirname -a -d $dirname" "Directory $dirname not readable."
filename="$THEDIR/$target/plane1.py"
assert 0 "test -r $filename -a -f $filename" "The file plane.py is missing."
filename="$THEDIR/$target/plane1.cgi"
assert 0 "test -r $filename -a -f $filename" "The file plane.cgi is missing."
url="$SERVERURL/~$THEUSER/$BASEDIR/$PROJECT"
$ECHO "\nLink to plane-page: $url/me/kmom01/plane/plane1.cgi"
$ECHO "\nOpen files in an editor:"
$ECHO "\n$EDITOR $THEDIR/$target/"
$ECHO "\n$EDITOR $THEDIR/$target/plane1.cgi"
executeCommand "plane.py" "$THEDIR/$target" "python3 plane.py" "$TARGET"
}
#
# Test python marvin1
#
pythonmarvin1()
{
id="$1"
target="$2"
$ECHO "\n\n-----------------------------------------"
$ECHO "\n----------- marvin$id ---------------------"
$ECHO "\n-----------------------------------------"
dirname="$THEDIR/$target"
assert 0 "test -r $dirname -a -d $dirname" "Directory $dirname not readable."
filename="$THEDIR/$target/marvin.py"
assert 0 "test -r $filename -a -f $filename" "The file marvin.py is missing."
$ECHO "\nOpen files in an editor:"
$ECHO "\n$EDITOR $THEDIR/$target/"
$ECHO "\n$EDITOR $THEDIR/$target/marvin.py"
executeCommand "marvin.py" "$THEDIR/$target" "python3 marvin.py" "$TARGET"
}
#
# Test python marvin2
#
pythonmarvin2()
{
id="$1"
target="$2"
$ECHO "\n\n-----------------------------------------"
$ECHO "\n----------- marvin$id ---------------------"
$ECHO "\n-----------------------------------------"
dirname="$THEDIR/$target"
assert 0 "test -r $dirname -a -d $dirname" "Directory $dirname not readable."
filename="$THEDIR/$target/marvin.py"
assert 0 "test -r $filename -a -f $filename" "The file marvin.py is missing."
filename="$THEDIR/$target/main.py"
assert 0 "test -r $filename -a -f $filename" "The file main.py is missing."
$ECHO "\nOpen files in an editor:"
$ECHO "\n$EDITOR $THEDIR/$target/"
$ECHO "\n$EDITOR $THEDIR/$target/marvin.py"
executeCommand "main.py" "$THEDIR/$target" "python3 main.py" "$TARGET"
}
#
# Test python game1
#
pythongame1()
{
$ECHO "\n\n-----------------------------------------"
$ECHO "\n----------- game1 ----------------"
$ECHO "\n-----------------------------------------"
target="$1"
dirname="$THEDIR/$target"
assert 0 "test -r $dirname -a -d $dirname" "Directory $dirname not readable."
filename="$THEDIR/$target/border.py"
assert 0 "test -r $filename -a -f $filename" "The file border.py is missing."
$ECHO "\nOpen files in an editor:"
$ECHO "\n$EDITOR $THEDIR/$target/"
$ECHO "\n$EDITOR $THEDIR/$target/border.py"
executeCommand "border.py" "$THEDIR/$target" "python3 border.py" "$TARGET"
}
#
# Test python game2
#
pythongame2()
{
$ECHO "\n\n-----------------------------------------"
$ECHO "\n----------- game2 ----------------"
$ECHO "\n-----------------------------------------"
target="$1"
dirname="$THEDIR/$target"
assert 0 "test -r $dirname -a -d $dirname" "Directory $dirname not readable."
filename="$THEDIR/$target/retro.py"
assert 0 "test -r $filename -a -f $filename" "The file retro.py is missing."
filename="$THEDIR/$target/retro.py"
assert 0 "test -r $filename -a -f $filename" "The file retro.py is missing."
$ECHO "\nOpen files in an editor:"
$ECHO "\n$EDITOR $THEDIR/$target/"
$ECHO "\n$EDITOR $THEDIR/$target/retro.py"
executeCommand "retro.py" "$THEDIR/$target" "python3 retro.py" "$TARGET"
}
#
# Test python lab
#
pythonlab()
{
id="$1"
target="$2"
$ECHO "\n\n-----------------------------------------"
$ECHO "\n----------- lab$id ------------------------"
$ECHO "\n-----------------------------------------"
dirname="$THEDIR/$target"
assert 0 "test -r $dirname -a -d $dirname" "Directory $dirname not readable."
filename="$THEDIR/$target/answer.py"
assert 0 "test -r $filename -a -f $filename" "The file answer.py is missing."
$ECHO "\nOpen files in an editor:"
$ECHO "\n$EDITOR $THEDIR/$target/"
$ECHO "\n$EDITOR $THEDIR/$target/answer.py"
executeCommand "answer.py" "$THEDIR/$target" "python3 answer.py" "$TARGET"
}
#
# Test python kmom01
#
pythonkmom01()
{
$ECHO "\n\n-----------------------------------------"
$ECHO "\n----------- python kmom01 ---------------"
$ECHO "\n-----------------------------------------"
THEKMOM="kmom01"
THETARGET="me/$THEKMOM"
checkKmomDir "$THETARGET"
publishKmom "$THETARGET"
validateKmom "$THEKMOM"
pythonme
pythonplane "$THETARGET/plane"
}
#
# Test python kmom02
#
pythonkmom02()
{
$ECHO "\n\n-----------------------------------------"
$ECHO "\n----------- python kmom02 ---------------"
$ECHO "\n-----------------------------------------"
THEKMOM="kmom02"
THETARGET="me/$THEKMOM"
checkKmomDir "$THETARGET"
publishKmom "$THETARGET"
validateKmom "$THEKMOM"
pythonme
pythonlab "1" "$THETARGET/lab1"
pythonmarvin1 "1" "$THETARGET/marvin1"
}
#
# Test python kmom03
#
pythonkmom03()
{
$ECHO "\n\n-----------------------------------------"
$ECHO "\n----------- python kmom03 ---------------"
$ECHO "\n-----------------------------------------"
THEKMOM="kmom03"
THETARGET="me/$THEKMOM"
checkKmomDir "$THETARGET"
publishKmom "$THETARGET"
validateKmom "$THEKMOM"
pythonme
pythonlab "2" "$THETARGET/lab2"
pythonmarvin2 "2" "$THETARGET/marvin2"
}
#
# Test python kmom04
#
pythonkmom04()
{
$ECHO "\n\n-----------------------------------------"
$ECHO "\n----------- python kmom04 ---------------"
$ECHO "\n-----------------------------------------"
THEKMOM="kmom04"
THETARGET="me/$THEKMOM"
checkKmomDir "$THETARGET"
publishKmom "$THETARGET"
validateKmom "$THEKMOM"
pythonme
pythonlab "3" "$THETARGET/lab3"
pythonmarvin2 "3" "$THETARGET/marvin3"
pythongame1 "$THETARGET/game1"
}
#
# Test python kmom05
#
pythonkmom05()
{
$ECHO "\n\n-----------------------------------------"
$ECHO "\n----------- python kmom05 ---------------"
$ECHO "\n-----------------------------------------"
THEKMOM="kmom05"
THETARGET="me/$THEKMOM"
checkKmomDir "$THETARGET"
publishKmom "$THETARGET"
validateKmom "$THEKMOM"
pythonme
pythonlab "4" "$THETARGET/lab4"
pythongame2 "$THETARGET/game2"
pythonmarvin2 "4" "$THETARGET/marvin4"
}
#
# Test javascript1 me
#
javascript1me()
{
$ECHO "\n\n-----------------------------------------"
$ECHO "\n----------- me-page ---------------------"
$ECHO "\n-----------------------------------------"
filename="$THEDIR/me/me.html"
assert 0 "test -r $filename -a -f $filename" "Me file is not readable. $filename"
url="$SERVERURL/~$THEUSER/$BASEDIR/$PROJECT"
$ECHO "\nLink to me-page: $url/me/me.html"
filename="$THEDIR/me/redovisning.html"
assert 0 "test -r $filename -a -f $filename" "Redovisning file is not readable. $filename"
url="$SERVERURL/~$THEUSER/$BASEDIR/$PROJECT"
$ECHO "\nLink to redovisning-page: $url/me/redovisning.html"
$ECHO "\nPress enter to continue..."
read void
}
#
# Test javascript1 sandbox
#
javascript1sandbox()
{
label=${2:-"sandbox"}
$ECHO "\n\n-----------------------------------------"
$ECHO "\n----------- $label -------------------"
$ECHO "\n-----------------------------------------"
target="$1"
dirname="$THEDIR/$target"
assert 0 "test -r $dirname -a -d $dirname" "Directory $dirname not readable."
filename="$THEDIR/$target/index.html"
assert 0 "test -r $filename -a -f $filename" "Index file is not readable. $filename"
url="$SERVERURL/~$THEUSER/$BASEDIR/$PROJECT/$target"
$ECHO "\nLink to lab-page: $url"
$ECHO "\nOpen files in an editor:"
$ECHO "\n$EDITOR $THEDIR/$target/"
$ECHO "\n$EDITOR $THEDIR/$target/js/main.js"
$ECHO "\nPress enter to continue..."
read void
}
#
# Test javascript1 flag
#
javascript1flag()
{
label=${2:-"flag"}
$ECHO "\n\n-----------------------------------------"
$ECHO "\n----------- $label ------------"
$ECHO "\n-----------------------------------------"
target="$1"
dirname="$THEDIR/$target"
assert 0 "test -r $dirname -a -d $dirname" "Directory $dirname not readable."
filename="$THEDIR/$target/index.html"
assert 0 "test -r $filename -a -f $filename" "Index file is not readable. $filename"
url="$SERVERURL/~$THEUSER/$BASEDIR/$PROJECT/$target"
$ECHO "\nLink to lab-page: $url"
$ECHO "\nOpen files in an editor:"
$ECHO "\n$EDITOR $THEDIR/$target/"
$ECHO "\n$EDITOR $THEDIR/$target/js/main.js"
$ECHO "\nPress enter to continue..."
read void
}
#
# Test javascript1 baddie
#
javascript1baddie()
{
$ECHO "\n\n-----------------------------------------"
$ECHO "\n----------- baddie ---------------------"
$ECHO "\n-----------------------------------------"
target="$1"
dirname="$THEDIR/$target"
assert 0 "test -r $dirname -a -d $dirname" "Directory $dirname not readable."
filename="$THEDIR/$target/index.html"
assert 0 "test -r $filename -a -f $filename" "Index file is not readable. $filename"
url="$SERVERURL/~$THEUSER/$BASEDIR/$PROJECT/$target"
$ECHO "\nLink to lab-page: $url"
$ECHO "\nOpen files in an editor:"
$ECHO "\n$EDITOR $THEDIR/$target/"
$ECHO "\n$EDITOR $THEDIR/$target/js/main.js"
$ECHO "\nPress enter to continue..."
read void
}
#
# Test javascript1 lab
#
javascript1lab()
{
$ECHO "\n\n-----------------------------------------"
$ECHO "\n----------- lab ----------------"
$ECHO "\n-----------------------------------------"
target="$1"
dirname="$THEDIR/$target"
assert 0 "test -r $dirname -a -d $dirname" "Directory $dirname not readable."
filename="$THEDIR/$target/answer.html"
assert 0 "test -r $filename -a -f $filename" "Answer file is not readable. $filename"
url="$SERVERURL/~$THEUSER/$BASEDIR/$PROJECT/$target"
$ECHO "\nLink to lab-page: $url/answer.html"
$ECHO "\nOpen files in an editor:"
$ECHO "\n$EDITOR $THEDIR/$target/"
$ECHO "\n$EDITOR $THEDIR/$target/answer.js"
$ECHO "\nPress enter to continue..."
read void
}
#
# Test javascript1 kmom01
#
javascript1kmom01()
{
$ECHO "\n\n-----------------------------------------"
$ECHO "\n----------- javascript1 kmom01 ------------"
$ECHO "\n-----------------------------------------"
THEKMOM="kmom01"
THETARGET="me/$THEKMOM"
checkKmomDir "$THETARGET"
validateKmom "$THEKMOM"
javascript1me
javascript1sandbox "$THETARGET/sandbox"
}
#
# Test javascript1 kmom02
#
javascript1kmom02()
{
$ECHO "\n\n-----------------------------------------"
$ECHO "\n----------- javascript1 kmom02 ------------"
$ECHO "\n-----------------------------------------"
THEKMOM="kmom02"
THETARGET="me/$THEKMOM"
checkKmomDir "$THETARGET"
publishKmom "$THETARGET"
validateKmom "$THEKMOM"
javascript1me
javascript1lab "$THETARGET/lab1"
javascript1flag "$THETARGET/flag1"
javascript1baddie "$THETARGET/baddie1"
}
#
# Test javascript1 kmom03
#
javascript1kmom03()
{
$ECHO "\n\n-----------------------------------------"
$ECHO "\n----------- javascript1 kmom03 ------------"
$ECHO "\n-----------------------------------------"
THEKMOM="kmom03"
THETARGET="me/$THEKMOM"
checkKmomDir "$THETARGET"
publishKmom "$THETARGET"
validateKmom "$THEKMOM"
javascript1me
javascript1lab "$THETARGET/lab2"
javascript1flag "$THETARGET/flag2"
javascript1baddie "$THETARGET/baddie2"
}
#
# Test javascript1 kmom04
#
javascript1kmom04()
{
$ECHO "\n\n-----------------------------------------"
$ECHO "\n----------- javascript1 kmom04 ------------"
$ECHO "\n-----------------------------------------"
THEKMOM="kmom04"
THETARGET="me/$THEKMOM"
checkKmomDir "$THETARGET"
publishKmom "$THETARGET"
validateKmom "$THEKMOM"
javascript1me
javascript1lab "$THETARGET/lab3"
javascript1lab "$THETARGET/lab4"
javascript1flag "$THETARGET/flag3"
javascript1baddie "$THETARGET/baddie3"
}
#
# Test javascript1 kmom04
#
javascript1kmom05()
{
$ECHO "\n\n-----------------------------------------"
$ECHO "\n----------- javascript1 kmom05 ------------"
$ECHO "\n-----------------------------------------"
THEKMOM="kmom05"
THETARGET="me/$THEKMOM"
checkKmomDir "$THETARGET"
publishKmom "$THETARGET"
validateKmom "$THEKMOM"
javascript1me
javascript1sandbox "$THETARGET/lab5" "lab5"
javascript1flag "$THETARGET/flag4" "flag4"
}
# javascript1)
# FILES="me.html redovisning.html"
# KMOM01="kmom01 kmom01/sandbox"
# KMOM02="kmom02 kmom02/flag1 kmom02/lab1 kmom02/baddie1"
# KMOM03="kmom03 kmom03/flag2 kmom03/lab2 kmom03/baddie2"
# KMOM04="kmom04 kmom04/flag3 kmom04/lab3 kmom04/lab4 kmom04/baddie3"
# KMOM05="kmom05 kmom05/flag4 kmom05/lab5 kmom05/baddie4"
# KMOM06="kmom06 kmom06/flag5 kmom06/baddie5"
# KMOM10="kmom10"
#
# python)
# FILES="me.cgi me.py redovisning.cgi redovisning.py"
# KMOM01="kmom01 kmom01/hello kmom01/plane"
# KMOM02="kmom02 kmom02/marvin1 kmom02/lab1"
# KMOM03="kmom03 kmom03/marvin2 kmom03/lab2"
# KMOM04="kmom04 kmom04/marvin3 kmom04/lab3 kmom04/game1"
# KMOM05="kmom05 kmom05/marvin4 kmom05/lab4 kmom05/game2"
# KMOM06="kmom06 kmom06/marvin5 kmom06/lab5 kmom06/game3"
# KMOM10="kmom10"
#
# Perform an assert
#
assert()
{
EXPECTED=$1
TEST=$2
MESSAGE=$3
ASSERTS=$(( $ASSERTS + 1 ))
FAILED=0
sh -c "$TEST" > "$TMPFILE" 2>&1
STATUS=$?
ERROR=$(cat $TMPFILE)
if [ \( ! $STATUS -eq $EXPECTED \) -o \( ! -z "$ERROR" \) ]; then
FAULTS=$(( $FAULTS + 1 ))
MSG="\n\n$MSG_FAILED $MESSAGE\n"
$ECHO "$MSG"
[ -z "$ERROR" ] || $ECHO "$ERROR\n\n"
FAILED=1
fi
return $FAILED
}
#
# Main
#
if [ $# != 3 ]
then
:
#$ECHO
#printUsage
fi
# Get settings from config-file
. "./.dbwebb.config"
# Get options
while getopts ":hinrv" opt
do
case $opt in
(h)
printUsage
exit 0
;;
(v)
$ECHO "$VERSION\n"
exit 0
;;
\?)
$ECHO "\nInvalid option: -$OPTARG" >&2
$ECHO "\n"
$ECHO "\nUse the following to get help."
$ECHO "\ndbwebb-validate -h"
$ECHO "\n"
$ECHO "\n"
exit 1
;;
esac
done
shift $((OPTIND - 1))
# Get path to dir to check
FAULTS=0
KMOM=$1
THEUSER=${2:=$USER}
THEDIR=`eval echo "~$THEUSER/$BASEDIR/$PROJECT"`
checkEnvironment
# Execute command
case "$KMOM" in
kmom01) "${COURSE}${KMOM}" ;;
kmom02) "${COURSE}${KMOM}" ;;
kmom03) "${COURSE}${KMOM}" ;;
kmom04) "${COURSE}${KMOM}" ;;
kmom05) "${COURSE}${KMOM}" ;;
kmom06) "${COURSE}${KMOM}" ;;
kmom10) "${COURSE}${KMOM}" ;;
*)
$ECHO "\n$MSG_FAILED Invalid kmom: $KMOM"
printUsage
exit 1
;;
esac
# Clean up and output results
if [ $FAULTS -gt 0 ]
then
$ECHO "\n\n$MSG_FAILED"
STATUS=1
$ECHO " Tests: $TESTS Asserts: $ASSERTS Faults: $FAULTS\n"
exit $STATUS
fi
$ECHO "\n\n$MSG_OK"
$ECHO " Tests: $TESTS Asserts: $ASSERTS Faults: $FAULTS\n"
exit 0