[glib] regex test: expect ASSERTION_EXPECTED for /(?(?<ab))/ with PCRE 8.38



commit 855594c4de5acaea53bb413c6302d19ff7befd17
Author: Simon McVittie <smcv debian org>
Date:   Wed Dec 23 15:03:16 2015 +0000

    regex test: expect ASSERTION_EXPECTED for /(?(?<ab))/ with PCRE 8.38
    
    PCRE 8.38 changed the parsing of this invalid regex. It still fails,
    but with a different error (since PCRE r1539,
    <http://vcs.pcre.org/pcre?view=revision&revision=1539>).
    
    The regex /(?P<sub>foo)\g<sub/ used to raise MISSING_BACK_REFERENCE but
    now raises MISSING_SUBPATTERN_NAME_TERMINATOR, so we can still have a
    test for the latter.
    
    Signed-off-by: Simon McVittie <smcv debian org>
    Reviewed-by: Emmanuele Bassi <ebassi gnome org>
    Bug: https://bugzilla.gnome.org/show_bug.cgi?id=759808

 glib/tests/regex.c |    7 +++++++
 1 files changed, 7 insertions(+), 0 deletions(-)
---
diff --git a/glib/tests/regex.c b/glib/tests/regex.c
index 09083a3..777616a 100644
--- a/glib/tests/regex.c
+++ b/glib/tests/regex.c
@@ -2261,7 +2261,14 @@ main (int argc, char *argv[])
   TEST_NEW_FAIL ("^(?(0)f|b)oo", 0, G_REGEX_ERROR_INVALID_CONDITION);
   TEST_NEW_FAIL ("(?<=\\C)X", 0, G_REGEX_ERROR_SINGLE_BYTE_MATCH_IN_LOOKBEHIND);
   TEST_NEW_FAIL ("(?!\\w)(?R)", 0, G_REGEX_ERROR_INFINITE_LOOP);
+#if PCRE_MAJOR > 8 || (PCRE_MAJOR == 8 && PCRE_MINOR >= 38)
+  /* The expected errors changed here. */
+  TEST_NEW_FAIL ("(?P<sub>foo)\\g<sub", 0, G_REGEX_ERROR_MISSING_SUBPATTERN_NAME_TERMINATOR);
+  TEST_NEW_FAIL ("(?(?<ab))", 0, G_REGEX_ERROR_ASSERTION_EXPECTED);
+#else
+  TEST_NEW_FAIL ("(?P<sub>foo)\\g<sub", 0, G_REGEX_ERROR_MISSING_BACK_REFERENCE);
   TEST_NEW_FAIL ("(?(?<ab))", 0, G_REGEX_ERROR_MISSING_SUBPATTERN_NAME_TERMINATOR);
+#endif
   TEST_NEW_FAIL ("(?P<x>eks)(?P<x>eccs)", 0, G_REGEX_ERROR_DUPLICATE_SUBPATTERN_NAME);
 #if 0
   TEST_NEW_FAIL (?, 0, G_REGEX_ERROR_MALFORMED_PROPERTY);


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