]> git.kaiwu.me - njs.git/commitdiff
Making unit tests less brittle when libpcre2 changes.
authorDmitry Volyntsev <xeioex@nginx.com>
Wed, 14 Jan 2026 22:43:58 +0000 (14:43 -0800)
committerDmitry Volyntsev <xeioexception@gmail.com>
Wed, 14 Jan 2026 23:29:32 +0000 (15:29 -0800)
This fixes #1011 issue on Github.

src/njs_str.h
src/test/njs_unit_test.c

index 8c7e60b066079dbfe0dfa074ba9ea703b84a736f..e64d88a976772cd8fcbfebfe80b81c6295ca0742 100644 (file)
@@ -139,6 +139,12 @@ njs_strstr_case_eq(s1, s2)                                                    \
      && (njs_strncasecmp((s1)->start, (s2)->start, (s1)->length) == 0))
 
 
+#define                                                                       \
+njs_strstr_starts_with(str, prefix)                                           \
+    (((str)->length >= (prefix)->length)                                      \
+     && (memcmp((str)->start, (prefix)->start, (prefix)->length) == 0))
+
+
 NJS_EXPORT njs_int_t njs_strncasecmp(u_char *s1, u_char *s2, size_t n);
 
 
index c39523ac096d4e8d170c3078762d7d556d6d7e2f..a89d801615b0e186ed07939896d09121094ae40e 100644 (file)
@@ -11806,8 +11806,8 @@ static njs_unit_test_t  njs_test[] =
 
     { njs_str("/+/.test('')"),
       njs_str("SyntaxError: "
-              njs_pcre_var("pcre_compile2(\"+\") failed: quantifier does not follow a repeatable item at \"+\" in 1",
-                           "pcre_compile(\"+\") failed: nothing to repeat at \"+\" in 1")) },
+              njs_pcre_var("pcre_compile2(\"+\") failed: quantifier does not follow a repeatable item",
+                           "pcre_compile(\"+\") failed: nothing to repeat")) },
 
     { njs_str("/^$/.test('')"),
       njs_str("true") },
@@ -21994,9 +21994,7 @@ done:
         return NJS_ERROR;
     }
 
-    success = expected->ret.length <= s.length
-              && (memcmp(expected->ret.start, s.start, expected->ret.length)
-                  == 0);
+    success = njs_strstr_starts_with(&s, &expected->ret);
     if (!success) {
         njs_stderror("njs(\"%V\")\nexpected: \"%V\"\n     got: \"%V\"\n",
                      &expected->script, &expected->ret, &s);
@@ -22156,7 +22154,7 @@ njs_unit_test(njs_unit_test_t tests[], size_t num, njs_str_t *name,
                                   "Extra characters at the end of the script");
             }
 
-            success = njs_strstr_eq(&tests[i].ret, &s);
+            success = njs_strstr_starts_with(&s, &tests[i].ret);
             if (!success) {
                 njs_stderror("njs(\"%V\")\nexpected: \"%V\"\n"
                              "     got: \"%V\"\n",