Merge branch 'maint'
[platform/upstream/automake.git] / t / distcheck-pr10470.sh
1 #! /bin/sh
2 # Copyright (C) 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 # Ensure "make distcheck" does not experience racy failures on
18 # systems (like MinGW/MSYS) that cannot remove a directory "in use"
19 # by a process (e.g., that is its "current working directory").
20 # See automake bug#10470.
21
22 am_parallel_tests=no
23 . ./defs || Exit 1
24
25 mkdir foo.d
26 sh -c "cd foo.d && sleep '4'" &
27 # Without this sleep, the "rm -rf foo.d" below would reliably beat
28 # the "cd foo.d" in the subshell above, and the test would be always
29 # skipped, even on MinGW/MSYS.
30 sleep '1'
31 rm -rf foo.d && skip_ 'system is able to remove "in use" directories'
32
33 echo AC_OUTPUT >> configure.ac
34
35 cat > Makefile.am <<END
36 TESTS = foo.test
37 EXTRA_DIST= foo.test
38 END
39
40 cat > foo.test <<END
41 #!/bin/sh
42 sleep '4' &
43 exit 0
44 END
45 chmod a+x foo.test
46
47 $ACLOCAL
48 $AUTOCONF
49 $AUTOMAKE
50 ./configure
51
52 # We can build the distribution.
53 $MAKE distcheck >output 2>&1 || { cat output; Exit 1; }
54 cat output
55 # Sanity check: verify that our code has hit a problem removing
56 # the distdir, but has recovered from it.
57 grep "rm:.*$destdir" output || fatal_ "expected code path not covered"
58
59 :