>From 657eed2e1b1f2e0fac19f4c840b72a71ec6e1141 Mon Sep 17 00:00:00 2001 Message-Id: From: Stefano Lattarini Date: Thu, 12 Jan 2012 10:06:14 +0100 Subject: [PATCH 1/2] coverage: expose automake bug#10470 (distcheck-related) * tests/distcheck-pr10470.test: New test. * tests/Makefile.am (TESTS, XFAIL_TESTS): Add it. Report and suggestions by Peter Rosin and Eric Blake. --- tests/Makefile.am | 2 + tests/distcheck-pr10470.test | 61 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 63 insertions(+), 0 deletions(-) create mode 100755 tests/distcheck-pr10470.test diff --git a/tests/Makefile.am b/tests/Makefile.am index 8817b64..e10dbd5 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -23,6 +23,7 @@ auxdir2.test \ cond17.test \ dist-auxfile.test \ dist-auxfile-2.test \ +distcheck-pr10470.test \ gcj6.test \ java-nobase.test \ objext-pr10128.test \ @@ -352,6 +353,7 @@ distcheck-hook2.test \ distcheck-missing-m4.test \ distcheck-outdated-m4.test \ distcheck-pr9579.test \ +distcheck-pr10470.test \ distcheck-override-infodir.test \ dmalloc.test \ doc-parsing-buglets-colneq-subst.test \ diff --git a/tests/distcheck-pr10470.test b/tests/distcheck-pr10470.test new file mode 100755 index 0000000..e774dd7 --- /dev/null +++ b/tests/distcheck-pr10470.test @@ -0,0 +1,61 @@ +#! /bin/sh +# Copyright (C) 2012 Free Software Foundation, Inc. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +# Ensure "make distcheck" does not experience racy failures on +# systems (like MinGW/MSYS) that cannot remove a directory "in use" +# by a process (e.g., that is its "current working directory"). +# See automake bug#10470. + +parallel_tests=no +. ./defs || Exit 1 + +set -e + +mkdir foo.d +sh -c "cd foo.d && sleep '4'" & +# Without this sleep, the "rm -rf foo.d" below would reliably beat +# the "cd foo.d" in the subshell above, and the test would be always +# skipped, even on MinGW/MSYS. +sleep '1' +rm -rf foo.d && skip_ 'system is able to remove "in use" directories' + +echo AC_OUTPUT >> configure.in + +cat > Makefile.am < foo.test <output 2>&1 || { cat output; Exit 1; } +cat output +# Sanity check: verify that our code has hit a problem removing +# the distdir, but has recovered from it. +grep "rm:.*$destdir" output || fatal_ "expected code path not covered" + +: -- 1.7.7.3