commit 3eff8aeebe96dc66cbef399e25bf29af6c90d7ce
parent 828579e10d7660155b6656f499e94119c9d8f6d9
Author: Jaromil <jaromil@dyne.org>
Date:   Fri, 14 Nov 2014 17:43:53 +0100
isolated functions to speed up test environment
Diffstat:
| M | extras/test/runtests |  |  | 115 | +++++++++++++++++++++++++++++++++++++++++++++++-------------------------------- | 
1 file changed, 69 insertions(+), 46 deletions(-)
diff --git a/extras/test/runtests b/extras/test/runtests
@@ -28,7 +28,7 @@ tt() {
 }
 
 # check for auxiliary programs
-KDF=1
+KDF=0
 STEGHIDE=1
 RESIZER=1
 command -v steghide > /dev/null || STEGHIDE=0
@@ -44,39 +44,80 @@ tests=(dig forge lock badpass open close passwd chksum bind setkey)
 { test $STEGHIDE = 1 } && { tests+=(stgin stgout stgopen stgpipe stgimpl) }
 { test $QRENCODE = 1 } && { tests+=(qrenc) }
 
-sudo rm -f /tmp/test.tomb{,.key}
+notice "Loading test suite and wiping all test.tomb* in /tmp"
+sudo rm -f /tmp/test.tomb{,.key,.new.key}
 
 
-startloops=(`sudo losetup -a |cut -d: -f1`)
+# functions that can be called singularly
 
+test-tomb-create() {
+    notice "Testing creation: dig"
 
+    tt dig -s 20 /tmp/test.tomb
 
+    { test $? = 0 } && { results+=(dig SUCCESS) }
 
-notice "Testing creation: dig"
+    notice "Testing creation: forge"
 
-tt dig -s 20 /tmp/test.tomb
+    tt --ignore-swap --unsecure-dev-mode --tomb-pwd ${dummypass} --use-urandom forge /tmp/test.tomb.key
 
-{ test $? = 0 } && { results+=(dig SUCCESS) }
+    { test $? = 0 } && { 
+        results+=(forge SUCCESS)
+        # 
+        say "Dump of clear key contents to examine them:"
+        print ${dummypass} \
+	        | gpg --batch --passphrase-fd 0 --no-tty --no-options -d /tmp/test.tomb.key \
+	        | hexdump -C
+        echo --
+    }
 
-notice "Testing creation: forge"
+    notice "Testing creation: lock"
 
-tt --ignore-swap --unsecure-dev-mode --tomb-pwd ${dummypass} --use-urandom forge /tmp/test.tomb.key
+    tt --ignore-swap --unsecure-dev-mode --tomb-pwd ${dummypass} lock /tmp/test.tomb -k /tmp/test.tomb.key
 
-{ test $? = 0 } && { 
-    results+=(forge SUCCESS)
-    # 
-    say "Dump of clear key contents to examine them:"
-    print ${dummypass} \
-	| gpg --batch --passphrase-fd 0 --no-tty --no-options -d /tmp/test.tomb.key \
-	| hexdump -C
-    echo --
+    { test $? = 0 } && { results+=(lock SUCCESS) }
 }
 
-notice "Testing creation: lock"
+test-bind-hooks() {
+    notice "Testing bind hooks"
+    tt list test
+    [[ $? = 0 ]] || {
+        tt --ignore-swap --unsecure-dev-mode --tomb-pwd ${dummypass} \
+            open /tmp/test.tomb -k /tmp/test.tomb.key }
+    rnd=$RANDOM
+    bindtest="dyne-tomb-bind-test-$rnd"
+    echo $rnd > /media/test.tomb/$bindtest
+    rm -f /media/test.tomb/bind-hooks
+    echo "$bindtest $bindtest" > /media/test.tomb/bind-hooks
+    touch $HOME/$bindtest
+    tt close test
+    tt -k /tmp/test.tomb.key --unsecure-dev-mode --tomb-pwd ${dummypass} open /tmp/test.tomb
+    rnd2=`cat $HOME/$bindtest`
+    if [ "$rnd" = "$rnd2" ]; then
+	    notice "Bind hook on file matches"
+	    results+=(bind SUCCESS)
+	    tt list test
+    else
+	    error "Bind hook on file reports incongruence"
+    fi
+    rm -f "/media/test.tomb/$bindtest"
+    tt close test
+    # Remove test file in HOME
+    rm -f "$HOME/$bindtest"
+}
 
-tt --ignore-swap --unsecure-dev-mode --tomb-pwd ${dummypass} lock /tmp/test.tomb -k /tmp/test.tomb.key
 
-{ test $? = 0 } && { results+=(lock SUCCESS) }
+startloops=(`sudo losetup -a |cut -d: -f1`)
+
+[[ $1 = "source" ]] && { return 0 }
+
+[[ $1 = "" ]] || {
+    tt ${=@}
+    return $?
+}
+
+# isolated function (also called with source)
+test-tomb-create
 
 notice "Testing open with wrong password"
 
@@ -110,7 +151,7 @@ notice "Generating content for file integrity test"
 
 tt -k /tmp/test.tomb.key --unsecure-dev-mode --tomb-pwd ${dummypassnew} open /tmp/test.tomb
 
-${T} dig -s 10 /media/test.tomb/datacheck.raw
+tt dig -s 10 /media/test.tomb/datacheck.raw
 
 crc="sha256 /media/test.tomb/datacheck.raw"
 echo "$crc" > /media/test.tomb/datacheck.sha
@@ -128,7 +169,7 @@ tt --unsecure-dev-mode close test
 
 notice "Testing contents integrity"
 
-${T} -k /tmp/test.tomb.key --unsecure-dev-mode --tomb-pwd ${dummypassnew} open /tmp/test.tomb
+tt -k /tmp/test.tomb.key --unsecure-dev-mode --tomb-pwd ${dummypassnew} open /tmp/test.tomb
 
 { test $? = 0 } && {
     
@@ -136,30 +177,11 @@ ${T} -k /tmp/test.tomb.key --unsecure-dev-mode --tomb-pwd ${dummypassnew} open /
     
     { test "$crc" = "$crc2" } && { results+=(chksum SUCCESS) }
 
+    tt close test
 }
 
-
-
-notice "Testing bind hooks"
-
-rnd=$RANDOM
-bindtest="dyne-tomb-bind-test-$rnd"
-echo $rnd > /media/test.tomb/$bindtest
-echo "$bindtestfile $bindtest" > /media/test.tomb/bind-hooks
-touch $HOME/$bindtest
-tt close test
-tt -k /tmp/test.tomb.key --unsecure-dev-mode --tomb-pwd ${dummypassnew} open /tmp/test.tomb
-rnd2=`cat $HOME/$bindtest`
-if [ "$rnd" = "$rnd2" ]; then
-	notice "Bind hook on file matches"
-	results+=(bind SUCCESS)
-	tt list test
-else
-	error "Bind hook on file reports incongruence"
-fi
-tt close test
-# Remove all test files in case some previous tests failed.
-rm -f $HOME/dyne-tomb-bind-test-* 
+# isolated function
+test-bind-hooks
 
 notice "Testing set key"
 
@@ -169,14 +191,15 @@ tt -k /tmp/test.tomb.new.key --force --unsecure-dev-mode --tomb-pwd ${dummypass}
 
 tt -k /tmp/test.tomb.new.key --unsecure-dev-mode --tomb-pwd ${dummypass} --tomb-old-pwd ${dummypassnew} setkey /tmp/test.tomb.key /tmp/test.tomb
 
+tt -k /tmp/test.tomb.new.key --unsecure-dev-mode --tomb-pwd ${dummypass} open /tmp/test.tomb
+
 if [ $? = 0 ]; then
     notice "Setkey succesfully swapped tomb key"
     results+=(setkey SUCCESS)
-    mv /tmp/test.tomb.new.key /tmp/test.tomb.key 
+    mv /tmp/test.tomb.new.key /tmp/test.tomb.key
+    tt close test
 fi
 
-
-
 { test $KDF = 1 } && { 
     
     notice "Testing KDF key"