check-code: forbid "\S" in egrep regular expression
BSD `egrep` does not like it. So let's forbid it.
Differential Revision: https://phab.mercurial-scm.org/D610
--- a/contrib/check-code.py Fri Sep 01 15:47:32 2017 -0700
+++ b/contrib/check-code.py Fri Sep 01 16:44:30 2017 -0700
@@ -119,6 +119,7 @@
(r'\[[^\]]+==', '[ foo == bar ] is a bashism, use [ foo = bar ] instead'),
(r'(^|\|\s*)grep (-\w\s+)*[^|]*[(|]\w',
"use egrep for extended grep syntax"),
+ (r'(^|\|\s*)e?grep .*\\S', "don't use \\S in regular expression"),
(r'(?<!!)/bin/', "don't use explicit paths for tools"),
(r'#!.*/bash', "don't use bash in shebang, use sh"),
(r'[^\n]\Z', "no trailing newline"),
--- a/tests/test-context-metadata.t Fri Sep 01 15:47:32 2017 -0700
+++ b/tests/test-context-metadata.t Fri Sep 01 16:44:30 2017 -0700
@@ -36,7 +36,7 @@
date: Thu Jan 01 00:00:00 1970 +0000
summary: Changed
- $ hg --config extensions.metaedit=$TESTTMP/metaedit.py metaedit 'parents=0' 2>&1 | egrep '^\S*Error'
+ $ hg --config extensions.metaedit=$TESTTMP/metaedit.py metaedit 'parents=0' 2>&1 | egrep '^RuntimeError'
RuntimeError: can't reuse the manifest: its p1 doesn't match the new ctx p1
$ hg --config extensions.metaedit=$TESTTMP/metaedit.py metaedit 'user=foo <foo@example.com>'