Overview
This project provides a few Bash scripts to perform automated tests. Main features are:
- Transparently run tests under Valgrind
- Kills buggy tests after a certain timeout
- Generic
- Easy to use
- Easy to modify
You can see it in action in the tests performed here:
Installation
You can either checkout the git repository:
git clone http://piggledy.org/projects/ldstest/ldstest.git/
Or install it using the available Gentoo overlay, by emerging the ebuild dev-util/ldstest.
Documentation
Checking simple commands:
When writing test scripts, you mainly want to have an overview of what test was successful and which test was a failure. In order to do that you would use the script ldstest_check like this:
ldstest_check "Testing: ls /" 5 ls / ldstest_check "Testing: touch /" 5 touch / ldstest_check "Testing: sleep 10" 5 sleep 10
Where arguments to the ldstest_check are:
- The description of the test
- The timeout of the test
- The command to run
In case of failure the output of the command is displayed. The previous example would show:
Testing: ls / OK Testing: touch / FAILED touch / touch: setting times of `/': Permission denied Testing: sleep 10 TIMEOUT sleep 10 /home/lds/dev/ldstest/ldstest_check: line 52: 15596 Killed ldstest_log_to_file "$@"
Checking C code:
To test C code ldstest provides a ldstest_check_c command to transparently run the test under valgrind. The ldstest_check_c command exports a $STARTER environment variable that provides a helper script that will run the test under Valgrind. To use it:
ldstest_check_c "1 2 3" "Testing echo output" ./test_echo_output.sh
Where arguments to the ldstest_check are:
- The timeouts when running the test normally, the under valgrind, then under helgrind
- The description of the test
- The command to run
The test_echo_output.sh would contain :
#!/bin/bash # Check the output of "echo blah" is really blah if [ $("$STARTER" echo blah) != "blah" ] then echo "Doo!" exit 1 fi
At runtime the $STARTER variable is replaced by the correct, issuing such tests:
Testing echo output OK Valgrind check: Testing echo output OK Helgrind check: Testing echo output OK
Other options
Some options can be exported as global variables to modify the behavior of tests:
Variable | Description |
HELGRIND_OPT | Arguments passed to helgrind |
VALGRIND_OPT | Arguments passed to valgrind |