X-Git-Url: http://wagner.pp.ru/gitweb/?a=blobdiff_plain;f=tcl_tests%2Fruntest.sh;h=9ad744bf6c3315869f526e6e00950d83238fe3bf;hb=d183173c9843e827fb273fd272b4ab022d538c03;hp=a59c9461cb7abef42598eca349d3d74ee51c9b5e;hpb=3b8ddfe2f303b8931842e52bdb5c07c97042f651;p=openssl-gost%2Fengine.git diff --git a/tcl_tests/runtest.sh b/tcl_tests/runtest.sh index a59c946..9ad744b 100644 --- a/tcl_tests/runtest.sh +++ b/tcl_tests/runtest.sh @@ -1,5 +1,4 @@ #!/bin/sh -# -*- coding: cp1251 -*- # Состав набора тестов # 1. Этот скрипт @@ -13,17 +12,18 @@ # Пререквизиты, которые должны быть установлены на машине: # 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 +: ${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 +40,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,7 +65,16 @@ 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` @@ -86,6 +95,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 +113,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 +176,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