# Пререквизиты, которые должны быть установлены на машине:
# 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 [ -z "$OPENSSL_APP" ]; then
echo "openssl not found"
exit 1
-else
+else
echo "Using $OPENSSL_APP as openssl"
fi
[ -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
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/'`
;;
*)
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
-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
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