[PATCH 3/3] Allow passing kickstart tests to be run on the command line.
Chris Lumens
clumens at redhat.com
Thu May 7 17:41:26 UTC 2015
This makes it way easier to just run a single test - you simply provide
it as a command line argument. If no tests are given as arguments, it
defaults to using find as before.
This also involved reorganizing command line processing a bit to also let it
accept the same command line arguments as run_one_ks.sh does.
---
tests/kickstart_tests/run_kickstart_tests.sh | 61 ++++++++++++++++++++--------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/tests/kickstart_tests/run_kickstart_tests.sh b/tests/kickstart_tests/run_kickstart_tests.sh
index 61350f7..169ef68 100755
--- a/tests/kickstart_tests/run_kickstart_tests.sh
+++ b/tests/kickstart_tests/run_kickstart_tests.sh
@@ -47,19 +47,9 @@
# The boot.iso location can come from one of two different places:
# (1) $TEST_BOOT_ISO, if this script is being called from "make check"
-# (2) The command line, if this script is being called directly.
-IMAGE=""
-if [[ "${TEST_BOOT_ISO}" != "" ]]; then
- IMAGE=${TEST_BOOT_ISO}
-elif [[ $# != 0 ]]; then
- IMAGE=$1
- shift
-fi
-
-if [[ ! -e "${IMAGE}" ]]; then
- echo "Required boot.iso does not exist; skipping."
- exit 77
-fi
+# (2) The command line, if this script is being called directly. That will
+# be checked below.
+IMAGE="${TEST_BOOT_ISO}"
# Possible values for this parameter:
# 0 - Keep nothing (the default)
@@ -67,6 +57,34 @@ fi
# 2 - Keep log files and disk images (will take up a lot of space)
KEEPIT=${KEEPIT:-0}
+while getopts ":i:k:" opt; do
+ case $opt in
+ i)
+ # If this wasn't set from the environment, set it from the command line
+ # here. If it never gets set, we'll catch that later and error out.
+ IMAGE=$OPTARG
+ ;;
+
+ k)
+ # This overrides either the $KEEPIT environment variable, or the default
+ # setting from above.
+ KEEPIT=$OPTARG
+ ;;
+
+ *)
+ echo "Usage: run_kickstart_tests.sh [-i boot.iso] [-k 0|1|2] [tests]"
+ exit 1
+ ;;
+ esac
+done
+
+if [[ ! -e "${IMAGE}" ]]; then
+ echo "Required boot.iso does not exist; skipping."
+ exit 77
+fi
+
+shift $((OPTIND - 1))
+
# This is for environment variables that parallel needs to pass to
# remote systems.
#
@@ -78,9 +96,16 @@ env_args=$(printenv | while read line; do
[[ "${v}" =~ ^KSTEST_ ]] && echo "--env ${v}"
done)
-# Round up all the kickstart tests we want to run, skipping those that are not
-# executable as well as this file itself.
-find kickstart_tests -name '*sh' -a -perm -o+x -a \! -wholename 'kickstart_tests/run_*.sh' | \
+# We get the list of tests from one of two places:
+# (1) From the command line, all the other arguments.
+# (2) From finding all scripts in kickstart_tests/ that are executable and are
+# not support files.
+if [[ $# != 0 ]]; then
+ tests="$*"
+else
+ tests=$(find kickstart_tests -name '*sh' -a -perm -o+x -a \! -wholename 'kickstart_tests/run_*.sh')
+fi
+
if [[ "$TEST_REMOTES" != "" ]]; then
_IMAGE=kickstart_tests/$(basename ${IMAGE})
@@ -107,7 +132,7 @@ if [[ "$TEST_REMOTES" != "" ]]; then
parallel --no-notice ${remote_args} \
${env_args} --jobs ${TEST_JOBS:-2} \
- sudo kickstart_tests/run_one_ks.sh -i ${_IMAGE} -k ${KEEPIT} {}
+ sudo kickstart_tests/run_one_ks.sh -i ${_IMAGE} -k ${KEEPIT} {} ::: ${tests}
rc=$?
# (3) Get all the results back from the remote systems, which will have already
@@ -134,7 +159,7 @@ if [[ "$TEST_REMOTES" != "" ]]; then
exit ${rc}
else
parallel --no-notice ${env_args} --jobs ${TEST_JOBS:-2} \
- sudo kickstart_tests/run_one_ks.sh -i ${IMAGE} -k ${KEEPIT} {}
+ sudo kickstart_tests/run_one_ks.sh -i ${IMAGE} -k ${KEEPIT} {} ::: ${tests}
# For future expansion - any cleanup code can go in between the variable
# setting and the exit, like in the other branch of the if-else above.
--
2.2.2
More information about the anaconda-patches
mailing list