Fix functions for fuel installer
[doctor.git] / tests / functions-common
index db2565a..7928f20 100644 (file)
@@ -4,7 +4,7 @@
 # is_set env-var
 function is_set {
     local var=\$"$1"
-    eval "[ -n \"$var\" ]"
+    eval "[[ -n \"$var\" ]]"
 }
 
 # Prints backtrace info
@@ -41,6 +41,8 @@ function err {
 # die $LINENO "message"
 function die {
     local exitcode=$?
+    local xtrace
+    xtrace=$(set +o | grep xtrace)
     set +o xtrace
     local line=$1; shift
     if [ $exitcode == 0 ]; then
@@ -50,6 +52,7 @@ function die {
     err $line "$*"
     # Give buffers a second to flush
     sleep 1
+    $xtrace
     exit $exitcode
 }
 
@@ -70,3 +73,20 @@ function die_if_not_set {
     $xtrace
 }
 
+# Wait until the condition is met.
+# wait_until condition timeout interval
+function wait_until {
+    local condition="$1"
+    local timeout=$2
+    local interval=$3
+
+    while eval ${condition}
+    do
+        sleep ${interval}
+        timeout=$((${timeout} - ${interval}))
+        if [[ ${timeout} < 0 ]]; then
+            err $LINENO "timed out ($condition)..."
+            return 1
+        fi
+    done
+}