summaryrefslogtreecommitdiff
path: root/t/distlinksbrk.sh
diff options
context:
space:
mode:
Diffstat (limited to 't/distlinksbrk.sh')
-rwxr-xr-xt/distlinksbrk.sh68
1 files changed, 68 insertions, 0 deletions
diff --git a/t/distlinksbrk.sh b/t/distlinksbrk.sh
new file mode 100755
index 000000000..b7732ca63
--- /dev/null
+++ b/t/distlinksbrk.sh
@@ -0,0 +1,68 @@
+#! /bin/sh
+# Copyright (C) 2010-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 <http://www.gnu.org/licenses/>.
+
+# Check that distributed broken symlinks cause 'make dist' to fail, and
+# to do so with (mostly) meaningful diagnostic.
+
+. ./defs || Exit 1
+
+# We need, for our broken symlinks, names that make it hard to get false
+# positives when grepping make output to look for them.
+lnk_base=BrknSymlnk
+lnk1=${lnk_base}__001
+lnk2=${lnk_base}__002
+lnka=${lnk_base}__aaa
+lnkb=${lnk_base}__bbb
+
+ln -s nonesuch $lnk1 || skip_ "cannot create broken symlinks"
+
+ln -s "`pwd`/nonesuch" $lnk2
+
+ln -s $lnk1 $lnka
+ln -s $lnka $lnkb
+
+# Sanity checks. Use 'test -r', since Solaris Sh doesn't grok 'test -e'.
+test ! -r $lnk1
+test ! -r $lnk2
+test ! -r $lnka
+test ! -r $lnkb
+test -h $lnk1
+test -h $lnk2
+test -h $lnka
+test -h $lnkb
+
+cat >> configure.ac <<'END'
+AC_OUTPUT
+END
+
+$ACLOCAL
+$AUTOCONF
+
+ls -l # For debugging.
+
+# Don't try to use "make -k", because some botched make implementations
+# (HP-UX, IRIX) might still exit on the first error in this situations.
+for lnk in $lnk1 $lnk2 $lnka $lnkb; do
+ echo "EXTRA_DIST = $lnk" > Makefile.am
+ $AUTOMAKE
+ ./configure
+ # Distribution must fail, with a decent error message.
+ $MAKE distdir >out 2>&1 && { cat out; Exit 1; }
+ cat out
+ $FGREP $lnk out
+done
+
+: