runall-memorydebugger.sh revision 1919b7e72bc43315b32f38a6f5f01e8c717907f4
1#!/bin/sh
2
3#
4# Purpose: test with and without threads, all machine configurations, pydebug,
5#          refleaks, release build and release build with valgrind.
6#
7# Synopsis: ./runall-memorydebugger.sh [--all-configs64 | --all-configs32]
8#
9# Requirements: valgrind
10#
11
12# Set additional CFLAGS for ./configure
13ADD_CFLAGS=
14
15
16CONFIGS_64="x64 uint128 ansi64 universal"
17CONFIGS_32="ppro ansi32 ansi-legacy universal"
18
19VALGRIND="valgrind --tool=memcheck --leak-resolution=high \
20          --db-attach=yes --suppressions=Misc/valgrind-python.supp"
21
22# Get args
23case $@ in
24     *--all-configs64*)
25         CONFIGS=$CONFIGS_64
26         ;;
27     *--all-configs32*)
28         CONFIGS=$CONFIGS_32
29         ;;
30     *)
31         CONFIGS="auto"
32         ;;
33esac
34
35# gmake required
36GMAKE=`which gmake`
37if [ X"$GMAKE" = X"" ]; then
38    GMAKE=make
39fi
40
41# Pretty print configurations
42print_config ()
43{
44    len=`echo $@ | wc -c`
45    margin="#%"`expr \( 74 - $len \) / 2`"s"
46
47    echo ""
48    echo "# ========================================================================"
49    printf $margin ""
50    echo $@
51    echo "# ========================================================================"
52    echo ""
53}
54
55
56cd ..
57
58# test_decimal: refleak, regular and Valgrind tests
59for args in "--without-threads" ""; do
60    for config in $CONFIGS; do
61
62        unset PYTHON_DECIMAL_WITH_MACHINE
63        libmpdec_config=$config
64        if [ X"$config" != X"auto" ]; then
65            PYTHON_DECIMAL_WITH_MACHINE=$config
66            export PYTHON_DECIMAL_WITH_MACHINE
67        else
68            libmpdec_config=""
69        fi
70
71        ############ refleak tests ###########
72        print_config "refleak tests: config=$config" $args
73        printf "\nbuilding python ...\n\n"
74
75        cd ../../
76        $GMAKE distclean > /dev/null 2>&1
77        ./configure CFLAGS="$ADD_CFLAGS" --with-pydebug $args > /dev/null 2>&1
78        $GMAKE | grep _decimal
79
80        printf "\n\n# ======================== refleak tests ===========================\n\n"
81        ./python -m test -uall -R 2:2 test_decimal
82
83
84        ############ regular tests ###########
85        print_config "regular tests: config=$config" $args
86        printf "\nbuilding python ...\n\n"
87
88        $GMAKE distclean > /dev/null 2>&1
89        ./configure CFLAGS="$ADD_CFLAGS" $args > /dev/null 2>&1
90        $GMAKE | grep _decimal
91
92        printf "\n\n# ======================== regular tests ===========================\n\n"
93        ./python -m test -uall test_decimal
94
95
96        ########### valgrind tests ###########
97        valgrind=$VALGRIND
98        case "$config" in
99            # Valgrind has no support for 80 bit long double arithmetic.
100            ppro) valgrind= ;;
101            auto) case `uname -m` in
102                      i386|i486|i586|i686) valgrind= ;;
103                  esac
104        esac
105
106        print_config "valgrind tests: config=$config" $args
107        printf "\nbuilding python ...\n\n"
108        $GMAKE distclean > /dev/null 2>&1
109        ./configure CFLAGS="$ADD_CFLAGS" --without-pymalloc $args > /dev/null 2>&1
110        $GMAKE | grep _decimal
111
112        printf "\n\n# ======================== valgrind tests ===========================\n\n"
113        $valgrind ./python -m test -uall test_decimal
114
115        cd Modules/_decimal
116    done
117done
118
119# deccheck
120cd ../../
121for config in $CONFIGS; do
122    for args in "--without-threads" ""; do
123
124        unset PYTHON_DECIMAL_WITH_MACHINE
125        if [ X"$config" != X"auto" ]; then
126            PYTHON_DECIMAL_WITH_MACHINE=$config
127            export PYTHON_DECIMAL_WITH_MACHINE
128        fi
129
130        ############ debug ############
131        print_config "deccheck: config=$config --with-pydebug" $args
132        printf "\nbuilding python ...\n\n"
133
134        $GMAKE distclean > /dev/null 2>&1
135        ./configure CFLAGS="$ADD_CFLAGS" --with-pydebug $args > /dev/null 2>&1
136        $GMAKE | grep _decimal
137
138        printf "\n\n# ========================== debug ===========================\n\n"
139        ./python Modules/_decimal/tests/deccheck.py
140
141        ########### regular ###########
142        print_config "deccheck: config=$config " $args
143        printf "\nbuilding python ...\n\n"
144
145        $GMAKE distclean > /dev/null 2>&1
146        ./configure CFLAGS="$ADD_CFLAGS" $args > /dev/null 2>&1
147        $GMAKE | grep _decimal
148
149        printf "\n\n# ======================== regular ===========================\n\n"
150        ./python Modules/_decimal/tests/deccheck.py
151
152        ########### valgrind ###########
153        valgrind=$VALGRIND
154        case "$config" in
155            # Valgrind has no support for 80 bit long double arithmetic.
156            ppro) valgrind= ;;
157            auto) case `uname -m` in
158                      i386|i486|i586|i686) valgrind= ;;
159                  esac
160        esac
161
162        print_config "valgrind deccheck: config=$config " $args
163        printf "\nbuilding python ...\n\n"
164
165        $GMAKE distclean > /dev/null 2>&1
166        ./configure CFLAGS="$ADD_CFLAGS" --without-pymalloc $args > /dev/null 2>&1
167        $GMAKE | grep _decimal
168
169        printf "\n\n# ======================== valgrind ==========================\n\n"
170        $valgrind ./python Modules/_decimal/tests/deccheck.py
171    done
172done
173
174
175
176