>From 8f6a79c2a4ff5557142b552c96cfa171e43f52ab Mon Sep 17 00:00:00 2001
Message-Id:
From: Stefano Lattarini
Date: Fri, 24 Feb 2012 18:34:04 +0100
Subject: [PATCH] coverage: dist-hook and distcheck-hook can modify file
permission
See automake bug#10878.
* tests/dist-hook-perms.test: New test, checking that the user can
use the 'dist-hook' target to modify permissions of distributed
files before putting them in the distribution tarball.
* tests/distcheck-writable-srcdir.test: New test, checking that the
user can use 'distcheck-hook' to ensure his packages is built by
"make distcheck" with a writable srcdir. This goes against the GNU
Coding Standards, but some package authors might not care about
them too much, and it's nice to support their use case too.
* tests/list-of-tests.mk: Add them.
---
tests/distcheck-writable-srcdir.test | 48 +++++++++++++++++++++++++++
tests/disthook-perms.test | 59 ++++++++++++++++++++++++++++++++++
tests/list-of-tests.mk | 2 +
3 files changed, 109 insertions(+), 0 deletions(-)
create mode 100755 tests/distcheck-writable-srcdir.test
create mode 100755 tests/disthook-perms.test
diff --git a/tests/distcheck-writable-srcdir.test b/tests/distcheck-writable-srcdir.test
new file mode 100755
index 0000000..bbc50f4
--- /dev/null
+++ b/tests/distcheck-writable-srcdir.test
@@ -0,0 +1,48 @@
+#! /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 .
+
+# Check that the user abuse 'distcheck-hook' to ensure his packages
+# is built by "make distcheck" with a writable srcdir. This goes
+# against the GNU Coding Standards, but some package authors might
+# not care about them too much, and it's nice to support their use
+# case too (since it doesn't cost us anything but this test).
+# See automake bug#10878.
+
+. ./defs || Exit 1
+
+echo AC_OUTPUT >> configure.ac
+
+cat > Makefile.am <<'END'
+EXTRA_DIST = old
+distcheck-hook:
+ find $(distdir) -exec chmod u+w '{}' ';'
+check-local:
+ test -f $(srcdir)/old
+ test ! -f $(srcdir)/new
+ test ! -r $(srcdir)/new
+## Don't do this in real life, or I'll kill you.
+ echo foo > $(srcdir)/old
+ echo bar > $(srcdir)/new
+END
+
+$ACLOCAL
+$AUTOMAKE
+$AUTOCONF
+./configure
+: > old
+$MAKE distcheck
+
+:
diff --git a/tests/disthook-perms.test b/tests/disthook-perms.test
new file mode 100755
index 0000000..a5f0acb
--- /dev/null
+++ b/tests/disthook-perms.test
@@ -0,0 +1,59 @@
+#! /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 .
+
+# Check that the user can use the 'dist-hook' target to modify
+# permissions of distributed files before putting them in the
+# distribution tarball. See automake bug#10878.
+
+. ./defs || Exit 1
+
+echo AC_OUTPUT >> configure.ac
+
+cat > Makefile.am <<'END'
+EXTRA_DIST = write execute
+dist-hook:
+ chmod u+w $(distdir)/write
+ chmod u+x $(distdir)/execute
+END
+
+$ACLOCAL
+$AUTOMAKE
+$AUTOCONF
+
+./configure
+
+echo Will be clobbered > write
+cat > execute <<'END'
+#!/bin/sh
+echo I run successfully
+END
+
+chmod a-w write
+chmod a-x execute
+
+$MAKE
+$MAKE dist
+
+test -f $distdir.tar.gz
+gzip -dc $distdir.tar.gz | tar xvf -
+
+cd $distdir
+echo clobber clobber > write
+cat write | grep 'clobber clobber'
+./execute
+./execute | grep 'I run successfully'
+
+:
diff --git a/tests/list-of-tests.mk b/tests/list-of-tests.mk
index eaaa888..e6c87c4 100644
--- a/tests/list-of-tests.mk
+++ b/tests/list-of-tests.mk
@@ -353,6 +353,7 @@ distcom2.test \
distcom3.test \
distcom4.test \
distcom5.test \
+dist-hook-perms.test \
distcom-subdir.test \
distdir.test \
distlinks.test \
@@ -363,6 +364,7 @@ distcheck-configure-flags-am.test \
distcheck-configure-flags-subpkg.test \
distcheck-hook.test \
distcheck-hook2.test \
+distcheck-writable-srcdir.test \
distcheck-missing-m4.test \
distcheck-outdated-m4.test \
distcheck-override-infodir.test \
--
1.7.9