Mercurial > p > roundup > code
annotate website/issues/extensions/local_replace.py @ 8566:e4191aa7b402 default tip
doc: issue2551415 correct doc for change input->input_payload
in 2.5 the rest interface changed a variable name from input to
input_payload. An earlier commit changed the rest docs. This commit
adds an item for it to the upgrading 2.4.0->2.5.0 section. Also cross
reference added to the rest docs with the updated examples.
| author | John Rouillard <rouilj@ieee.org> |
|---|---|
| date | Thu, 09 Apr 2026 00:19:06 -0400 |
| parents | 9c3ec0a5c7fc |
| children |
| rev | line source |
|---|---|
|
4024
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
1 import re |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
2 |
|
4892
29bc5484969a
Improved website/issues/extensions/local_replace.py and hg copied it over to the devel and responsive templates.
Bernhard Reiter <bernhard@intevation.de>
parents:
4884
diff
changeset
|
3 hg_url_base = r'http://sourceforge.net/p/roundup/code/ci/' |
|
29bc5484969a
Improved website/issues/extensions/local_replace.py and hg copied it over to the devel and responsive templates.
Bernhard Reiter <bernhard@intevation.de>
parents:
4884
diff
changeset
|
4 |
|
4884
595a8c5a6d13
website: local_replace.py: Using raw strings for clarity (suggested by Thomas Arendsen Hein). One test fixed.
Bernhard Reiter <bernhard@intevation.de>
parents:
4883
diff
changeset
|
5 substitutions = [ (re.compile(r'debian:\#(?P<id>\d+)'), |
|
6969
ca62a7cc3c9b
change url into https from http.
John Rouillard <rouilj@ieee.org>
parents:
6281
diff
changeset
|
6 r'<a href="https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=\g<id>">debian#\g<id></a>' ), |
|
4884
595a8c5a6d13
website: local_replace.py: Using raw strings for clarity (suggested by Thomas Arendsen Hein). One test fixed.
Bernhard Reiter <bernhard@intevation.de>
parents:
4883
diff
changeset
|
7 (re.compile(r'\#(?P<ws>\s*)(?P<id>\d+)'), |
|
595a8c5a6d13
website: local_replace.py: Using raw strings for clarity (suggested by Thomas Arendsen Hein). One test fixed.
Bernhard Reiter <bernhard@intevation.de>
parents:
4883
diff
changeset
|
|
|
595a8c5a6d13
website: local_replace.py: Using raw strings for clarity (suggested by Thomas Arendsen Hein). One test fixed.
Bernhard Reiter <bernhard@intevation.de>
parents:
4883
diff
changeset
|
9 (re.compile(r'(?P<prews>^|\s+)issue(?P<ws>\s*)(?P<id>\d+)'), |
|
595a8c5a6d13
website: local_replace.py: Using raw strings for clarity (suggested by Thomas Arendsen Hein). One test fixed.
Bernhard Reiter <bernhard@intevation.de>
parents:
4883
diff
changeset
|
|
|
4892
29bc5484969a
Improved website/issues/extensions/local_replace.py and hg copied it over to the devel and responsive templates.
Bernhard Reiter <bernhard@intevation.de>
parents:
4884
diff
changeset
|
11 # matching the typical number:hash format of hg's own output |
|
29bc5484969a
Improved website/issues/extensions/local_replace.py and hg copied it over to the devel and responsive templates.
Bernhard Reiter <bernhard@intevation.de>
parents:
4884
diff
changeset
|
12 # and then use use hash instead of the number |
|
6281
042c50d5e06e
Make rev 2345:acbed367 use hash not revision number
John Rouillard <rouilj@ieee.org>
parents:
5341
diff
changeset
|
13 (re.compile(r'(?P<prews>(^|\s+))(?P<revstr>(rev\s*|hg\s*|changeset: ))(?P<revnumber>\d+):(?P<refhash>[0-9a-fA-F]{12,40})(?P<post>\W+|$)'), |
|
4892
29bc5484969a
Improved website/issues/extensions/local_replace.py and hg copied it over to the devel and responsive templates.
Bernhard Reiter <bernhard@intevation.de>
parents:
4884
diff
changeset
|
14 r'\g<prews><a href="' + hg_url_base + '\g<refhash>">\g<revstr>\g<revnumber>:\g<refhash></a>\g<post>'), |
|
4883
c0eb1d9f2cb7
website: local_replace.py: now explicitely match hashes with hex characters only if they are at least 4 chars long.
Bernhard Reiter <bernhard@intevation.de>
parents:
4882
diff
changeset
|
15 # matching hg revison number or hash |
|
4892
29bc5484969a
Improved website/issues/extensions/local_replace.py and hg copied it over to the devel and responsive templates.
Bernhard Reiter <bernhard@intevation.de>
parents:
4884
diff
changeset
|
16 (re.compile(r'(?P<prews>(^|\s+))(?P<revstr>(revision|rev|r)\s?)(?P<revision>([1-9][0-9]*)|[0-9a-fA-F]{4,40})(?P<post>\W+|$)'), |
|
29bc5484969a
Improved website/issues/extensions/local_replace.py and hg copied it over to the devel and responsive templates.
Bernhard Reiter <bernhard@intevation.de>
parents:
4884
diff
changeset
|
17 r'\g<prews><a href="' + hg_url_base + '\g<revision>">\g<revstr>\g<revision></a>\g<post>'), |
|
4024
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
18 ] |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
19 |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
20 def local_replace(message): |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
21 |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
22 for cre, replacement in substitutions: |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
23 message = cre.sub(replacement, message) |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
24 |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
25 return message |
|
4865
7140ebfc3764
Website, Issues: local_replace.py whitespace cleanup.
Bernhard Reiter <bernhard@intevation.de>
parents:
4232
diff
changeset
|
26 |
|
7140ebfc3764
Website, Issues: local_replace.py whitespace cleanup.
Bernhard Reiter <bernhard@intevation.de>
parents:
4232
diff
changeset
|
27 |
|
4024
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
28 def init(instance): |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
29 instance.registerUtil('localReplace', local_replace) |
|
4865
7140ebfc3764
Website, Issues: local_replace.py whitespace cleanup.
Bernhard Reiter <bernhard@intevation.de>
parents:
4232
diff
changeset
|
30 |
|
6281
042c50d5e06e
Make rev 2345:acbed367 use hash not revision number
John Rouillard <rouilj@ieee.org>
parents:
5341
diff
changeset
|
31 def quicktest(msgstr, should_replace = True, substr = True): |
|
5341
9af22cfa3a2b
local_replace: improve self-test.
Bernhard Reiter <bernhard@intevation.de>
parents:
4972
diff
changeset
|
32 testcount['run'] += 1 |
|
9af22cfa3a2b
local_replace: improve self-test.
Bernhard Reiter <bernhard@intevation.de>
parents:
4972
diff
changeset
|
33 replacedstr = local_replace(msgstr) |
|
9af22cfa3a2b
local_replace: improve self-test.
Bernhard Reiter <bernhard@intevation.de>
parents:
4972
diff
changeset
|
34 |
|
9af22cfa3a2b
local_replace: improve self-test.
Bernhard Reiter <bernhard@intevation.de>
parents:
4972
diff
changeset
|
35 if not (not replacedstr == msgstr ) == should_replace: |
|
9af22cfa3a2b
local_replace: improve self-test.
Bernhard Reiter <bernhard@intevation.de>
parents:
4972
diff
changeset
|
36 print("(fail)", end=' ') |
|
9af22cfa3a2b
local_replace: improve self-test.
Bernhard Reiter <bernhard@intevation.de>
parents:
4972
diff
changeset
|
37 testcount['failed'] += 1 |
|
6281
042c50d5e06e
Make rev 2345:acbed367 use hash not revision number
John Rouillard <rouilj@ieee.org>
parents:
5341
diff
changeset
|
38 elif substr and (msgstr not in replacedstr): |
|
042c50d5e06e
Make rev 2345:acbed367 use hash not revision number
John Rouillard <rouilj@ieee.org>
parents:
5341
diff
changeset
|
39 print("(fail)", end=' ') |
|
042c50d5e06e
Make rev 2345:acbed367 use hash not revision number
John Rouillard <rouilj@ieee.org>
parents:
5341
diff
changeset
|
40 testcount['failed'] += 1 |
|
5341
9af22cfa3a2b
local_replace: improve self-test.
Bernhard Reiter <bernhard@intevation.de>
parents:
4972
diff
changeset
|
41 |
|
9af22cfa3a2b
local_replace: improve self-test.
Bernhard Reiter <bernhard@intevation.de>
parents:
4972
diff
changeset
|
42 if replacedstr == msgstr: |
|
9af22cfa3a2b
local_replace: improve self-test.
Bernhard Reiter <bernhard@intevation.de>
parents:
4972
diff
changeset
|
43 print( "'%s'" % (msgstr,)) |
|
9af22cfa3a2b
local_replace: improve self-test.
Bernhard Reiter <bernhard@intevation.de>
parents:
4972
diff
changeset
|
44 else: |
|
9af22cfa3a2b
local_replace: improve self-test.
Bernhard Reiter <bernhard@intevation.de>
parents:
4972
diff
changeset
|
45 print("'%s' -> '%s'" % (msgstr, replacedstr)) |
|
4024
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
46 |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
47 if "__main__" == __name__: |
|
5341
9af22cfa3a2b
local_replace: improve self-test.
Bernhard Reiter <bernhard@intevation.de>
parents:
4972
diff
changeset
|
48 testcount = {'run':0 , 'failed': 0} |
|
9af22cfa3a2b
local_replace: improve self-test.
Bernhard Reiter <bernhard@intevation.de>
parents:
4972
diff
changeset
|
49 print("Replacement examples:") |
|
6281
042c50d5e06e
Make rev 2345:acbed367 use hash not revision number
John Rouillard <rouilj@ieee.org>
parents:
5341
diff
changeset
|
50 quicktest(" debian:#222", substr=False) |
|
042c50d5e06e
Make rev 2345:acbed367 use hash not revision number
John Rouillard <rouilj@ieee.org>
parents:
5341
diff
changeset
|
51 quicktest(" #555", substr=False) |
|
4882
7f02765c6c31
website: local_replace.py: fixed one corner case for hg revisions. Better test.
Bernhard Reiter <bernhard@intevation.de>
parents:
4874
diff
changeset
|
52 quicktest("issue333") |
|
6281
042c50d5e06e
Make rev 2345:acbed367 use hash not revision number
John Rouillard <rouilj@ieee.org>
parents:
5341
diff
changeset
|
53 quicktest(" revision 222", substr=False) |
|
042c50d5e06e
Make rev 2345:acbed367 use hash not revision number
John Rouillard <rouilj@ieee.org>
parents:
5341
diff
changeset
|
54 quicktest(" r 222", substr=False) |
|
4882
7f02765c6c31
website: local_replace.py: fixed one corner case for hg revisions. Better test.
Bernhard Reiter <bernhard@intevation.de>
parents:
4874
diff
changeset
|
55 quicktest(" wordthatendswithr 222", False) |
|
7f02765c6c31
website: local_replace.py: fixed one corner case for hg revisions. Better test.
Bernhard Reiter <bernhard@intevation.de>
parents:
4874
diff
changeset
|
56 quicktest(" references", False) |
|
7f02765c6c31
website: local_replace.py: fixed one corner case for hg revisions. Better test.
Bernhard Reiter <bernhard@intevation.de>
parents:
4874
diff
changeset
|
57 quicktest(" too many spaces r 222", False) |
|
7f02765c6c31
website: local_replace.py: fixed one corner case for hg revisions. Better test.
Bernhard Reiter <bernhard@intevation.de>
parents:
4874
diff
changeset
|
58 quicktest("re-evaluate", False) |
|
7f02765c6c31
website: local_replace.py: fixed one corner case for hg revisions. Better test.
Bernhard Reiter <bernhard@intevation.de>
parents:
4874
diff
changeset
|
59 quicktest("rex140eb", False) |
|
4883
c0eb1d9f2cb7
website: local_replace.py: now explicitely match hashes with hex characters only if they are at least 4 chars long.
Bernhard Reiter <bernhard@intevation.de>
parents:
4882
diff
changeset
|
60 quicktest("rev 012", False) # too short for a hg hash |
|
4884
595a8c5a6d13
website: local_replace.py: Using raw strings for clarity (suggested by Thomas Arendsen Hein). One test fixed.
Bernhard Reiter <bernhard@intevation.de>
parents:
4883
diff
changeset
|
61 quicktest("rev 0123") |
|
4882
7f02765c6c31
website: local_replace.py: fixed one corner case for hg revisions. Better test.
Bernhard Reiter <bernhard@intevation.de>
parents:
4874
diff
changeset
|
62 quicktest("re140eb") |
|
6281
042c50d5e06e
Make rev 2345:acbed367 use hash not revision number
John Rouillard <rouilj@ieee.org>
parents:
5341
diff
changeset
|
63 quicktest(" r7140eb", substr=False) |
|
042c50d5e06e
Make rev 2345:acbed367 use hash not revision number
John Rouillard <rouilj@ieee.org>
parents:
5341
diff
changeset
|
64 quicktest(" rev7140eb ", substr=False) |
|
4882
7f02765c6c31
website: local_replace.py: fixed one corner case for hg revisions. Better test.
Bernhard Reiter <bernhard@intevation.de>
parents:
4874
diff
changeset
|
65 quicktest("rev7140eb") |
|
6281
042c50d5e06e
Make rev 2345:acbed367 use hash not revision number
John Rouillard <rouilj@ieee.org>
parents:
5341
diff
changeset
|
66 quicktest("rev7140eb,", substr=False) |
|
4892
29bc5484969a
Improved website/issues/extensions/local_replace.py and hg copied it over to the devel and responsive templates.
Bernhard Reiter <bernhard@intevation.de>
parents:
4884
diff
changeset
|
67 quicktest("rev4891:ad3d628e73f2") |
|
29bc5484969a
Improved website/issues/extensions/local_replace.py and hg copied it over to the devel and responsive templates.
Bernhard Reiter <bernhard@intevation.de>
parents:
4884
diff
changeset
|
68 quicktest("hg4891:ad3d628e73f2") |
|
4972
f87c0cca37ae
Added: Matching hg log output in messages example.
Bernhard Reiter <bernhard@intevation.de>
parents:
4892
diff
changeset
|
69 quicktest("changeset: 4542:46239c21a1eb") |
|
6281
042c50d5e06e
Make rev 2345:acbed367 use hash not revision number
John Rouillard <rouilj@ieee.org>
parents:
5341
diff
changeset
|
70 quicktest("rev 4542:46239c21a1eb") |
|
042c50d5e06e
Make rev 2345:acbed367 use hash not revision number
John Rouillard <rouilj@ieee.org>
parents:
5341
diff
changeset
|
71 quicktest("rev 4542:46239c21a1eb") # many spaces |
|
5341
9af22cfa3a2b
local_replace: improve self-test.
Bernhard Reiter <bernhard@intevation.de>
parents:
4972
diff
changeset
|
72 print() |
|
9af22cfa3a2b
local_replace: improve self-test.
Bernhard Reiter <bernhard@intevation.de>
parents:
4972
diff
changeset
|
73 print(testcount) |
