There was only one problem. It works on ruby and rails only, not on groovy or grails. I assume you could set up Hudson or whatever to do something similar, but for small projects I need something much simpler than that.
So I wrote a tiny bash script that does kind of the same as autotest, but on a grails project. It runs all tests whenever some source change, and keeps nagging you with this message if it fails:
This notification will stick as long as the tests fails, and change into this when tests succeededs:
This notifiction will fade away.
Growl is used for notification. Here´s the script:
#!/bin/bash
#
# Run grails tests continously.
#
# Author trygve.amundsen@gmail.com
#
logfile=.grailsAutoTest.log
last_filestatus=""
imagesDir=`dirname $0`/images
curdir=`pwd`
project=`basename $curdir`
echo "Starting autotest for $project"
while true; do
current_filestatus=`ls -lR grails-app lib scripts src test web-app/js web-app/css \
*GrailsPlugin.groovy | md5`
if [ "$current_filestatus" != "$last_filestatus" ]
then
last_filestatus=$current_filestatus
echo -n "Running tests..."
grails test-app > $logfile
tail -3 $logfile | grep -q 'Tests PASSED'
if [ $? -eq 0 ]
then
echo "Tests PASSED - waiting for changes..."
growlnotify -m "Grails AutoTests succeeded" -t "Test $project" \
-d "$project" --image $imagesDir/succeed.jpg
else
last_filestatus="failed"
tail -3 $logfile | head -1
growlnotify -s -m "Grails AutoTests failed" -t "Test $project" \
-d "$project" --image $imagesDir/fail-icon.png
fi
fi
sleep 2
done
Maybe I'll come back with at groovy version of the script later on.


No comments:
Post a Comment