/[pcre]/code/trunk/maint/ManyConfigTests
ViewVC logotype

Contents of /code/trunk/maint/ManyConfigTests

Parent Directory Parent Directory | Revision Log Revision Log


Revision 835 - (hide annotations) (download)
Wed Dec 28 16:10:09 2011 UTC (16 months, 3 weeks ago) by ph10
File size: 6161 byte(s)
Rolled back trunk to r755 to prepare for merging the 16-bit branch.

1 ph10 129 #! /bin/sh
2    
3     # This is a script for the use of PCRE maintainers. It configures and rebuilds
4     # PCRE with a variety of configuration options, and in each case runs the tests
5     # to ensure that all goes well. Every possible combination would take far too
6 ph10 139 # long, so we use a representative sample. This script should be run in the
7     # PCRE source directory.
8 ph10 129
9     # Some of the tests have to be skipped when PCRE is built with non-Unix newline
10     # recognition. I am planning to reduce this as much as possible in due course.
11    
12 ph10 139
13 ph10 129 # This is in case the caller has set aliases (as I do - PH)
14    
15     unset cp ls mv rm
16    
17     # Use -v to make the output more verbose
18    
19     verbose=0
20     if [ "$1" = "-v" ] ; then verbose=1; fi
21    
22 ph10 139 # This is a temporary directory for testing out-of-line builds
23 ph10 129
24 ph10 139 tmp=/tmp/pcretesting
25    
26    
27     # This function runs a single test with the set of configuration options that
28     # are in $opts. The source directory must be set in srcdir.
29    
30     function runtest()
31     {
32 ph10 129 rm -f *_unittest
33    
34     if [ "$opts" = "" ] ; then
35 ph10 139 echo "Configuring with: default settings"
36 ph10 129 else
37     olen=`expr length "$opts"`
38 ph10 139 if [ $olen -gt 53 ] ; then
39     echo "Configuring with:"
40     echo " $opts"
41 ph10 129 else
42 ph10 139 echo "Configuring with: $opts"
43 ph10 129 fi
44     fi
45    
46 ph10 139 $srcdir/configure $opts >/dev/null 2>teststderr
47 ph10 129 if [ $? -ne 0 ]; then
48     echo " "
49     echo "**** Error while configuring ****"
50     cat teststderr
51     exit 1
52     fi
53    
54 ph10 139 echo "Making"
55 ph10 129 make >/dev/null 2>teststderr
56     if [ $? -ne 0 ]; then
57     echo " "
58     echo "**** Error while making ****"
59     cat teststderr
60     exit 1
61     fi
62    
63     if [ $verbose -eq 1 ]; then
64     ./pcretest -C
65     fi
66    
67     conf=`./pcretest -C`
68     nl=`expr match "$conf" ".*Newline sequence is \([A-Z]*\)"`
69 ph10 690 jit=`expr match "$conf" ".*[^o] Just-in-time"`
70 ph10 731 utf8=`expr match "$conf" ".*[^o] UTF-8 support"`
71 ph10 129
72     if [ "$nl" = "LF" -o "$nl" = "ANY" ]; then
73 ph10 731 echo "Running C library tests $withvalgrind"
74     $srcdir/RunTest $valgrind >teststdout
75 ph10 129 if [ $? -ne 0 ]; then
76     echo " "
77     echo "**** Test failed ****"
78     cat teststdout
79     exit 1
80     fi
81     else
82 ph10 139 echo "Skipping C library tests: newline is $nl"
83 ph10 129 fi
84    
85     if [ "$nl" = "LF" ]; then
86 ph10 731 echo "Running pcregrep tests $withvalgrind"
87     $srcdir/RunGrepTest $valgrind >teststdout 2>teststderr
88 ph10 129 if [ $? -ne 0 ]; then
89     echo " "
90     echo "**** Test failed ****"
91     cat teststderr
92     cat teststdout
93     exit 1
94     fi
95     else
96 ph10 139 echo "Skipping pcregrep tests: newline is $nl"
97 ph10 129 fi
98    
99 ph10 690 if [ "$jit" -gt 0 -a $utf8 -gt 0 ]; then
100 ph10 731 echo "Running JIT regression tests $withvalgrind"
101     $cvalgrind $srcdir/pcre_jit_test >teststdout 2>teststderr
102 ph10 690 if [ $? -ne 0 ]; then
103     echo " "
104     echo "**** Test failed ****"
105     cat teststderr
106     cat teststdout
107     exit 1
108     fi
109     else
110     echo "Skipping JIT regression tests: JIT or UTF-8 not enabled"
111     fi
112    
113 ph10 129 if [ "$nl" = "LF" -o "$nl" = "ANY" ]; then
114     if [ -f pcrecpp_unittest ] ; then
115     for utest in pcrecpp_unittest \
116     pcre_scanner_unittest \
117     pcre_stringpiece_unittest
118     do
119 ph10 731 echo "Running $utest $withvalgrind"
120     $cvalgrind $utest >teststdout
121 ph10 129 if [ $? -ne 0 ]; then
122     echo " "
123     echo "**** Test failed ****"
124     cat teststdout
125     exit 1
126     fi
127     done
128 ph10 139 else
129 ph10 244 echo "Skipping C++ tests: pcrecpp_unittest does not exist"
130 ph10 129 fi
131     else
132 ph10 139 echo "Skipping C++ tests: newline is $nl"
133 ph10 129 fi
134 ph10 139 }
135 ph10 129
136 ph10 139
137     # This set of tests builds PCRE and runs the tests with a variety of configure
138     # options, in the current (source) directory. The first (empty) configuration
139     # builds with all the default settings. As well as testing that these options
140     # work, we use --disable-shared or --disable-static after the first test (which
141     # builds both) to save a bit of time by building only one version of the
142     # library for the subsequent tests.
143    
144     echo "Tests in the current directory"
145     srcdir=.
146     for opts in \
147     "" \
148     "--enable-utf8 --disable-static" \
149 ph10 690 "--disable-stack-for-recursion --disable-shared" \
150     "--enable-utf8 --disable-stack-for-recursion --disable-shared" \
151 ph10 139 "--enable-unicode-properties --disable-shared" \
152     "--enable-unicode-properties --disable-stack-for-recursion --disable-shared" \
153     "--enable-unicode-properties --disable-cpp --with-link-size=3 --disable-shared" \
154     "--enable-rebuild-chartables --disable-shared" \
155     "--enable-newline-is-any --disable-shared" \
156     "--enable-newline-is-cr --disable-shared" \
157     "--enable-newline-is-crlf --disable-shared" \
158 ph10 231 "--enable-newline-is-anycrlf --enable-bsr-anycrlf --disable-shared" \
159 ph10 667 "--enable-utf8 --enable-newline-is-any --enable-unicode-properties --disable-stack-for-recursion --disable-static --disable-cpp" \
160 ph10 690 "--enable-jit --disable-shared" \
161     "--enable-jit --enable-unicode-properties --disable-shared" \
162     "--enable-jit --enable-unicode-properties --with-link-size=3 --disable-shared"
163 ph10 139 do
164     runtest
165 ph10 129 done
166    
167 ph10 731 # Now re-run some of the tests under valgrind.
168 ph10 139
169 ph10 731 echo "Tests in the current directory using valgrind"
170     valgrind=valgrind
171     cvalgrind="valgrind -q --smc-check=all"
172     withvalgrind="with valgrind"
173    
174     for opts in \
175     "--enable-unicode-properties --disable-stack-for-recursion --disable-shared" \
176     "--enable-unicode-properties --with-link-size=3 --disable-shared" \
177     "--enable-jit --enable-unicode-properties --disable-shared"
178     do
179     runtest
180     done
181    
182 ph10 139 # Clean up the distribution and then do at least one build and test in a
183     # directory other than the source directory. It doesn't work unless the
184 ph10 835 # source directory is cleaned up first - and anyway, it's best to leave it
185     # in a clean state after all this reconfiguring.
186 ph10 139
187     if [ -f Makefile ]; then
188     echo "Running 'make distclean'"
189     make distclean >/dev/null 2>&1
190     if [ $? -ne 0 ]; then
191     echo "** 'make distclean' failed"
192     exit 1
193 ph10 244 fi
194     fi
195 ph10 139
196     echo "Tests in the $tmp directory"
197     srcdir=`pwd`
198     export srcdir
199    
200     if [ ! -e $tmp ]; then
201     mkdir $tmp
202     fi
203    
204     if [ ! -d $tmp ]; then
205     echo "** Failed to create $tmp or it is not a directory"
206     exit 1
207     fi
208    
209     cd $tmp
210     if [ $? -ne 0 ]; then
211     echo "** Failed to cd to $tmp"
212     exit 1
213 ph10 244 fi
214 ph10 139
215     for opts in \
216     "--enable-unicode-properties --disable-shared"
217     do
218     runtest
219     done
220    
221     echo "Removing $tmp"
222    
223     rm -rf $tmp
224    
225     echo "All done"
226    
227 ph10 129 # End

Properties

Name Value
svn:executable *

webmaster@exim.org
ViewVC Help
Powered by ViewVC 1.1.12