hgbook
view en/examples/data/check_whitespace.py @ 144:006bbad1f190
Add expected output files.
This makes it possible to spot changes in Mercurial's output and
behaviour over time.
This makes it possible to spot changes in Mercurial's output and
behaviour over time.
author | Bryan O'Sullivan <bos@serpentine.com> |
---|---|
date | Tue Mar 06 21:44:56 2007 -0800 (2007-03-06) |
parents | 18210d46491f |
children |
line source
1 #!/usr/bin/python
3 import re
5 def trailing_whitespace(difflines):
6 added, linenum, header = [], 0, False
8 for line in difflines:
9 if header:
10 # remember the name of the file that this diff affects
11 m = re.match(r'(?:---|\+\+\+) ([^\t]+)', line)
12 if m and m.group(1) != '/dev/null':
13 filename = m.group(1).split('/', 1)[-1]
14 if line.startswith('+++ '):
15 header = False
16 continue
17 if line.startswith('diff '):
18 header = True
19 continue
20 # hunk header - save the line number
21 m = re.match(r'@@ -\d+,\d+ \+(\d+),', line)
22 if m:
23 linenum = int(m.group(1))
24 continue
25 # hunk body - check for an added line with trailing whitespace
26 m = re.match(r'\+.*\s$', line)
27 if m:
28 added.append((filename, linenum))
29 if line and line[0] in ' +':
30 linenum += 1
31 return added
33 if __name__ == '__main__':
34 import os, sys
36 added = trailing_whitespace(os.popen('hg export tip'))
37 if added:
38 for filename, linenum in added:
39 print >> sys.stderr, ('%s, line %d: trailing whitespace added' %
40 (filename, linenum))
41 # save the commit message so we don't need to retype it
42 os.system('hg tip --template "{desc}" > .hg/commit.save')
43 print >> sys.stderr, 'commit message saved to .hg/commit.save'
44 sys.exit(1)