X-Git-Url: http://wagner.pp.ru/gitweb/?a=blobdiff_plain;f=tcl_tests%2Fruntest.sh;h=9969102d711c1935929b1e75441876cdd1f5aa5d;hb=bd6c4f8c5c8a087ce0ea65c3dc5ee38b38b8802c;hp=0589f78d29818998103602cda96db3c7a69202a0;hpb=10576d5b3387fdb1f014e60a9c2bda97dbe6a593;p=openssl-gost%2Fengine.git diff --git a/tcl_tests/runtest.sh b/tcl_tests/runtest.sh index 0589f78..9969102 100644 --- a/tcl_tests/runtest.sh +++ b/tcl_tests/runtest.sh @@ -12,17 +12,26 @@ # Пререквизиты, которые должны быть установлены на машине: # 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 @@ -40,7 +49,7 @@ fi if [ -z "$OPENSSL_APP" ]; then echo "openssl not found" exit 1 -else +else echo "Using $OPENSSL_APP as openssl" fi @@ -67,14 +76,23 @@ else 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 @@ -87,7 +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 cmsenc pkcs12 nopath ocsp ts ssl smime_io cms_io smimeenc_io cmsenc_io" + 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/'` ;; *) @@ -112,32 +130,45 @@ if [ "$*" ]; then 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 if false; then # ignore some tests for a time -: ${OPENSSL_CONF:=$PWD/openssl-gost.cnf} -ALG_LIST="rsa:1024 gost2001:XA gost2012_256:XA gost2012_512:A" $TCLSH ssl.try -clientconf $OPENSSL_CONF || fail=1 -ALG_LIST="rsa:1024 gost2001:XA gost2012_256:XA gost2012_512:A" $TCLSH ssl.try -serverconf $OPENSSL_CONF || fail=1 - +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 @@ -155,12 +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