summaryrefslogtreecommitdiff
path: root/tests/generate.awk
diff options
context:
space:
mode:
Diffstat (limited to 'tests/generate.awk')
-rwxr-xr-xtests/generate.awk216
1 files changed, 0 insertions, 216 deletions
diff --git a/tests/generate.awk b/tests/generate.awk
deleted file mode 100755
index f373d7f3..00000000
--- a/tests/generate.awk
+++ /dev/null
@@ -1,216 +0,0 @@
-# Extract all examples from the manual source. -*- AWK -*-
-
-# Copyright (C) 1992, 2000-2001, 2006-2010, 2013-2014, 2017 Free
-# Software Foundation, Inc.
-#
-# This file is part of GNU M4.
-#
-# GNU M4 is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# GNU M4 is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program. If not, see <http://www.gnu.org/licenses/>.
-
-# This script is for use with any New AWK.
-
-BEGIN {
- seq = -1;
- status = xfail = examples = 0;
- file = options = "";
- print "# This file is part of the GNU m4 test suite. -*- Autotest -*-";
- # I don't know how to get this file's name, so it's hard coded :(
- print "# Do not edit by hand, it was generated by generate.awk.";
- print "#";
- print "# Copyright (C) 1992, 2000, 2001, 2006, 2007, 2008, 2009 Free";
- print "# Software Foundation, Inc.";
- print ;
- print "AT_BANNER([Documentation examples.])";
- print ;
- print ;
-}
-
-/^@node / { # Start a new test group.
- if (seq > 0)
- print "AT_CLEANUP";
-
- split ($0, tmp, ",");
- node = substr(tmp[1], 7);
- seq = 0;
-}
-
-/^@comment file: / { # Produce a data file instead of a test.
- file = $3;
-}
-
-/^@comment options: / { # Pass additional options to m4.
- options = $0;
- gsub ("@comment options:", "", options);
-}
-
-/^@comment xfail$/ { # Expect the test to fail.
- xfail = 1;
-}
-
-/^@comment examples$/ { # The test uses files from the examples dir.
- examples = 1;
-}
-
-/^@comment ignore$/ { # This is just formatted doc text, not an actual test.
- getline;
- status = xfail = examples = 0;
- options = file = "";
- next;
-}
-
-/^@comment status: / { # Expected exit status of a test.
- status = $3;
-}
-
-/^@example$/, /^@end example$/ { # The body of the test.
- if (seq < 0)
- next;
-
- if ($0 ~ /^@example$/)
- {
- if (seq == 0)
- new_group(node);
- seq++;
- printf ("echo \"$at_srcdir/%s:%d:\"\n", FILENAME, NR)
- next;
- }
-
- if ($0 ~ /^@end example$/)
- {
- if (file != "")
- {
- if (output || error)
- {
- fatal("while getting file " file \
- " found output = " output "," \
- " found error = " error);
- }
- input = normalize(input);
- printf ("AT_DATA([[%s]],\n[[%s]])\n\n", file, input);
- }
- else
- {
- new_test(input, status, output, error, options, xfail, examples);
- }
- status = xfail = examples = 0;
- file = input = output = error = options = "";
- next;
- }
-
- if ($0 ~ /^\^D$/)
- next;
- if ($0 ~ /^\$ @kbd/)
- next;
-
- if ($0 ~ /^@result\{\}/)
- output = output $0 "\n";
- else if ($0 ~ /^@error\{\}/)
- error = error $0 "\n";
- else
- input = input $0 "\n";
-}
-
-END {
- if (seq > 0)
- print "AT_CLEANUP";
-}
-
-# We have to handle CONTENTS line per line, since anchors in AWK are
-# referring to the whole string, not the lines.
-function normalize(contents, i, lines, n, line, res) {
- # Remove the Texinfo tags.
- n = split (contents, lines, "\n");
- # We don't want the last field which empty: it's behind the last \n.
- for (i = 1; i < n; ++i)
- {
- line = lines[i];
- gsub ("^@result[{]}", "", line);
- gsub ("^@error[{]}", "", line);
- gsub ("@[{]", "{", line);
- gsub ("@}", "}", line);
- gsub ("@@", "@", line);
- gsub ("@tabchar[{]}", "\t", line);
- gsub ("@w[{] }", " @\\&t@", line);
- gsub ("m4_", "m@\\&t@4_", line);
-
- # Some of the examples have improperly balanced square brackets.
- gsub ("[[]", "@<:@", line);
- gsub ("[]]", "@:>@", line);
-
- res = res line "\n";
- }
- return res;
-}
-
-function new_group(node) {
- banner = node ". ";
- gsub (".", "-", banner);
- printf ("\n\n");
- printf ("## %s ##\n", banner);
- printf ("## %s. ##\n", node);
- printf ("## %s ##\n", banner);
- printf ("\n");
- printf ("AT_SETUP([%s])\n", node);
- printf ("AT_KEYWORDS([[documentation]])\n\n");
-}
-
-function new_test(input, status, output, error, options, xfail, examples) {
- input = normalize(input);
- output = normalize(output);
- error = normalize(error);
-
- if (error == "ignore\n")
- error = "ignore";
-
- if (options ~ / mpeval/)
- printf ("AT_CHECK_GMP\n");
- if (xfail == 1)
- printf ("AT_XFAIL_IF([:])\n");
-
- if (examples == 1)
- {
- printf ("AT_DATA([expout1],\n[[%s]])\n", output);
- printf ("$SED -e \"s|doc/examples|$abs_top_srcdir/doc/examples|g\" \\\n");
- printf (" < expout1 > expout\n\n");
- if (error)
- {
- printf ("AT_DATA([experr1],\n[[%s]])\n", error);
- printf ("$SED \"s|doc/examples|$abs_top_srcdir/doc/examples|g\" \\\n");
- printf (" < experr1 > experr\n\n");
- }
- options = options " -I\"$abs_top_srcdir/doc/examples\"";
- }
-
- printf ("AT_DATA([[input.m4]],\n[[%s]])\n\n", input);
- # Some of these tests `include' files from tests/.
- printf ("AT_CHECK_M4([[%s]], %s,", options, status);
- if (examples == 1)
- printf ("\n[expout]");
- else if (output)
- printf ("\n[[%s]]", output);
- else
- printf (" []");
- if (examples == 1 && error)
- printf (",\n[experr]");
- else if (error)
- printf (",\n[[%s]]", error);
- else
- printf (", []");
- printf (", [[input.m4]])\n\n");
-}
-
-function fatal(msg) {
- print "generate.awk: " FILENAME ":" NR ": " msg > "/dev/stderr"
- exit 1
-}