]> www.wagner.pp.ru Git - openssl-gost/engine.git/blobdiff - tcl_tests/runtest.sh
We don't want depend on spacing around equal sign
[openssl-gost/engine.git] / tcl_tests / runtest.sh
index a59c9461cb7abef42598eca349d3d74ee51c9b5e..9969102d711c1935929b1e75441876cdd1f5aa5d 100644 (file)
@@ -1,5 +1,4 @@
 #!/bin/sh
-# -*- coding: cp1251 -*-
 
 # Состав набора тестов
 # 1. Этот скрипт
 # Пререквизиты, которые должны быть установлены на машине:
 # 1. tclsh.  Может называться с версией (см. список версий ниже в цикле
 # перебора)
-# 2. ssh (что характерно, называться должен именно так). Должен быть 
+# 2. ssh (что характерно, называться должен именно так). Должен быть
 # настроен заход по ключам без пароля на lynx и все используемые эталонники.
-# Ключи этих машин должны быть в knownhosts (с полными доменными именами 
+# Ключи этих машин должны быть в knownhosts (с полными доменными именами
 # серверов, то есть lynx.lan.cryptocom.ru и т.д.)
 # 3. Под Windows скрипт выполняется в среде MinGW, при этом нужно "донастроить"
 # ssh, а именно создать в разделе реестра
 # HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
-# DWORD-ключ DisableUserTOSSetting=0 
+# DWORD-ключ DisableUserTOSSetting=0
 
 CRYPTOPACK_MAIN_VERSION=3
 
+if [ -n "$OPENSSL_LIBCRYPTO" ]; then
+    libdir=`dirname $OPENSSL_LIBCRYPTO`
+    # Linux, ELF HP-UX
+    LD_LIBRARY_PATH=${libdir}${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
+    export LD_LIBRARY_PATH
+    # MacOS X
+    DYLD_LIBRARY_PATH=${libdir}${DYLD_LIBRARY_PATH:+:${DYLD_LIBRARY_PATH}}
+    export DYLD_LIBRARY_PATH
+fi
+: ${OPENSSL_APP:=$(which openssl 2>/dev/null)}
 if [ -z "$OPENSSL_APP" ]; then
        if [ "$OS" != "Windows NT" -a "$OS" != "Windows_NT" ]; then
                if [ -x  /opt/cryptopack$CRYPTOPACK_MAIN_VERSION/bin/openssl ]; then
@@ -40,11 +49,11 @@ fi
 if [ -z "$OPENSSL_APP" ]; then
        echo "openssl not found"
        exit 1
-else 
+else
        echo "Using $OPENSSL_APP as openssl"
 fi
 
-
+: ${TCLSH:=$(which tclsh)}
 if [ -z "$TCLSH" ]; then
        for version in "" 8.4 84 8.5 85 8.6 86; do
                for command in tclsh$version; do
@@ -65,15 +74,25 @@ if [ -z "$TCLSH" ]; then
 else
        echo "Using $TCLSH as tclsh"
 fi
+TCLSH="$TCLSH -encoding utf-8"
 
+echo "PWD: $PWD"
+: ${OPENSSL_CONF:=$PWD/openssl-gost.cnf}
+echo "OPENSSL_CONF: $OPENSSL_CONF"
+export OPENSSL_CONF
+echo "ENGINE_DIR: $ENGINE_DIR"
+: ${OPENSSL_ENGINES:=$ENGINE_DIR}
+echo "OPENSSL_ENGINES: $OPENSSL_ENGINES"
+export OPENSSL_ENGINES
 APP_SUFFIX=`basename $OPENSSL_APP .exe|sed s/openssl//`
 [ -n "$OPENSSL_APP" ]&& export OPENSSL_APP
 ENGINE_NAME=`$TCLSH getengine.tcl`
 export ENGINE_NAME
-TESTDIR=`hostname`-$ENGINE_NAME
+[ -z "$TESTDIR" ] && TESTDIR=`pwd`
+TESTDIR=${TESTDIR}/`hostname`-$ENGINE_NAME
 [ -n "$APP_SUFFIX" ] && TESTDIR=${TESTDIR}-${APP_SUFFIX}
 [ -d ${TESTDIR} ] && rm -rf ${TESTDIR}
-mkdir ${TESTDIR}
+mkdir -p ${TESTDIR}
 cp oidfile ${TESTDIR}
 export TESTDIR
 
@@ -86,6 +105,7 @@ case "$ENGINE_NAME" in
                OTHER_DIR=`echo $TESTDIR |sed 's/cryptocom/gost/'`
                ;;
        gost)
+               BASE_TESTS="engine dgst mac pkcs8 enc req-genpkey req-newkey ca smime smime2 smimeenc cms cms2 cmstc262019 cmsenc pkcs12 nopath ocsp ts ssl smime_io cms_io smimeenc_io cmsenc_io"
                OTHER_DIR=`echo $TESTDIR |sed 's/gost/cryptocom/'`
                ;;
        *)
@@ -103,31 +123,52 @@ OPENSSL_DEBUG_MEMORY=on
 export OPENSSL_DEBUG_MEMORY
 
 fail=0
+if [ "$*" ]; then
+  for t do
+    $TCLSH $t.try || fail=1
+  done
+  exit $fail
+fi
 for t in $BASE_TESTS; do
-       $TCLSH $t.try || fail=1
+       if [ "$CI" ]; then
+               if $TCLSH $t.try > $TESTDIR/$t.out 2>&1; then
+                       head -1 $TESTDIR/$t.out
+               else
+                       fail=2
+                       cat $TESTDIR/$t.out
+                       echo "=== Output failures of $TESTDIR/$t.log ==="
+                       awk "/ ends failed/" RS= ORS='\n\n' $TESTDIR/$t.log |
+                               sed 's/^/\t/'
+                       echo "=== End of $TESTDIR/$t.log ==="
+                       exit 1
+               fi
+       else
+               $TCLSH $t.try || fail=3
+       fi
 done
 
-ALG_LIST="rsa:1024 gost2001:XA gost2012_256:XA gost2012_512:A" OPENSSL_CONF=`pwd`/openssl-gost.cnf $TCLSH ssl.try -clientconf `pwd`/openssl-cryptocom.cnf || fail=1
-ALG_LIST="rsa:1024 gost2001:XA gost2012_256:XA gost2012_512:A" OPENSSL_CONF=`pwd`/openssl-gost.cnf $TCLSH ssl.try -serverconf `pwd`/openssl-cryptocom.cnf || fail=1
-       
+if false; then # ignore some tests for a time
+ALG_LIST="rsa:1024 gost2001:XA gost2012_256:XA gost2012_512:A" $TCLSH ssl.try -clientconf $OPENSSL_CONF || fail=4
+ALG_LIST="rsa:1024 gost2001:XA gost2012_256:XA gost2012_512:A" $TCLSH ssl.try -serverconf $OPENSSL_CONF || fail=5
+
 for t in $PKCS7_COMPATIBILITY_TESTS; do
-       $TCLSH $t.try || fail=1
+       $TCLSH $t.try || fail=6
 done
 for t in $SERVER_TESTS; do
-       $TCLSH server.try $t || fail=1
+       $TCLSH server.try $t || fail=7
 done
 for t in $CLIENT_TESTS; do
-       $TCLSH client.try $t || fail=1
+       $TCLSH client.try $t || fail=8
 done
 if [ -n "WINCLIENT_TESTS" ]; then
        if [ -z "$CVS_RSH" ]; then
                CVS_RSH=ssh
                export CVS_RSH
-       fi      
+       fi
        for t in $WINCLIENT_TESTS; do
-               $TCLSH wcli.try $t || fail=1
+               $TCLSH wcli.try $t || fail=9
        done
-fi     
+fi
 if [ -d $OTHER_DIR ]; then
        OTHER_DIR=../${OTHER_DIR} $TCLSH interop.try
 fi
@@ -145,11 +186,12 @@ if [ -d OtherVersion ] ; then
                        echo "No GOST=providing engine found" 1>&2
                        exit 1;
        esac
-fi     
+fi
+fi # false
 $TCLSH calcstat ${TESTDIR}/stats ${TESTDIR}/test.result
 grep "leaked" ${TESTDIR}/*.log
-if [ $fail  -ne 0 ]; then 
-       echo "Some tests FAILED."
-fi     
+if [ $fail  -ne 0 ]; then
+       echo "Some tests FAILED, code $fail."
+fi
 
 exit $fail