diff options
Diffstat (limited to 'security/nss/tests/gtests')
-rwxr-xr-x | security/nss/tests/gtests/gtests.sh | 107 |
1 files changed, 107 insertions, 0 deletions
diff --git a/security/nss/tests/gtests/gtests.sh b/security/nss/tests/gtests/gtests.sh new file mode 100755 index 0000000000..4e04b6100c --- /dev/null +++ b/security/nss/tests/gtests/gtests.sh @@ -0,0 +1,107 @@ +#! /bin/bash +# +# 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/. + +######################################################################## +# +# similar to all.sh this file runs drives gtests. +# +# needs to work on all Unix and Windows platforms +# +# special strings +# --------------- +# FIXME ... known problems, search for this string +# NOTE .... unexpected behavior +# +######################################################################## + +############################## gtest_init ############################## +# local shell function to initialize this script +######################################################################## +gtest_init() +{ + cd "$(dirname "$1")" + pwd + SOURCE_DIR="$PWD"/../.. + + if [ -z "${INIT_SOURCED}" -o "${INIT_SOURCED}" != "TRUE" ]; then + cd ../common + . ./init.sh + fi + + SCRIPTNAME=gtests.sh + . "${QADIR}"/common/certsetup.sh + + if [ -z "${CLEANUP}" ] ; then # if nobody else is responsible for + CLEANUP="${SCRIPTNAME}" # cleaning this script will do it + fi + + mkdir -p "${GTESTDIR}" + cd "${GTESTDIR}" +} + +########################## gtest_start ############################# +# Local function to actually start the test +#################################################################### +gtest_start() +{ + echo "gtests: ${GTESTS}" + for i in ${GTESTS}; do + if [ ! -f "${BINDIR}/$i" ]; then + html_unknown "Skipping $i (not built)" + continue + fi + DIR="${GTESTDIR}/$i" + html_head "$i" + if [ ! -d "$DIR" ]; then + mkdir -p "$DIR" + echo "${BINDIR}/certutil" -N -d "$DIR" --empty-password 2>&1 + "${BINDIR}/certutil" -N -d "$DIR" --empty-password 2>&1 + + PROFILEDIR="$DIR" make_cert dummy p256 sign + fi + pushd "$DIR" + GTESTREPORT="$DIR/report.xml" + PARSED_REPORT="$DIR/report.parsed" + # The mozilla::pkix gtests cause an ODR violation that we ignore. + # See bug 1588567. + if [ "$i" = "mozpkix_gtest" ]; then + EXTRA_ASAN_OPTIONS="detect_odr_violation=0" + fi + # NSS CI sets a lower max for PBE iterations, otherwise cert.sh + # is very slow. Unset this maxiumum for softoken_gtest, as it + # needs to check the default value. + if [ "$i" = "softoken_gtest" ]; then + OLD_MAX_PBE_ITERATIONS=$NSS_MAX_MP_PBE_ITERATION_COUNT + unset NSS_MAX_MP_PBE_ITERATION_COUNT + fi + echo "executing $i" + ASAN_OPTIONS="$ASAN_OPTIONS:$EXTRA_ASAN_OPTIONS" "${BINDIR}/$i" \ + -s "${SOURCE_DIR}/gtests/$i" \ + -d "$DIR" -w --gtest_output=xml:"${GTESTREPORT}" \ + --gtest_filter="${GTESTFILTER:-*}" + html_msg $? 0 "$i run successfully" + if [ "$i" = "softoken_gtest" ]; then + export NSS_MAX_MP_PBE_ITERATION_COUNT=$OLD_MAX_PBE_ITERATIONS + fi + + echo "test output dir: ${GTESTREPORT}" + echo "processing the parsed report" + gtest_parse_report ${GTESTREPORT} + popd + done +} + +gtest_cleanup() +{ + html "</TABLE><BR>" + . "${QADIR}"/common/cleanup.sh +} + +################## main ################################################# +GTESTS="${GTESTS:-base_gtest certhigh_gtest certdb_gtest der_gtest pk11_gtest util_gtest freebl_gtest softoken_gtest sysinit_gtest smime_gtest mozpkix_gtest}" +gtest_init "$0" +gtest_start +gtest_cleanup |