#! /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 "
" . "${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