Merge branch 'recheck-fix' into maint
[platform/upstream/automake.git] / t / test-trs-recover2.sh
1 #! /bin/sh
2 # Copyright (C) 2011-2012 Free Software Foundation, Inc.
3 #
4 # This program is free software; you can redistribute it and/or modify
5 # it under the terms of the GNU General Public License as published by
6 # the Free Software Foundation; either version 2, or (at your option)
7 # any later version.
8 #
9 # This program is distributed in the hope that it will be useful,
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12 # GNU General Public License for more details.
13 #
14 # You should have received a copy of the GNU General Public License
15 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
16
17 # Check parallel harness features:
18 #  - recovery from unreadable '.trs' files, in various scenarios
19
20 . ./defs || exit 1
21
22 cat >> configure.ac <<END
23 AC_OUTPUT
24 END
25
26 cat > Makefile.am << 'END'
27 TESTS = foo.test bar.test
28 TEST_LOG_COMPILER = true
29 END
30
31 : > foo.test
32 : > bar.test
33
34 TEST_STATUS=0; export TEST_STATUS
35
36 $ACLOCAL
37 $AUTOCONF
38 $AUTOMAKE -a
39
40 ./configure
41
42 : > t
43 chmod a-r t && test ! -r t || skip_ "you can still read unreadable files"
44 rm -f t
45
46 : Create the required log files.
47 $MAKE check
48 test -f foo.trs
49 test -f bar.trs
50
51 : Recreate with a sweeping "make check".
52 chmod a-r bar.trs
53 $MAKE check
54 test -f foo.trs
55 test -r foo.trs
56 test -f bar.trs
57 test -r bar.trs
58
59 : Again, this time with one .trs file missing and the other
60 : one unreadable.
61 rm -f foo.trs
62 chmod a-r bar.trs
63 $MAKE check
64 test -f foo.trs
65 test -r foo.trs
66 test -f bar.trs
67 test -r bar.trs
68
69 : Again, but using "make recheck" this time.
70 rm -f foo.trs
71 chmod a-r bar.trs
72 $MAKE recheck >stdout || { cat stdout; exit 1; }
73 cat stdout
74 test -f foo.trs
75 test -r foo.trs
76 test -f bar.trs
77 test -r bar.trs
78 grep '^PASS: foo\.test' stdout
79 grep '^PASS: bar\.test' stdout
80
81 : Recreate by remaking the global test log.
82 chmod a-r foo.trs
83 rm -f test-suite.log
84 $MAKE test-suite.log >stdout || { cat stdout; exit 1; }
85 cat stdout
86 test -f foo.trs
87 test -r foo.trs
88 grep '^PASS: foo\.test' stdout
89 grep 'bar\.test' stdout && exit 1
90 # Also test that have only run before should be counted in the final
91 # testsuite summary.
92 grep '^# TOTAL:  *2$' stdout
93
94 : Setup for the next check.
95 : > baz.test
96 sed 's/^TESTS =.*/& baz.test/' Makefile > t
97 diff t Makefile && exit 99
98 mv -f t Makefile
99 $MAKE check
100 test -f foo.trs
101 test -f bar.trs
102 test -f baz.trs
103
104 : Interactions with lazy test reruns are OK.
105 chmod a-r foo.trs
106 $sleep
107 touch stamp
108 $sleep
109 touch bar.test
110 RECHECK_LOGS= $MAKE -e check >stdout || { cat stdout; exit 1; }
111 cat stdout
112 test -r foo.trs
113 is_newest bar.trs bar.test
114 grep '^PASS: foo\.test' stdout
115 grep '^PASS: bar\.test' stdout
116 grep 'baz\.test' stdout && exit 1
117 # Also test that have only run before should be counted in the final
118 # testsuite summary.
119 grep '^# TOTAL:  *3$' stdout
120
121 :