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