autoconf-patches
[Top][All Lists]
Advanced

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

Re: Autotest function usage


From: Paolo Bonzini
Subject: Re: Autotest function usage
Date: Fri, 19 Oct 2007 16:47:34 +0200
User-agent: Thunderbird 2.0.0.6 (Macintosh/20070728)


Should the individual test source files be deleted at the end, or even
after each one is completed?  Only if -d is not given?

Yes. The attached patch, redone after Eric's conflicting changes, does this too. I'll leave the portability shake and possibly the final commit to you.

Paolo
2007-10-18  Paolo Bonzini  <address@hidden>

        * 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.


diff --git a/lib/autotest/general.m4 b/lib/autotest/general.m4
index 012633c..48e71d3 100644
--- a/lib/autotest/general.m4
+++ b/lib/autotest/general.m4
@@ -310,15 +310,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 
'/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
@@ -413,7 +404,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
@@ -830,6 +821,30 @@ 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
+  echo '}
+!emit && /address@hidden:@AT_START_/ {
+  test = substr($][1, 11);
+  if (test in outfile) emit = 1
+}
+emit && /address@hidden:@AT_STOP_/ {
+  emit = 0
+}
+emit { print > outfile[test] }
+'
+}] > "$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"; 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
@@ -865,10 +880,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.
@@ -931,9 +943,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
       ;;
     *)

reply via email to

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