autoconf-patches
[Top][All Lists]
Advanced

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

Re: Autotest function usage


From: Ralf Wildenhues
Subject: Re: Autotest function usage
Date: Sun, 18 Nov 2007 18:10:05 +0100
User-agent: Mutt/1.5.13 (2006-08-11)

* Ralf Wildenhues wrote on Sun, Nov 18, 2007 at 04:55:08PM CET:
> 
> OK to revert?  (Asking this before considering Paolo's other patch;
> I haven't tested that one much yet.)

More specifically, I'm testing these two patches now (including a couple
of awk portability nits in the second).  OK if they succeed?

Cheers,
Ralf

diff --git a/ChangeLog b/ChangeLog
index d1f20c1..89b4483 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,9 @@
 2007-11-18  Ralf Wildenhues  <address@hidden>
 
+       * lib/autotest/general.m4: Revert 2007-11-15 patch and
+       subsequent fixups; the awk -> here-document conversion trashes
+       performance too much with AIX sh.
+
        * tests/local.at: Do not test m4, perl with AT_TESTED.
 
        Diagnose and guard against write errors dealing with config.status.
diff --git a/lib/autotest/general.m4 b/lib/autotest/general.m4
index 7a6ccfe..6855f31 100644
--- a/lib/autotest/general.m4
+++ b/lib/autotest/general.m4
@@ -311,6 +311,15 @@ 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 
'/address@hidden:@AT_START_'$[1]'$/,/address@hidden:@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
@@ -423,7 +432,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 stem for files containing a test group.
+# The file containing the function to run a test group.
 at_test_source=$at_suite_dir/at-test-source
 # The file containing dates.
 at_times_file=$at_suite_dir/at-times
@@ -863,38 +872,6 @@ 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(['
-  FS = ""
-}
-emit == 0 && /address@hidden:@AT_START_/ {
-  test = substr($ 0, 11);
-  if (outfile[[test]]) {
-    emit = 1
-    print "cat >\"" outfile[[test]] "\" <<'\''_AT_T_EOF'\''"
-  }
-}
-emit != 0 && /address@hidden:@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
@@ -930,7 +907,10 @@ do
     at_tee_pipe='cat >> "$at_group_log"'
   fi
 
-  . "$at_test_source-$at_group_normalized"
+  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
 
   # Be sure to come back to the suite directory, in particular
   # since below we might `rm' the group directory we are in currently.
@@ -999,7 +979,7 @@ _ATEOF
          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"
+       rm -f "$at_test_source"
       fi
       ;;
     *)


diff --git a/ChangeLog b/ChangeLog
index 89b4483..ebc67fb 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2007-11-18  Paolo Bonzini  <address@hidden>
+       and Ralf Wildenhues  <address@hidden>
+
+       * lib/autotest/general.m4 (at_func_test): Use cached line numbers
+       to extract test scripts.
+       (AT_INIT): Extract and cache test script line numbers.
+
 2007-11-18  Ralf Wildenhues  <address@hidden>
 
        * lib/autotest/general.m4: Revert 2007-11-15 patch and
diff --git a/lib/autotest/general.m4 b/lib/autotest/general.m4
index 6855f31..53b0060 100644
--- a/lib/autotest/general.m4
+++ b/lib/autotest/general.m4
@@ -316,8 +316,8 @@ at_func_diff_devnull ()
 # Parse out test NUMBER from the tail of this file.
 at_func_test ()
 {
-  sed -n 
'/address@hidden:@AT_START_'$[1]'$/,/address@hidden:@AT_STOP_'$[1]'$/p' 
"$at_myself" \
-       > "$at_test_source"
+  eval at_sed=\$at_sed$[1]
+  sed "$at_sed" "$at_myself" > "$at_test_source"
 }
 
 # at_func_create_debugging_script
@@ -872,6 +872,18 @@ else
   at_diff=diff
 fi
 
+# Extract the start and end lines of each test group at the tail
+# of this file
+awk '
+BEGIN { FS="" }
+/address@hidden:@AT_START_/ {
+  start = NR
+}
+/address@hidden:@AT_STOP_/ {
+  print "at_sed" substr ($ 0, 10) "=\"1," start "d;" NR "q\""
+}' "$at_myself" > "$at_test_source"
+. "$at_test_source"
+
 
 m4_text_box([Driver loop.])
 for at_group in $at_groups




reply via email to

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