Beef up tests to the extended header functions
[ric-plt/lib/rmr.git] / test / unit_test.ksh
index 559f7d3..8b21fee 100755 (executable)
@@ -305,21 +305,23 @@ function mk_xml {
 # -----------------------------------------------------------------------------------------------------------------
 
 # we assume that the project has been built in the ../[.]build directory
-if [[ -d ../build/lib ]]
+if [[ -d ../build ]]
 then
-       export LD_LIBRARY_PATH=../build/lib
+       export LD_LIBRARY_PATH=../build/lib:../build/lib64
 else
-       if [[ -d ../.build/lib ]]
+       if [[ -d ../.build ]]
        then
-               export LD_LIBRARY_PATH=../.build/lib
+               export LD_LIBRARY_PATH=../.build/lib:../.build/lib64
                export C_INCLUDE_PATH=../.build/include
 
        else
-               echo "[WARN] cannot find ../[.]build/lib; things might not work"
+               echo "[WARN] cannot find build directory (tried ../build and ../.build); things might not work"
                echo ""
        fi
 fi
 
+export LIBRARY_PATH=$LD_LIBRARY_PATH
+
 export C_INCLUDE_PATH="../src/rmr/common/include:$C_INCLUDE_PATH"
 
 module_cov_target=80
@@ -331,6 +333,9 @@ show_output=0                               # show output from each test execution (-S)
 quiet=0
 gen_xml=0
 replace_flags=1                                # replace ##### in gcov for discounted lines
+run_nano_tests=0
+
+export RMR_WARNING=1           # turn on warnings
 
 while [[ $1 == "-"* ]]
 do
@@ -338,8 +343,10 @@ do
                -C)     builder="$2"; shift;;           # custom build command
                -G)     builder="gmake %s";;
                -M)     builder="mk -a %s";;            # use plan-9 mk (better, but sadly not widly used)
+               -N)     run_nano_tests=1;;
 
                -c)     module_cov_target=$2; shift;;
+               -e)     capture_file=$2; >$capture_file; shift;;                # capture errors from failed tests rather than spewing on tty
                -f)     force_discounting=1;
                        trigger_discount_str="WARN|FAIL|PASS"           # check all outcomes for each module
                        ;;
@@ -389,6 +396,11 @@ then
        do
                if [[ $tfile != *"static_test.c" ]]
                then
+                       if(( ! run_nano_tests )) && [[ $tfile == *"nano"* ]]
+                       then
+                               continue
+                       fi
+       
                        flist="${flist}$tfile "
                fi
        done
@@ -427,17 +439,31 @@ do
        add_ignored_func test_nng_em.c          # the nng/nano emulated things
        for f in *_static_test.c                        # all static modules here
        do
+               if(( ! run_nano_tests )) && [[ $f == *"nano"* ]]
+               then
+                       continue
+               fi
+
                add_ignored_func $f
        done
 
        if ! ./${tfile%.c} >/tmp/PID$$.log 2>&1
        then
                echo "[FAIL] unit test failed for: $tfile"
-               if (( quiet ))
+               if [[ -n $capture_file ]] 
                then
-                       grep "^<" /tmp/PID$$.log        # in quiet mode just dump <...> messages which are assumed from the test programme not appl
+                       echo "all errors captured in $capture_file, listing only fail message on tty"
+                       echo "$tfile --------------------------------------" >>$capture_file
+                       cat /tmp/PID$$.log >>$capture_file
+                       grep "^<FAIL>" /tmp/PID$$.log
+                       echo ""
                else
-                       cat /tmp/PID$$.log
+                       if (( quiet ))
+                       then
+                               grep "^<" /tmp/PID$$.log|grep -v "^<EM>"        # in quiet mode just dump <...> messages which are assumed from the test programme not appl
+                       else
+                               cat /tmp/PID$$.log
+                       fi
                fi
                (( ut_errors++ ))                               # cause failure even if not in strict mode
                continue                                                # skip coverage tests for this