]> git.lyx.org Git - lyx.git/commitdiff
Added the possibility to build arbitrary scripts (*-in.sh) as tests. They are all...
authorTommaso Cucinotta <tommaso@lyx.org>
Sun, 3 Jul 2011 17:00:18 +0000 (17:00 +0000)
committerTommaso Cucinotta <tommaso@lyx.org>
Sun, 3 Jul 2011 17:00:18 +0000 (17:00 +0000)
together with the others when typing 'make', and also they can be selectively
launched by using: ./run-tests.sh filename-in.sh.

git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@39241 a592a061-630c-0410-9148-cb99ea01b6c8

development/autotests/README
development/autotests/export-in.sh [new file with mode: 0755]
development/autotests/run-tests.sh

index 177cfabf2bda38703e894ad6aa579a0f62e96505..bd28751216f6657fb94e8b88cde1201fa362e63f 100644 (file)
@@ -58,6 +58,19 @@ Each test-case script should be named as xxx-in.txt. The syntax of the
 script is described in detail in the sample test-case script
 hello-world-in.txt.
 
+Alternatively, a test-case can be an arbitrary executable script with
+name ending in "-in.sh", that is launched inside a dedicated folder,
+and to which the variables LYX_ROOT and LYX_EXE are exported, so that
+you can easily reference the root LyX sources folder and the program
+executable. The test script needs to complete with a no-error return
+value (zero), otherwise a failure is reported (see export-in.sh for
+an example).
+
+Whenever LyX is launched, in both cases, the LYX_USERDIR variable is
+set to autotests/out-home, in order to rely on clean preferences
+settings (use make clean or make without arguments in order to let
+that folder be created again).
+
 
 TODO
 ----------------------------------------------------------------------
diff --git a/development/autotests/export-in.sh b/development/autotests/export-in.sh
new file mode 100755 (executable)
index 0000000..275ee08
--- /dev/null
@@ -0,0 +1,21 @@
+#!/bin/bash
+
+failed=0
+for format in xhtml lyx16x; do
+    for f in $LYX_ROOT/lib/doc/*lyx; do
+        if $LYX_EXE -e $format $f >> lyx-log.txt 2>&1; then
+            echo $format $f TEST_GOOD
+        else
+            echo $format $f TEST_BAD
+           failed=$[$failed+1];
+        fi;
+    done;
+done
+
+if [ $failed -eq 0 ]; then
+    echo "All formats SUCCESSFUL"
+    exit 0;
+else
+    echo "There were $failed FAILED format tests"
+    exit -1;
+fi
index 80201083a102f9f0dfa79cad25dd82ad3c04bf4c..f61cc6e12805d0a466769ee4379ccd1b1b7dc0b4 100755 (executable)
@@ -4,7 +4,8 @@
 # Tests are identified as having a file name of *-in.txt
 # For failed tests, the collected output is kept in the corresponding folder
 
-export LYX_EXE=../../../src/lyx
+export LYX_ROOT=../../..
+export LYX_EXE=$LYX_ROOT/src/lyx
 
 if [ "$XVKBD_HACKED" != "" ]; then
     export XVKBD_EXE=${XVKBD:-./xvkbd/xvkbd};
@@ -38,7 +39,7 @@ if [ ! -d ../../locale ]; then
 fi
 
 if [ "$#" -eq 0 ]; then
-    TESTS=$(ls *-in.txt | sed -e 's/hello-world-in.txt\|first-time-in.txt//')
+    TESTS=$(ls *-in.txt *-in.sh | sed -e 's/hello-world-in.txt\|first-time-in.txt//')
     rm -rf out-*;
 else
     TESTS=$*
@@ -52,7 +53,7 @@ if [ ! -d $LYX_HOME ]; then
 #    cp preferences $LYX_USERDIR
     cd $LYX_HOME
     echo "Initializing testing environment . . ."
-    if ! ../single-test.sh "../first-time-in.txt" > keytest-log.txt 2>&1; then
+    if ! ../single-test.sh "../first-time-in.txt" > test-log.txt 2>&1; then
        echo "Some error occurred: check $(pwd)"
        exit -1;
     fi
@@ -63,18 +64,34 @@ fi
 ./stop_autotests.tcl &
 pid=$!
 
+function stop_button() {
+    kill $pid
+    wait $pid > /dev/null 2>&1
+}
+
 echo "Running test cases . . ."
 failed=0
-for t in $(echo "$TESTS" | sed -e 's/-in.txt//g'); do
-    printf "%40s: " $t
-    if [ ! -f "$t-in.txt" ]; then
-       echo "ERROR: File not found: $t-in.txt"
+for tf in $(echo "$TESTS"); do
+    t=$(echo $tf | sed -e 's/-in.txt//g' | sed -e 's/-in.sh//g')
+    printf "%40s: " $tf
+    if [ -f "$t-in.txt" ]; then
+       cmd="../single-test.sh ../$t-in.txt";
+    elif [ -f "$t-in.sh" ]; then
+       if [ ! -x "$t-in.sh" ]; then
+           echo "ERROR: $t-in.sh is not executable"
+           stop_button
+           exit -1;
+       fi
+       cmd="../$tf";
+    else
+       echo "ERROR: File not found: $t-in.txt or $t-in.sh"
+       stop_button
        exit -1;
     fi
     rm -rf "out-$t"
     mkdir "out-$t"
     cd "out-$t"
-    if ../single-test.sh "../$t-in.txt" > keytest-log.txt 2>&1; then
+    if "$cmd" > test-log.txt 2>&1; then
        echo Ok
        cd ..
        rm -rf "out-$t";
@@ -85,8 +102,7 @@ for t in $(echo "$TESTS" | sed -e 's/-in.txt//g'); do
     fi;
 done
 
-kill $pid
-wait $pid > /dev/null 2>&1
+stop_button
 
 echo
 if [ $failed -eq 0 ]; then