Module Name:    src
Committed By:   christos
Date:           Sun Nov  6 18:32:17 UTC 2011

Modified Files:
        src/tests/lib/libc/regex: att.c

Log Message:
- Handle TRE
- Make BUG comments print.


To generate a diff of this commit:
cvs rdiff -u -r1.6 -r1.7 src/tests/lib/libc/regex/att.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/tests/lib/libc/regex/att.c
diff -u src/tests/lib/libc/regex/att.c:1.6 src/tests/lib/libc/regex/att.c:1.7
--- src/tests/lib/libc/regex/att.c:1.6	Sun Nov  6 11:43:25 2011
+++ src/tests/lib/libc/regex/att.c	Sun Nov  6 13:32:17 2011
@@ -1,4 +1,4 @@
-/*	$NetBSD: att.c,v 1.6 2011/11/06 16:43:25 christos Exp $	*/
+/*	$NetBSD: att.c,v 1.7 2011/11/06 18:32:17 christos Exp $	*/
 
 /*-
  * Copyright (c) 2011 The NetBSD Foundation, Inc.
@@ -37,7 +37,7 @@
  */
 
 #include <sys/cdefs.h>
-__RCSID("$NetBSD: att.c,v 1.6 2011/11/06 16:43:25 christos Exp $");
+__RCSID("$NetBSD: att.c,v 1.7 2011/11/06 18:32:17 christos Exp $");
 
 #include <stdio.h>
 #include <regex.h>
@@ -74,7 +74,7 @@ bug(const char *pattern, const char *inp
 		const char *p;
 		const char *i;
 	} b[] = {
-#ifdef REGEX_SPENCER
+#if defined(REGEX_SPENCER)
 		/*
 		 * The default libc implementation by Henry Spencer
 		 */
@@ -159,6 +159,19 @@ bug(const char *pattern, const char *inp
 		{ "(ab|a|c|bcd){3,10}(d*)", "ababcd" },	// repetition.dat
 		{ "(ab|a|c|bcd)*(d*)", "ababcd" },	// repetition.dat
 		{ "(ab|a|c|bcd)+(d*)", "ababcd" },	// repetition.dat
+#elif defined(REGEX_TRE)
+		{ "a[-]?c", "ac" },			// basic.dat
+		{ "a\\(b\\)*\\1", "a" },		// categorization.dat
+		{ "a\\(b\\)*\\1", "abab" },		// categorization.dat
+		{ "\\(a\\(b\\)*\\)*\\2", "abab" },	// categorization.dat
+		{ "\\(a*\\)*\\(x\\)\\(\\1\\)", "ax" },	// categorization.dat
+		{ "\\(a*\\)*\\(x\\)\\(\\1\\)\\(x\\)", "axxa" },	// ""
+		{ "((..)|(.))*", "aa" },		// repetition.dat
+		{ "((..)|(.))*", "aaa" },		// repetition.dat
+		{ "((..)|(.))*", "aaaaa" },		// repetition.dat
+		{ "X(.?){7,}Y", "X1234567Y" },		// repetition.dat
+#else
+		{ "", "" }
 #endif
 	};
 
@@ -210,6 +223,7 @@ static int
 unsupported(const char *s)
 {
 	static const char *we[] = {
+#if defined(REGEX_SPENCER)
 		"ASSOCIATIVITY=left",		// have right associativity
 		"SUBEXPRESSION=precedence",	// have grouping subexpression
 		"REPEAT_LONGEST=last",		// have first repeat longest
@@ -222,6 +236,19 @@ unsupported(const char *s)
 		"BUG=repeat-null",		// don't have it
 		"BUG=repeat-artifact",		// don't have it
 		"BUG=subexpression-first",	// don't have it
+#elif defined(REGEX_TRE)
+		"ASSOCIATIVITY=right",		// have left associativity
+		"SUBEXPRESSION=grouping",	// have precedence subexpression
+		"REPEAT_LONGEST=first",		// have last repeat longest
+		"LENGTH=first",			// have last length
+		"BUG=alternation-order",	// don't have it
+		"BUG=first-match",		// don't have it
+		"BUG=range-null",		// don't have it
+		"BUG=repeat-null",		// don't have it
+		"BUG=repeat-artifact",		// don't have it
+		"BUG=subexpression-first",	// don't have it
+		"BUG=repeat-short",		// don't have it
+#endif
 	};
 
 	if (s == NULL)
@@ -327,6 +354,13 @@ getmatches(const char *s)
 }
 
 static void
+checkcomment(const char *s, size_t lineno)
+{
+	if (s && strstr(s, "BUG") != NULL)
+		fprintf(stderr, "Expected %s at line %zu\n", s, lineno);
+}
+
+static void
 checkmatches(const char *matches, size_t nm, const regmatch_t *pm,
     size_t lineno)
 {
@@ -485,6 +519,7 @@ ATF_TC_BODY(regex_att, tc)
 			ATF_REQUIRE_MSG(e == exec, "Expected error %d,"
 			    " got %d at line %zu", exec, e, lineno);
 			checkmatches(matches, nm, pm, lineno);
+			checkcomment(comment, lineno);
 			regfree(&re);
 		}
 		free(pm);

Reply via email to