Ramsay Jones <ramsay@xxxxxxxxxxxxxxxxxxx> writes: > I think that, after some testing, this (or something like it) is the > best that we can do. What do you think? > > ATB, > Ramsay Jones > > -- >8 -- > Subject: [PATCH] test-regex: Add a test to check for a bug in the regex routines > > Signed-off-by: Ramsay Jones <ramsay@xxxxxxxxxxxxxxxxxxx> > --- > diff --git a/t/t0070-fundamental.sh b/t/t0070-fundamental.sh > index 9bee8bf..da2c504 100755 > --- a/t/t0070-fundamental.sh > +++ b/t/t0070-fundamental.sh > @@ -25,4 +25,9 @@ test_expect_success POSIXPERM 'mktemp to unwritable directory prints filename' ' > grep "cannotwrite/test" err > ' > > +test_expect_success 'check for a bug in the regex routines' ' > + # if this test fails, re-build git with NO_REGEX=1 > + test-regex > +' OK. > test_done > diff --git a/test-regex.c b/test-regex.c > new file mode 100644 > index 0000000..9259985 > --- /dev/null > +++ b/test-regex.c > @@ -0,0 +1,35 @@ > +#include <stdlib.h> > +#include <stdio.h> > +#include <stdarg.h> > +#include <sys/types.h> > +#include <regex.h> > + > +static void die(const char *fmt, ...) > +{ > + va_list p; > + > + va_start(p, fmt); > + vfprintf(stderr, fmt, p); > + va_end(p); > + fputc('\n', stderr); > + exit(128); > +} Looks like a bit of overkill for only two call sites, whose output we would never see because it is behind the test, but OK. > +int main(int argc, char **argv) > +{ > + char *pat = "[^={} \t]+"; > + char *str = "={}\nfred"; > + regex_t r; > + regmatch_t m[1]; > + > + if (regcomp(&r, pat, REG_EXTENDED | REG_NEWLINE)) > + die("failed regcomp() for pattern '%s'", pat); > + if (regexec(&r, str, 1, m, 0)) > + die("no match of pattern '%s' to string '%s'", pat, str); > + > + /* http://sourceware.org/bugzilla/show_bug.cgi?id=3957 */ > + if (m[0].rm_so == 3) /* matches '\n' when it should not */ > + exit(1); This could be the third call site of die() that tells the user to build with NO_REGEX=1. Then "cd t && sh t0070-fundamental.sh -i -v" would give that message directly to the user. > + exit(0); > +} Thanks. -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html