[Top][All Lists]
[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