]> git.ipfire.org Git - thirdparty/autoconf.git/commitdiff
* lib/autotest/general.m4 (at_func_test): Remove.
authorRalf Wildenhues <Ralf.Wildenhues@gmx.de>
Thu, 15 Nov 2007 21:23:59 +0000 (22:23 +0100)
committerRalf Wildenhues <Ralf.Wildenhues@gmx.de>
Thu, 15 Nov 2007 21:23:59 +0000 (22:23 +0100)
(AT_INIT): Pre-extract test groups into separate files.
(AT_CLEANUP): Source pre-extracted file instead of calling at_func_test.
Remove at-test-source files together with the $at_group_dir.
* tests/autotest.at (Long test source lines): New test.

ChangeLog
lib/autotest/general.m4
tests/autotest.at

index 1d697996ff248b52a6765d02da12e2a8d847fa78..306635bd6a24b906b9c3d3b70fadde1aececab4f 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+2007-11-15  Paolo Bonzini  <bonzini@gnu.org>
+       and Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       * lib/autotest/general.m4 (at_func_test): Remove.
+       (AT_INIT): Pre-extract test groups into separate files.
+       (AT_CLEANUP): Source pre-extracted file instead of calling at_func_test.
+       Remove at-test-source files together with the $at_group_dir.
+       * tests/autotest.at (Long test source lines): New test.
+
 2007-11-15  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
 
        Shell functions and variables may share a namespace.
index 4d92e6de184160256c600550dcf1df026f8b45cc..fd39ae9bc1863799225581fcb0bf17026bc85794 100644 (file)
@@ -185,6 +185,7 @@ m4_define([_AT_NORMALIZE_TEST_GROUP_NUMBER],
 # Begin test suite.
 m4_define([AT_INIT],
 [m4_pattern_forbid([^_?AT_])
+m4_pattern_allow([^_AT_T_EOF$])
 m4_define([AT_TESTSUITE_NAME],
          m4_defn([AT_PACKAGE_STRING])[ test suite]m4_ifval([$1], [: $1]))
 m4_define([AT_ordinal], 0)
@@ -310,15 +311,6 @@ at_func_diff_devnull ()
   $at_diff "$at_devnull" "$[1]"
 }
 
-# at_func_test NUMBER
-# -------------------
-# Parse out test NUMBER from the tail of this file.
-at_func_test ()
-{
-  sed -n '/^@%:@AT_START_'$[1]'$/,/^@%:@AT_STOP_'$[1]'$/p' "$at_myself" \
-       > "$at_test_source"
-}
-
 # at_func_create_debugging_script
 # -------------------------------
 # Create the debugging script $at_group_dir/run which will reproduce the
@@ -431,7 +423,7 @@ at_status_file=$at_suite_dir/at-status
 at_stdout=$at_suite_dir/at-stdout
 at_stder1=$at_suite_dir/at-stder1
 at_stderr=$at_suite_dir/at-stderr
-# The file containing the function to run a test group.
+# The stem for files containing a test group.
 at_test_source=$at_suite_dir/at-test-source
 # The file containing dates.
 at_times_file=$at_suite_dir/at-times
@@ -871,6 +863,36 @@ else
   at_diff=diff
 fi
 
+{
+  echo 'BEGIN {'
+  for at_group in $at_groups; do
+    at_group_normalized=$at_group
+    _AT_NORMALIZE_TEST_GROUP_NUMBER(at_group_normalized)
+    echo "  outfile[[\"$at_group\"]] = \"$at_test_source-$at_group_normalized\""
+  done
+  AS_ECHO(['}
+emit == 0 && /^@%:@AT_START_/ {
+  test = substr($ 0, 11);
+  if (outfile[[test]]) {
+    emit = 1
+    print "cat >\"" outfile[[test]] "\" <<'\''_AT_T_EOF'\''"
+  }
+}
+emit != 0 && /^@%:@AT_STOP_/ {
+  print "_AT_T_EOF"
+  emit = 0
+}
+emit != 0 { print }
+'])
+} > "$at_test_source.awk"
+
+# Extract test group that will be run from the tail of this file
+if awk -f "$at_test_source.awk" "$at_myself" >"$at_test_source.sh" \
+   && . "$at_test_source.sh" \
+   && rm -f "$at_test_source.awk" "$at_test_source.sh"; then :; else
+  AS_ECHO(["$as_me: unable to parse test groups"]) >&2
+  exit 1
+fi
 
 m4_text_box([Driver loop.])
 for at_group in $at_groups
@@ -906,10 +928,7 @@ do
     at_tee_pipe='cat >> "$at_group_log"'
   fi
 
-  if at_func_test $at_group && . "$at_test_source"; then :; else
-    AS_ECHO(["$as_me: unable to parse test group: $at_group"]) >&2
-    at_failed=:
-  fi
+  . "$at_test_source-$at_group_normalized"
 
   # Be sure to come back to the suite directory, in particular
   # since below we might `rm' the group directory we are in currently.
@@ -973,9 +992,12 @@ _ATEOF
       # Cleanup the group directory, unless the user wants the files.
       if $at_debug_p ; then
        at_func_create_debugging_script
-      elif test -d "$at_group_dir"; then
-       find "$at_group_dir" -type d ! -perm -700 -exec chmod u+rwx \{\} \;
-       rm -fr "$at_group_dir"
+      else
+       if test -d "$at_group_dir"; then
+         find "$at_group_dir" -type d ! -perm -700 -exec chmod u+rwx \{\} \;
+         rm -fr "$at_group_dir"
+        fi
+       rm -f "$at_test_source-$at_group_normalized"
       fi
       ;;
     *)
index 54e746475e1b8cd338a68c81d7bd371da9cbf013..fa7b7eae1e40a6c8555908a4ca493319d770be1f 100644 (file)
@@ -335,6 +335,21 @@ AT_CHECK_AT_TITLE_CHAR([Longer test title],
                       [01234567890123456789012345678901234], [], [], [54])
 
 
+## ----------------------- ##
+## Long test source lines. ##
+## ----------------------- ##
+
+# Create a test file that has more than 99 words in a line, for Solaris awk.
+# While at that, try out the limit of 2000 bytes in a text file line.
+
+AT_CHECK_AT_TEST([Long test source lines],
+[m4_for([nnn], [1], [999], [], [: ])
+AT_CHECK([:])
+], [], [], [], [ignore],
+[AT_CHECK([$CONFIG_SHELL ./micro-suite -k skipalltests], [], [ignore], [ignore])
+])
+
+
 ## ----------------- ##
 ## Debugging a test. ##
 ## ----------------- ##