mirror of
https://github.com/rn10950/RetroZilla.git
synced 2024-11-15 20:10:33 +01:00
159 lines
5.5 KiB
Bash
159 lines
5.5 KiB
Bash
#! /bin/sh
|
|
#
|
|
# This Source Code Form is subject to the terms of the Mozilla Public
|
|
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
|
|
|
########################################################################
|
|
#
|
|
# mozilla/security/nss/tests/multinit/multinit.sh
|
|
#
|
|
# Script to test NSS multinit
|
|
#
|
|
# needs to work on all Unix and Windows platforms
|
|
#
|
|
# special strings
|
|
# ---------------
|
|
# FIXME ... known problems, search for this string
|
|
# NOTE .... unexpected behavior
|
|
#
|
|
########################################################################
|
|
|
|
############################## multinit_init ##############################
|
|
# local shell function to initialize this script
|
|
########################################################################
|
|
multinit_init()
|
|
{
|
|
SCRIPTNAME=multinit.sh # sourced - $0 would point to all.sh
|
|
|
|
if [ -z "${CLEANUP}" ] ; then # if nobody else is responsible for
|
|
CLEANUP="${SCRIPTNAME}" # cleaning this script will do it
|
|
fi
|
|
|
|
if [ -z "${INIT_SOURCED}" -o "${INIT_SOURCED}" != "TRUE" ]; then
|
|
cd ../common
|
|
. ./init.sh
|
|
fi
|
|
if [ ! -r $CERT_LOG_FILE ]; then # we need certificates here
|
|
cd ../cert
|
|
. ./cert.sh
|
|
fi
|
|
SCRIPTNAME=multinit.sh
|
|
|
|
html_head "MULTI Tests"
|
|
|
|
grep "SUCCESS: SMIME passed" $CERT_LOG_FILE >/dev/null || {
|
|
Exit 11 "Fatal - S/MIME of cert.sh needs to pass first"
|
|
}
|
|
|
|
# set up our directories
|
|
MULTINITDIR=${HOSTDIR}/multinit
|
|
MULTINITDIR_1=${MULTINITDIR}/dir1
|
|
MULTINITDIR_2=${MULTINITDIR}/dir2
|
|
MULTINITDIR_3=${MULTINITDIR}/dir3
|
|
R_MULINITDIR=../multinit
|
|
R_MULTINITDIR_1=${R_MULTINITDIR}/dir1
|
|
R_MULTINITDIR_2=${R_MULTINITDIR}/dir2
|
|
R_MULTINITDIR_3=${R_MULTINITDIR}/dir3
|
|
# first create them all
|
|
mkdir -p ${MULTINITDIR}
|
|
mkdir -p ${MULTINITDIR_1}
|
|
mkdir -p ${MULTINITDIR_2}
|
|
mkdir -p ${MULTINITDIR_3}
|
|
# now copy them fro alice, bob, and dave
|
|
cd ${MULTINITDIR}
|
|
cp ${P_R_ALICEDIR}/* ${MULTINITDIR_1}/
|
|
cp ${P_R_BOBDIR}/* ${MULTINITDIR_2}/
|
|
cp ${P_R_DAVEDIR}/* ${MULTINITDIR_3}/
|
|
# finally delete the RootCerts module to keep the certificate noice in the
|
|
# summary lines down
|
|
echo | modutil -delete RootCerts -dbdir ${MULTINITDIR_1}
|
|
echo | modutil -delete RootCerts -dbdir ${MULTINITDIR_2}
|
|
echo | modutil -delete RootCerts -dbdir ${MULTINITDIR_3}
|
|
MULTINIT_TESTS=${QADIR}/multinit/multinit.txt
|
|
}
|
|
|
|
|
|
############################## multinit_main ##############################
|
|
# local shell function to test basic signed and enveloped messages
|
|
# from 1 --> 2"
|
|
########################################################################
|
|
multinit_main()
|
|
{
|
|
html_head "Multi init interface testing"
|
|
exec < ${MULTINIT_TESTS}
|
|
while read order commands shutdown_type dirs readonly testname
|
|
do
|
|
if [ "$order" != "#" ]; then
|
|
read tag expected_result
|
|
|
|
# handle the case where we expect different results based on
|
|
# the database type.
|
|
if [ "$tag" != "all" ]; then
|
|
read tag2 expected_result2
|
|
if [ "$NSS_DEFAULT_DB_TYPE" == "$tag2" ]; then
|
|
expected_result=$expected_result2
|
|
fi
|
|
fi
|
|
|
|
# convert shutdown type to option flags
|
|
shutdown_command="";
|
|
if [ "$shutdown_type" == "old" ]; then
|
|
shutdown_command="--oldStype"
|
|
fi
|
|
|
|
# convert read only to option flags
|
|
ro_command="";
|
|
case $readonly in
|
|
all) ro_command="--main_readonly --lib1_readonly --lib2_readonly";;
|
|
libs) ro_command="--lib1_readonly --lib2_readonly";;
|
|
main) ro_command="--main_readonly";;
|
|
lib1) ro_command="--lib1_readonly";;
|
|
lib2) ro_command="--lib2_readonly";;
|
|
none) ;;
|
|
*) ;;
|
|
esac
|
|
|
|
# convert commands to option flags
|
|
main_command=`echo $commands | sed -e 's;,.*$;;'`
|
|
lib1_command=`echo $commands | sed -e 's;,.*,;+&+;' -e 's;^.*+,;;' -e 's;,+.*$;;'`
|
|
lib2_command=`echo $commands | sed -e 's;^.*,;;'`
|
|
|
|
# convert db's to option flags
|
|
main_db=`echo $dirs | sed -e 's;,.*$;;'`
|
|
lib1_db=`echo $dirs | sed -e 's;,.*,;+&+;' -e 's;^.*+,;;' -e 's;,+.*$;;'`
|
|
lib2_db=`echo $dirs | sed -e 's;^.*,;;'`
|
|
|
|
# show us the command we are executing
|
|
echo ${PROFILETOOL} ${BINDIR}/multinit --order $order --main_command $main_command --lib1_command $lib1_command --lib2_command $lib2_command $shutdown_command --main_db $main_db --lib1_db $lib1_db --lib2_db $lib2_db $ro_command --main_token_name "Main" --lib1_token_name "Lib1" --lib2_token_name "Lib2" --verbose --summary
|
|
|
|
# execute the command an collect the result. Most of the user
|
|
# visible output goes to stderr, so it's not captured by the pipe
|
|
actual_result=`${PROFILETOOL} ${BINDIR}/multinit --order $order --main_command $main_command --lib1_command $lib1_command --lib2_command $lib2_command $shutdown_command --main_db $main_db --lib1_db $lib1_db --lib2_db $lib2_db $ro_command --main_token_name "Main" --lib1_token_name "Lib1" --lib2_token_name "Lib2" --verbose --summary | grep "^result=" | sed -e 's;^result=;;'`
|
|
|
|
# show what we got and what we expected for diagnostic purposes
|
|
echo "actual = |$actual_result|"
|
|
echo "expected = |$expected_result|"
|
|
test "$actual_result" == "$expected_result"
|
|
html_msg $? 0 "$testname"
|
|
fi
|
|
done
|
|
}
|
|
|
|
############################## multinit_cleanup ###########################
|
|
# local shell function to finish this script (no exit since it might be
|
|
# sourced)
|
|
########################################################################
|
|
multinit_cleanup()
|
|
{
|
|
html "</TABLE><BR>"
|
|
cd ${QADIR}
|
|
. common/cleanup.sh
|
|
}
|
|
|
|
################## main #################################################
|
|
|
|
multinit_init
|
|
multinit_main
|
|
multinit_cleanup
|