]> git.ipfire.org Git - thirdparty/libtool.git/commitdiff
tests: migrate legacy quote.test to Autotest.
authorGary V. Vaughan <gary@gnu.org>
Thu, 4 Oct 2012 14:00:30 +0000 (21:00 +0700)
committerGary V. Vaughan <gary@gnu.org>
Fri, 5 Oct 2012 09:34:26 +0000 (16:34 +0700)
* tests/quote.test: Moved from here...
* tests/libtool.at: ...to here, and updated to Autotest.
* Makefile.am (TESTS): Remove tests/quote.test.
(TESTSUITE_AT): Add tests/libtool.at.

Signed-off-by: Gary V. Vaughan <gary@gnu.org>
Makefile.am
tests/libtool.at [moved from tests/quote.test with 51% similarity]

index 180d82fcaefc939aff27d5a63d81f76c5c4cd84c..052cbfa84d375d90f5a71d22124fc827e7f5d5f7 100644 (file)
@@ -618,6 +618,7 @@ TESTSUITE   = tests/testsuite
 TESTSUITE_AT   = tests/testsuite.at \
                  tests/getopt-m4sh.at \
                  tests/libtoolize.at \
+                 tests/libtool.at \
                  tests/demo.at \
                  tests/pic_flag.at \
                  tests/with-pic.at \
@@ -799,7 +800,6 @@ TESTS = \
        tests/link-2.test \
        tests/nomode.test \
        tests/objectlist.test \
-       tests/quote.test \
        tests/suffix.test \
        tests/tagtrace.test
 
similarity index 51%
rename from tests/quote.test
rename to tests/libtool.at
index bff82806d683577089663f3c8a2f455c97c06104..ef64c3582eb0b1d69de5df6aaa9cfa9cca851be3 100755 (executable)
@@ -1,5 +1,4 @@
-#! /bin/sh
-# quote.test - make sure that shell metacharacters do not blow up libtool
+# libtool.at -- basic libtool operation tests -*- Autotest -*-
 #
 #   Copyright (C) 2003-2005, 2008, 2011-2012 Free Software Foundation,
 #   Inc.
 # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
 ####
 
-. tests/defs || exit 1
+AT_BANNER([Basic libtool operation.])
 
-# Do the torture test.
-status=$EXIT_SUCCESS
 
-case $1 in
-  --no-reexec)
-    ;;
-  *)
-    func_get_config "SHELL" "$LIBTOOL --config"
-    exec $SHELL "$0" --no-reexec ${1+"$@"}
-    ;;
-esac
+## ----------------------------------- ##
+## Shell meta-characters in filenames. ##
+## ----------------------------------- ##
 
-func_get_config "ECHO wl" "$LIBTOOL --config"
+AT_SETUP([quote shell meta-characters in filenames])
 
+eval `$LIBTOOL --config | grep '^wl='`
+
+# Do the torture test.
 for mode in compile link install; do
-  echo "== $mode mode"
 
   # Unfortunately, without an array data type, it is nearly impossible
   # to protect libtool from metacharacters in filenames.  So, we just
@@ -75,62 +69,35 @@ for mode in compile link install; do
   esac
 
   # Trivial.
-  echo "= trying: no quoting"
-  result=`$LIBTOOL -n --mode=$mode $preargs $preflag"$flag:test" $postargs` || status=$EXIT_FAILURE
-  # We used to have the contents of $match in the case statement,
-  # without an intermediate variable, but it would fail on at least
-  # Solaris' and HP-UX's /bin/sh.  Ugh!
+  LT_AT_CHECK([$LIBTOOL -n --mode=$mode $preargs $preflag"$flag:test" $postargs],
+          [0], [stdout])
   # We must not attempt to match $preargs in the output, because libtool
   # may modify them.  For example, on Cygwin, ``libtool --mode=link gcc -o
   # foo foo.o''  becomes ``gcc -o foo.exe foo.o''.
-  match="$match_preflag$flag:test "
-  case $result in
-  *"$match"*)
-    $ECHO "= passed: $result"
-    ;;
-  *)
-    $ECHO "= failed: $result"
-    status=$EXIT_FAILURE
-    ;;
-  esac
+  LT_AT_CHECK([$EGREP "$mode:.*$match_preflag$flag:test " stdout], [0], [ignore])
 
   # Metacharacters that should be backslashified.
-  for mchar in \\ \" \` \$; do
-    $ECHO "= trying: \\$mchar quoting"
-    result=`$LIBTOOL -n --mode=$mode $preargs $preflag"$flag$mchar:test$mchar" $postargs` || status=$EXIT_FAILURE
-    match="$match_preflag$flag\\$mchar:test\\$mchar "
-    alt_match="$match_preflag\"$flag\\$mchar:test\\$mchar\" "
-    case $result in
-    *"$match"*)
-      $ECHO "= passed: $result"
-      ;;
-    *"$alt_match"*)
-      $ECHO "= passed (harmless ksh bug): $result"
-      ;;
-    *)
-      $ECHO "= failed: $result"
-      status=$EXIT_FAILURE
-      ;;
-    esac
+  for mchar in \" \` \$ \\; do
+    LT_AT_CHECK([$LIBTOOL -n --mode=$mode $preargs $preflag"$flag$mchar:test$mchar" $postargs],
+            [0], [stdout])
+    LT_AT_CHECK([$EGREP "$mode:.*$match_preflag\"?$flag\\\\\\$mchar:test\\\\\\$mchar\"? " stdout], [0], [ignore])
+  done
+
+  # Metacharacters that should be double quoted, and need escaping for grep
+  for mchar in "@<:@" "@:>@" "^" "*"; do
+
+    LT_AT_CHECK([$LIBTOOL -n --mode=$mode $preargs $preflag"$flag$mchar:test$mchar" $postargs],
+            [0], [stdout])
+    LT_AT_CHECK([grep "$mode:.*$match_preflag\"$flag\\$mchar:test\\$mchar\" " stdout], [0], [ignore])
   done
 
-  # Metacharacters that should be double quoted.
-  for mchar in "[" "]" "~" "#" "^" "&" "*" "(" ")" "{" "}" "|" ";" "<" ">" "?" \
-      "'" " " "        "; do
-
-    $ECHO "= trying: \"$mchar\" quoting"
-    result=`$LIBTOOL -n --mode=$mode $preargs $preflag"$flag$mchar:test$mchar" $postargs` || status=$EXIT_FAILURE
-    match="$match_preflag\"$flag$mchar:test$mchar\" "
-    case $result in
-    *"$match"*)
-      $ECHO "= passed: $result"
-      ;;
-    *)
-      $ECHO "= failed: $result"
-      status=$EXIT_FAILURE
-      ;;
-    esac
+  # Metacharacters that should be double quoted, that are not special to grep.
+  for mchar in "~" "#" "&" "(" ")" "{" "}" "|" ";" "<" ">" "?" "'" " " "       "; do
+
+    LT_AT_CHECK([$LIBTOOL -n --mode=$mode $preargs $preflag"$flag$mchar:test$mchar" $postargs],
+            [0], [stdout])
+    LT_AT_CHECK([grep "$mode:.*$match_preflag\"$flag$mchar:test$mchar\" " stdout], [0], [ignore])
   done
 done
 
-exit $status
+AT_CLEANUP