1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
|
From ca8d7740d6545234909131a6de8404109a850d85 Mon Sep 17 00:00:00 2001
From: Dmitry Volyntsev <xeioex@nginx.com>
Date: Wed, 14 Jan 2026 14:43:58 -0800
Subject: [PATCH] Making unit tests less brittle when libpcre2 changes.
This fixes #1011 issue on Github.
---
src/njs_str.h | 6 ++++++
src/test/njs_unit_test.c | 10 ++++------
2 files changed, 10 insertions(+), 6 deletions(-)
diff --git a/src/njs_str.h b/src/njs_str.h
index 8c7e60b06..e64d88a97 100644
--- a/src/njs_str.h
+++ b/src/njs_str.h
@@ -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);
diff --git a/src/test/njs_unit_test.c b/src/test/njs_unit_test.c
index c39523ac0..a89d80161 100644
--- a/src/test/njs_unit_test.c
+++ b/src/test/njs_unit_test.c
@@ -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 @@ njs_process_test(njs_external_state_t *state, njs_opts_t *opts,
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",
|