cryptonas/bin/do_unittests.sh

111 lines
2.7 KiB
Bash
Executable file

#!/bin/sh
#do_unittests.sh
#
# Run this script _before_ you do a commit and fix errors before uploading.
#
# preparations:
# - add the following lines to /etc/super.tab:
# :global_options relative_path=y
# CryptoBoxRootActionsLocal ./CryptoBoxRootActions cryptobox
#
GETOPT="getopt"
BASE_DIR=$(cd "$(dirname $0)/.."; pwd)
export PYTHONPATH=$BASE_DIR/src
disable_filecheck()
{
sed -i "s/^OVERRIDE_FILECHECK = .*$/OVERRIDE_FILECHECK = True/" "$BASE_DIR/bin/CryptoBoxRootActions"
}
enable_filecheck()
{
sed -i "s/^OVERRIDE_FILECHECK = .*$/OVERRIDE_FILECHECK = False/" "$BASE_DIR/bin/CryptoBoxRootActions"
}
run_tests()
{
# chdir to 'bin' - all config settings depend on this
cd "${BASE_DIR}/bin"
disable_filecheck
if [ -n "$files" ] ; then # run only the specified tests
## The use of "eval", plus not using double quotes for $a
## below are required because getopt already puts argument
## names in single-quotes, and the script will not work with
## both sets of quotes.
for a in $files ; do
eval testoob -v $a
done
else
# run all tests
for a in ${BASE_DIR}/src/cryptobox/tests/test.*.py ; do
testoob -v "$a"
done
fi
enable_filecheck
return 0
}
usage()
{
echo -e "Usage:"
echo -e "\tbin/do_unittests.sh --clobber=foo [ files... ]"
echo -e "\t"
echo -e "\t(Where \"files\", if given, are absolute pathnames)"
echo -e "\t(Example: bin/do_unittests.sh --clobber=sdX)"
echo -e "***Warning: All data on /dev/foo will be DESTROYED!"
echo -e "\t"
exit 1
}
##### main() section #####
## Declare global variables with empty contents
CNAS_UTEST_CLOBBER=""
files=""
clobber_dev_arg=""
## Use the getopt command line utility to simplify parsing
getopt_str=$(${GETOPT} -o c: --long clobber: -n do_unittests.sh -- "$@")
#echo $getopt_str
## Assign the tokens to an array
getopt_arr=($getopt_str)
## Note: Output of getopt in this script should look like:
## --clobber 'sdX' -- file1 file2 file3 ...
## Read the following code with that in mind.
## If there is exactly one option, and it has an argument
if [ "${getopt_arr[0]}" == "--clobber" ] \
&& [ "${getopt_arr[2]}" == "--" ]; then
clobber_dev_arg="${getopt_arr[1]}"
## Strip any single quotes from the device name
clobber_dev_arg="${clobber_dev_arg//\'/}"
#echo ${clobber_dev_arg}
## Grab the part of $getopt_str that follows "--"
files="`expr match \"${getopt_str}\" '.*--\(.*\)'`"
#echo $files
if [ -b "/dev/${clobber_dev_arg}" ]; then
export CNAS_UTEST_CLOBBER="${clobber_dev_arg}"
##Run the tests using testoob...
run_tests
else
echo "Error: /dev/${clobber_dev_arg} is not a valid block device"
exit 2
fi
else
usage
fi