automake-patches
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[FYI] {master} coverage: test the internal $(am__relativize) variable


From: Stefano Lattarini
Subject: [FYI] {master} coverage: test the internal $(am__relativize) variable
Date: Mon, 23 Apr 2012 23:14:08 +0200

This new coverage might turn out be useful for the planned changes
in Automake-NG.  Even if it eventually doesn't, we gen an improved
testsuite exposure of some non-trivial internals, so it's always a
win for us.

* t/relativize.tap: New test.
* t/list-of-tests.mk: Add it.

Signed-off-by: Stefano Lattarini <address@hidden>
---
 t/list-of-tests.mk |    1 +
 t/relativize.tap   |   96 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 97 insertions(+)
 create mode 100755 t/relativize.tap

diff --git a/t/list-of-tests.mk b/t/list-of-tests.mk
index 2a3ec35..fef7165 100644
--- a/t/list-of-tests.mk
+++ b/t/list-of-tests.mk
@@ -885,6 +885,7 @@ t/python-virtualenv.sh \
 t/python-pr10995.sh \
 t/recurs.sh \
 t/recurs2.sh \
+t/relativize.tap \
 t/remake.sh \
 t/remake1a.sh \
 t/remake2.sh \
diff --git a/t/relativize.tap b/t/relativize.tap
new file mode 100755
index 0000000..8f53b6c
--- /dev/null
+++ b/t/relativize.tap
@@ -0,0 +1,96 @@
+#! /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 <http://www.gnu.org/licenses/>.
+
+# Test Automake-provided internal make macro $(am__relativize).
+
+am_create_testdir=empty
+. ./defs || Exit 1
+
+plan_ later
+
+mkdir uber uber/top
+cd uber/top
+
+: > install-sh
+: > missing
+
+cat >> configure.ac <<END
+AC_INIT([$me], [1.0])
+AM_INIT_AUTOMAKE
+AC_CONFIG_FILES([Makefile])
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+# The 'am__relitivize' definition is only brought in when
+# SUBDIRS are defined.
+SUBDIRS = .
+
+.PHONY: test
+test:
+       @$(am__relativize); echo "result: '$$reldir'"; set -x; \
+        case $${reldir:-.} in "$$exp"|"$$exp/.") ;; *) exit 1;; esac
+END
+
+$ACLOCAL && $AUTOMAKE && $AUTOCONF && ./configure || fatal_ "setup failure"
+
+rel_ ()
+{
+   case $1 in -x) directive=TODO; shift;; *) directive=;; esac
+   test $# -eq 4 && test x"$3" = x"=" || fatal_ "rel_: incorrect usage"
+   command_ok_ "$1/{$4} = $2" -D "$directive" \
+               env dir1=$1 dir2=$2 exp=$4 $MAKE test
+}
+
+# am__relativize
+# ~~~~~~~~~~~~~~
+# Computes a relative pathname RELDIR such that DIR1/RELDIR = DIR2.
+# Input:
+#   - DIR1     relative pathname, relative to the current directory
+#   - DIR2     relative pathname, relative to the current directory
+# Output:
+#   - reldir   relative pathname of DIR2, relative to DIR1
+
+rel_ . .  = .
+rel_ . .. = ..
+rel_ .. . = top
+
+for d in x long-longer a/b 1/2/3/4/5; do
+  rel_ $d $d = .
+  for d2 in . .. x r/s/t; do
+    rel_ $d $d/$d2 = $d2
+  done
+done
+
+rel_ one two     = ../two
+rel_ a   b/c     = ../b/c
+rel_ a/b .       = ../..
+rel_ a/b foo     = ../../foo
+rel_ a/b foo/bar = ../../foo/bar
+rel_ a/b a/c     = ../c
+rel_ a/b a/c/d   = ../c/d
+
+rel_ foo/bar/baz foo/bar/qux/zap   = ../qux/zap
+
+rel_ ../foo       .      = ../top
+rel_ ../..        .      = uber/top
+rel_ ../../foo    .      = ../uber/top
+rel_ ../../x      ok     = ../uber/top/ok
+rel_ ../../x      bo/ba  = ../uber/top/bo/ba
+rel_ ../../x      ../ok2 = ../uber/top/../ok2
+rel_ ../a/b/c/d/e .      = ../../../../../top
+
+:
-- 
1.7.9.5




reply via email to

[Prev in Thread] Current Thread [Next in Thread]