[PATCH 2/2] Prepend regerror() messages with "regexp error: "

Luis Ressel aranea at aixah.de
Mon Mar 11 10:14:49 PDT 2019


The exact error messages returned by regerror() aren't standardized;
relying on them isn't portable. Thus, add a a prefix to make clear that
the subsequent message is a regexp parsing error, and only look for this
prefix in the test suite, ignoring the rest of the message.
---
 lib/regexp-fields.cc      | 4 ++--
 test/T650-regexp-query.sh | 4 ++--
 2 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/lib/regexp-fields.cc b/lib/regexp-fields.cc
index 084bc8c0..f50da9a3 100644
--- a/lib/regexp-fields.cc
+++ b/lib/regexp-fields.cc
@@ -35,9 +35,9 @@ compile_regex (regex_t &regexp, const char *str)
     if (err != 0) {
 	size_t len = regerror (err, &regexp, NULL, 0);
 	char *buffer = new char[len];
-	std::string msg;
+	std::string msg = "Regexp error: ";
 	(void) regerror (err, &regexp, buffer, len);
-	msg.assign (buffer, len);
+	msg.append (buffer, len);
 	delete[] buffer;
 
 	throw Xapian::QueryParserError (msg);
diff --git a/test/T650-regexp-query.sh b/test/T650-regexp-query.sh
index 4085340f..31b3d036 100755
--- a/test/T650-regexp-query.sh
+++ b/test/T650-regexp-query.sh
@@ -137,10 +137,10 @@ EOF
 test_expect_equal_file EXPECTED OUTPUT
 
 test_begin_subtest "regexp error reporting"
-notmuch search 'from:/unbalanced[/' 1>OUTPUT 2>&1
+notmuch search 'from:/unbalanced[/' 2>&1 | sed -e '/^A Xapian/ s/[^:]*$//' > OUTPUT
 cat <<EOF > EXPECTED
 notmuch search: A Xapian exception occurred
-A Xapian exception occurred parsing query: Invalid regular expression
+A Xapian exception occurred parsing query: Regexp error:
 Query string was: from:/unbalanced[/
 EOF
 test_expect_equal_file EXPECTED OUTPUT
-- 
2.21.0



More information about the notmuch mailing list