17db96d56Sopenharmony_ci#!/bin/sh
27db96d56Sopenharmony_ci
37db96d56Sopenharmony_ci#
47db96d56Sopenharmony_ci# Purpose: test with and without contextvar, all machine configurations, pydebug,
57db96d56Sopenharmony_ci#          refleaks, release build and release build with valgrind.
67db96d56Sopenharmony_ci#
77db96d56Sopenharmony_ci# Synopsis: ./runall-memorydebugger.sh [--all-configs64 | --all-configs32]
87db96d56Sopenharmony_ci#
97db96d56Sopenharmony_ci# Requirements: valgrind
107db96d56Sopenharmony_ci#
117db96d56Sopenharmony_ci
127db96d56Sopenharmony_ci# Set additional CFLAGS and LDFLAGS for ./configure
137db96d56Sopenharmony_ciADD_CFLAGS=
147db96d56Sopenharmony_ciADD_LDFLAGS=
157db96d56Sopenharmony_ci
167db96d56Sopenharmony_ci
177db96d56Sopenharmony_ciCONFIGS_64="x64 uint128 ansi64 universal"
187db96d56Sopenharmony_ciCONFIGS_32="ppro ansi32 ansi-legacy universal"
197db96d56Sopenharmony_ci
207db96d56Sopenharmony_ciVALGRIND="valgrind --tool=memcheck --leak-resolution=high \
217db96d56Sopenharmony_ci          --suppressions=Misc/valgrind-python.supp"
227db96d56Sopenharmony_ci
237db96d56Sopenharmony_ci# Get args
247db96d56Sopenharmony_cicase $@ in
257db96d56Sopenharmony_ci     *--all-configs64*)
267db96d56Sopenharmony_ci         CONFIGS=$CONFIGS_64
277db96d56Sopenharmony_ci         ;;
287db96d56Sopenharmony_ci     *--all-configs32*)
297db96d56Sopenharmony_ci         CONFIGS=$CONFIGS_32
307db96d56Sopenharmony_ci         ;;
317db96d56Sopenharmony_ci     *)
327db96d56Sopenharmony_ci         CONFIGS="auto"
337db96d56Sopenharmony_ci         ;;
347db96d56Sopenharmony_ciesac
357db96d56Sopenharmony_ci
367db96d56Sopenharmony_ci# gmake required
377db96d56Sopenharmony_ciGMAKE=`which gmake`
387db96d56Sopenharmony_ciif [ X"$GMAKE" = X"" ]; then
397db96d56Sopenharmony_ci    GMAKE=make
407db96d56Sopenharmony_cifi
417db96d56Sopenharmony_ci
427db96d56Sopenharmony_ci# Pretty print configurations
437db96d56Sopenharmony_ciprint_config ()
447db96d56Sopenharmony_ci{
457db96d56Sopenharmony_ci    len=`echo $@ | wc -c`
467db96d56Sopenharmony_ci    margin="#%"`expr \( 74 - $len \) / 2`"s"
477db96d56Sopenharmony_ci
487db96d56Sopenharmony_ci    echo ""
497db96d56Sopenharmony_ci    echo "# ========================================================================"
507db96d56Sopenharmony_ci    printf $margin ""
517db96d56Sopenharmony_ci    echo $@
527db96d56Sopenharmony_ci    echo "# ========================================================================"
537db96d56Sopenharmony_ci    echo ""
547db96d56Sopenharmony_ci}
557db96d56Sopenharmony_ci
567db96d56Sopenharmony_ci
577db96d56Sopenharmony_cicd ..
587db96d56Sopenharmony_ci
597db96d56Sopenharmony_ci# test_decimal: refleak, regular and Valgrind tests
607db96d56Sopenharmony_cifor args in "--without-decimal-contextvar" ""; do
617db96d56Sopenharmony_ci    for config in $CONFIGS; do
627db96d56Sopenharmony_ci
637db96d56Sopenharmony_ci        unset PYTHON_DECIMAL_WITH_MACHINE
647db96d56Sopenharmony_ci        libmpdec_config=$config
657db96d56Sopenharmony_ci        if [ X"$config" != X"auto" ]; then
667db96d56Sopenharmony_ci            PYTHON_DECIMAL_WITH_MACHINE=$config
677db96d56Sopenharmony_ci            export PYTHON_DECIMAL_WITH_MACHINE
687db96d56Sopenharmony_ci        else
697db96d56Sopenharmony_ci            libmpdec_config=""
707db96d56Sopenharmony_ci        fi
717db96d56Sopenharmony_ci
727db96d56Sopenharmony_ci        ############ refleak tests ###########
737db96d56Sopenharmony_ci        print_config "refleak tests: config=$config" $args
747db96d56Sopenharmony_ci        printf "\nbuilding python ...\n\n"
757db96d56Sopenharmony_ci
767db96d56Sopenharmony_ci        cd ../../
777db96d56Sopenharmony_ci        $GMAKE distclean > /dev/null 2>&1
787db96d56Sopenharmony_ci        ./configure CFLAGS="$ADD_CFLAGS" LDFLAGS="$ADD_LDFLAGS" --with-pydebug $args > /dev/null 2>&1
797db96d56Sopenharmony_ci        $GMAKE | grep _decimal
807db96d56Sopenharmony_ci
817db96d56Sopenharmony_ci        printf "\n\n# ======================== refleak tests ===========================\n\n"
827db96d56Sopenharmony_ci        ./python -m test -uall -R 3:3 test_decimal
837db96d56Sopenharmony_ci
847db96d56Sopenharmony_ci
857db96d56Sopenharmony_ci        ############ regular tests ###########
867db96d56Sopenharmony_ci        print_config "regular tests: config=$config" $args
877db96d56Sopenharmony_ci        printf "\nbuilding python ...\n\n"
887db96d56Sopenharmony_ci
897db96d56Sopenharmony_ci        $GMAKE distclean > /dev/null 2>&1
907db96d56Sopenharmony_ci        ./configure CFLAGS="$ADD_CFLAGS" LDFLAGS="$ADD_LDFLAGS" $args > /dev/null 2>&1
917db96d56Sopenharmony_ci        $GMAKE | grep _decimal
927db96d56Sopenharmony_ci
937db96d56Sopenharmony_ci        printf "\n\n# ======================== regular tests ===========================\n\n"
947db96d56Sopenharmony_ci        ./python -m test -uall test_decimal
957db96d56Sopenharmony_ci
967db96d56Sopenharmony_ci
977db96d56Sopenharmony_ci        ########### valgrind tests ###########
987db96d56Sopenharmony_ci        valgrind=$VALGRIND
997db96d56Sopenharmony_ci        case "$config" in
1007db96d56Sopenharmony_ci            # Valgrind has no support for 80 bit long double arithmetic.
1017db96d56Sopenharmony_ci            ppro) valgrind= ;;
1027db96d56Sopenharmony_ci            auto) case `uname -m` in
1037db96d56Sopenharmony_ci                      i386|i486|i586|i686) valgrind= ;;
1047db96d56Sopenharmony_ci                  esac
1057db96d56Sopenharmony_ci        esac
1067db96d56Sopenharmony_ci
1077db96d56Sopenharmony_ci        print_config "valgrind tests: config=$config" $args
1087db96d56Sopenharmony_ci        printf "\nbuilding python ...\n\n"
1097db96d56Sopenharmony_ci        $GMAKE distclean > /dev/null 2>&1
1107db96d56Sopenharmony_ci        ./configure CFLAGS="$ADD_CFLAGS" LDFLAGS="$ADD_LDFLAGS" --without-pymalloc $args > /dev/null 2>&1
1117db96d56Sopenharmony_ci        $GMAKE | grep _decimal
1127db96d56Sopenharmony_ci
1137db96d56Sopenharmony_ci        printf "\n\n# ======================== valgrind tests ===========================\n\n"
1147db96d56Sopenharmony_ci        $valgrind ./python -m test -uall test_decimal
1157db96d56Sopenharmony_ci
1167db96d56Sopenharmony_ci        cd Modules/_decimal
1177db96d56Sopenharmony_ci    done
1187db96d56Sopenharmony_cidone
1197db96d56Sopenharmony_ci
1207db96d56Sopenharmony_ci# deccheck
1217db96d56Sopenharmony_cicd ../../
1227db96d56Sopenharmony_cifor args in "--without-decimal-contextvar" ""; do
1237db96d56Sopenharmony_ci    for config in $CONFIGS; do
1247db96d56Sopenharmony_ci
1257db96d56Sopenharmony_ci        unset PYTHON_DECIMAL_WITH_MACHINE
1267db96d56Sopenharmony_ci        if [ X"$config" != X"auto" ]; then
1277db96d56Sopenharmony_ci            PYTHON_DECIMAL_WITH_MACHINE=$config
1287db96d56Sopenharmony_ci            export PYTHON_DECIMAL_WITH_MACHINE
1297db96d56Sopenharmony_ci        fi
1307db96d56Sopenharmony_ci
1317db96d56Sopenharmony_ci        ############ debug ############
1327db96d56Sopenharmony_ci        print_config "deccheck: config=$config --with-pydebug" $args
1337db96d56Sopenharmony_ci        printf "\nbuilding python ...\n\n"
1347db96d56Sopenharmony_ci
1357db96d56Sopenharmony_ci        $GMAKE distclean > /dev/null 2>&1
1367db96d56Sopenharmony_ci        ./configure CFLAGS="$ADD_CFLAGS" LDFLAGS="$ADD_LDFLAGS" --with-pydebug $args > /dev/null 2>&1
1377db96d56Sopenharmony_ci        $GMAKE | grep _decimal
1387db96d56Sopenharmony_ci
1397db96d56Sopenharmony_ci        printf "\n\n# ========================== debug ===========================\n\n"
1407db96d56Sopenharmony_ci        ./python Modules/_decimal/tests/deccheck.py
1417db96d56Sopenharmony_ci
1427db96d56Sopenharmony_ci        ########### regular ###########
1437db96d56Sopenharmony_ci        print_config "deccheck: config=$config" $args
1447db96d56Sopenharmony_ci        printf "\nbuilding python ...\n\n"
1457db96d56Sopenharmony_ci
1467db96d56Sopenharmony_ci        $GMAKE distclean > /dev/null 2>&1
1477db96d56Sopenharmony_ci        ./configure CFLAGS="$ADD_CFLAGS" LDFLAGS="$ADD_LDFLAGS" $args > /dev/null 2>&1
1487db96d56Sopenharmony_ci        $GMAKE | grep _decimal
1497db96d56Sopenharmony_ci
1507db96d56Sopenharmony_ci        printf "\n\n# ======================== regular ===========================\n\n"
1517db96d56Sopenharmony_ci        ./python Modules/_decimal/tests/deccheck.py
1527db96d56Sopenharmony_ci
1537db96d56Sopenharmony_ci        ########### valgrind ###########
1547db96d56Sopenharmony_ci        valgrind=$VALGRIND
1557db96d56Sopenharmony_ci        case "$config" in
1567db96d56Sopenharmony_ci            # Valgrind has no support for 80 bit long double arithmetic.
1577db96d56Sopenharmony_ci            ppro) valgrind= ;;
1587db96d56Sopenharmony_ci            auto) case `uname -m` in
1597db96d56Sopenharmony_ci                      i386|i486|i586|i686) valgrind= ;;
1607db96d56Sopenharmony_ci                  esac
1617db96d56Sopenharmony_ci        esac
1627db96d56Sopenharmony_ci
1637db96d56Sopenharmony_ci        print_config "valgrind deccheck: config=$config" $args
1647db96d56Sopenharmony_ci        printf "\nbuilding python ...\n\n"
1657db96d56Sopenharmony_ci
1667db96d56Sopenharmony_ci        $GMAKE distclean > /dev/null 2>&1
1677db96d56Sopenharmony_ci        ./configure CFLAGS="$ADD_CFLAGS" LDFLAGS="$ADD_LDFLAGS" --without-pymalloc $args > /dev/null 2>&1
1687db96d56Sopenharmony_ci        $GMAKE | grep _decimal
1697db96d56Sopenharmony_ci
1707db96d56Sopenharmony_ci        printf "\n\n# ======================== valgrind ==========================\n\n"
1717db96d56Sopenharmony_ci        $valgrind ./python Modules/_decimal/tests/deccheck.py
1727db96d56Sopenharmony_ci    done
1737db96d56Sopenharmony_cidone
1747db96d56Sopenharmony_ci
1757db96d56Sopenharmony_ci
1767db96d56Sopenharmony_ci
177