annotate tests/test-mailmap.t @ 47343:9f798c1b0d89 stable

cext: fix memory leak in phases computation Without this a buffer whose size in bytes is the number of changesets in the repository is leaked each time the repository is opened and changeset phases are computed. Impact: the current code in hgwebdir creates a new `localrepository` instance for each HTTP request. Since any pull or push is made of several requests, a team of 100 people can easily produce thousands of such requests per day. Being a low-level malloc, this leak can't be seen with the gc module and tools relying on that, but was spotted by valgrind immediately. Reproduction ------------ for i in range(cl_args.iterations): repo = hg.repository(baseui, repo_path) rev = repo.revs(rev).first() ctx = repo[rev] del ctx del repo # avoid any pollution by other type of leak # (that should be fixed in 5.8) repoview._filteredrepotypes.clear() gc.collect() Measurements ------------ Resident Set Size (RSS), taken on a clone of mozilla-central for performance analysis (440 000 changesets). before: 5.8+hg19.5ac0f2a8ba72 1000 iterations: 1606MB 5.8+hg19.5ac0f2a8ba72 10000 iterations: 5723MB after: 5.8+hg20.e2084d39e145 1000 iterations: 555MB 5.8+hg20.e2084d39e145 10000 iterations: 555MB (double checked, not a copy/paste error) (e2084d39e14 is the present changeset, before amendment of the message to add the measurements)
author Georges Racinet <georges.racinet@octobus.net>
date Sun, 06 Jun 2021 01:24:30 +0200
parents 8e57c3b0dce4
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
37210
2a2ce93e12f4 templatefuncs: add mailmap template function
Connor Sheehan <sheehan@mozilla.com>
parents:
diff changeset
1 Create a repo and add some commits
2a2ce93e12f4 templatefuncs: add mailmap template function
Connor Sheehan <sheehan@mozilla.com>
parents:
diff changeset
2
2a2ce93e12f4 templatefuncs: add mailmap template function
Connor Sheehan <sheehan@mozilla.com>
parents:
diff changeset
3 $ hg init mm
2a2ce93e12f4 templatefuncs: add mailmap template function
Connor Sheehan <sheehan@mozilla.com>
parents:
diff changeset
4 $ cd mm
2a2ce93e12f4 templatefuncs: add mailmap template function
Connor Sheehan <sheehan@mozilla.com>
parents:
diff changeset
5 $ echo "Test content" > testfile1
2a2ce93e12f4 templatefuncs: add mailmap template function
Connor Sheehan <sheehan@mozilla.com>
parents:
diff changeset
6 $ hg add testfile1
2a2ce93e12f4 templatefuncs: add mailmap template function
Connor Sheehan <sheehan@mozilla.com>
parents:
diff changeset
7 $ hg commit -m "First commit" -u "Proper <commit@m.c>"
2a2ce93e12f4 templatefuncs: add mailmap template function
Connor Sheehan <sheehan@mozilla.com>
parents:
diff changeset
8 $ echo "Test content 2" > testfile2
2a2ce93e12f4 templatefuncs: add mailmap template function
Connor Sheehan <sheehan@mozilla.com>
parents:
diff changeset
9 $ hg add testfile2
2a2ce93e12f4 templatefuncs: add mailmap template function
Connor Sheehan <sheehan@mozilla.com>
parents:
diff changeset
10 $ hg commit -m "Second commit" -u "Commit Name 2 <commit2@m.c>"
2a2ce93e12f4 templatefuncs: add mailmap template function
Connor Sheehan <sheehan@mozilla.com>
parents:
diff changeset
11 $ echo "Test content 3" > testfile3
2a2ce93e12f4 templatefuncs: add mailmap template function
Connor Sheehan <sheehan@mozilla.com>
parents:
diff changeset
12 $ hg add testfile3
2a2ce93e12f4 templatefuncs: add mailmap template function
Connor Sheehan <sheehan@mozilla.com>
parents:
diff changeset
13 $ hg commit -m "Third commit" -u "Commit Name 3 <commit3@m.c>"
2a2ce93e12f4 templatefuncs: add mailmap template function
Connor Sheehan <sheehan@mozilla.com>
parents:
diff changeset
14 $ echo "Test content 4" > testfile4
2a2ce93e12f4 templatefuncs: add mailmap template function
Connor Sheehan <sheehan@mozilla.com>
parents:
diff changeset
15 $ hg add testfile4
2a2ce93e12f4 templatefuncs: add mailmap template function
Connor Sheehan <sheehan@mozilla.com>
parents:
diff changeset
16 $ hg commit -m "Fourth commit" -u "Commit Name 4 <commit4@m.c>"
2a2ce93e12f4 templatefuncs: add mailmap template function
Connor Sheehan <sheehan@mozilla.com>
parents:
diff changeset
17
2a2ce93e12f4 templatefuncs: add mailmap template function
Connor Sheehan <sheehan@mozilla.com>
parents:
diff changeset
18 Add a .mailmap file with each possible entry type plus comments
2a2ce93e12f4 templatefuncs: add mailmap template function
Connor Sheehan <sheehan@mozilla.com>
parents:
diff changeset
19 $ cat > .mailmap << EOF
2a2ce93e12f4 templatefuncs: add mailmap template function
Connor Sheehan <sheehan@mozilla.com>
parents:
diff changeset
20 > # Comment shouldn't break anything
2a2ce93e12f4 templatefuncs: add mailmap template function
Connor Sheehan <sheehan@mozilla.com>
parents:
diff changeset
21 > <proper@m.c> <commit@m.c> # Should update email only
2a2ce93e12f4 templatefuncs: add mailmap template function
Connor Sheehan <sheehan@mozilla.com>
parents:
diff changeset
22 > Proper Name 2 <commit2@m.c> # Should update name only
2a2ce93e12f4 templatefuncs: add mailmap template function
Connor Sheehan <sheehan@mozilla.com>
parents:
diff changeset
23 > Proper Name 3 <proper@m.c> <commit3@m.c> # Should update name, email due to email
2a2ce93e12f4 templatefuncs: add mailmap template function
Connor Sheehan <sheehan@mozilla.com>
parents:
diff changeset
24 > Proper Name 4 <proper@m.c> Commit Name 4 <commit4@m.c> # Should update name, email due to name, email
2a2ce93e12f4 templatefuncs: add mailmap template function
Connor Sheehan <sheehan@mozilla.com>
parents:
diff changeset
25 > EOF
2a2ce93e12f4 templatefuncs: add mailmap template function
Connor Sheehan <sheehan@mozilla.com>
parents:
diff changeset
26 $ hg add .mailmap
2a2ce93e12f4 templatefuncs: add mailmap template function
Connor Sheehan <sheehan@mozilla.com>
parents:
diff changeset
27 $ hg commit -m "Add mailmap file" -u "Testuser <test123@m.c>"
2a2ce93e12f4 templatefuncs: add mailmap template function
Connor Sheehan <sheehan@mozilla.com>
parents:
diff changeset
28
2a2ce93e12f4 templatefuncs: add mailmap template function
Connor Sheehan <sheehan@mozilla.com>
parents:
diff changeset
29 Output of commits should be normal without filter
2a2ce93e12f4 templatefuncs: add mailmap template function
Connor Sheehan <sheehan@mozilla.com>
parents:
diff changeset
30 $ hg log -T "{author}\n" -r "all()"
2a2ce93e12f4 templatefuncs: add mailmap template function
Connor Sheehan <sheehan@mozilla.com>
parents:
diff changeset
31 Proper <commit@m.c>
2a2ce93e12f4 templatefuncs: add mailmap template function
Connor Sheehan <sheehan@mozilla.com>
parents:
diff changeset
32 Commit Name 2 <commit2@m.c>
2a2ce93e12f4 templatefuncs: add mailmap template function
Connor Sheehan <sheehan@mozilla.com>
parents:
diff changeset
33 Commit Name 3 <commit3@m.c>
2a2ce93e12f4 templatefuncs: add mailmap template function
Connor Sheehan <sheehan@mozilla.com>
parents:
diff changeset
34 Commit Name 4 <commit4@m.c>
2a2ce93e12f4 templatefuncs: add mailmap template function
Connor Sheehan <sheehan@mozilla.com>
parents:
diff changeset
35 Testuser <test123@m.c>
2a2ce93e12f4 templatefuncs: add mailmap template function
Connor Sheehan <sheehan@mozilla.com>
parents:
diff changeset
36
2a2ce93e12f4 templatefuncs: add mailmap template function
Connor Sheehan <sheehan@mozilla.com>
parents:
diff changeset
37 Output of commits with filter shows their mailmap values
2a2ce93e12f4 templatefuncs: add mailmap template function
Connor Sheehan <sheehan@mozilla.com>
parents:
diff changeset
38 $ hg log -T "{mailmap(author)}\n" -r "all()"
2a2ce93e12f4 templatefuncs: add mailmap template function
Connor Sheehan <sheehan@mozilla.com>
parents:
diff changeset
39 Proper <proper@m.c>
2a2ce93e12f4 templatefuncs: add mailmap template function
Connor Sheehan <sheehan@mozilla.com>
parents:
diff changeset
40 Proper Name 2 <commit2@m.c>
2a2ce93e12f4 templatefuncs: add mailmap template function
Connor Sheehan <sheehan@mozilla.com>
parents:
diff changeset
41 Proper Name 3 <proper@m.c>
2a2ce93e12f4 templatefuncs: add mailmap template function
Connor Sheehan <sheehan@mozilla.com>
parents:
diff changeset
42 Proper Name 4 <proper@m.c>
2a2ce93e12f4 templatefuncs: add mailmap template function
Connor Sheehan <sheehan@mozilla.com>
parents:
diff changeset
43 Testuser <test123@m.c>
2a2ce93e12f4 templatefuncs: add mailmap template function
Connor Sheehan <sheehan@mozilla.com>
parents:
diff changeset
44
2a2ce93e12f4 templatefuncs: add mailmap template function
Connor Sheehan <sheehan@mozilla.com>
parents:
diff changeset
45 Add new mailmap entry for testuser
2a2ce93e12f4 templatefuncs: add mailmap template function
Connor Sheehan <sheehan@mozilla.com>
parents:
diff changeset
46 $ cat >> .mailmap << EOF
2a2ce93e12f4 templatefuncs: add mailmap template function
Connor Sheehan <sheehan@mozilla.com>
parents:
diff changeset
47 > <newmmentry@m.c> <test123@m.c>
2a2ce93e12f4 templatefuncs: add mailmap template function
Connor Sheehan <sheehan@mozilla.com>
parents:
diff changeset
48 > EOF
2a2ce93e12f4 templatefuncs: add mailmap template function
Connor Sheehan <sheehan@mozilla.com>
parents:
diff changeset
49
2a2ce93e12f4 templatefuncs: add mailmap template function
Connor Sheehan <sheehan@mozilla.com>
parents:
diff changeset
50 Output of commits with filter shows their updated mailmap values
2a2ce93e12f4 templatefuncs: add mailmap template function
Connor Sheehan <sheehan@mozilla.com>
parents:
diff changeset
51 $ hg log -T "{mailmap(author)}\n" -r "all()"
2a2ce93e12f4 templatefuncs: add mailmap template function
Connor Sheehan <sheehan@mozilla.com>
parents:
diff changeset
52 Proper <proper@m.c>
2a2ce93e12f4 templatefuncs: add mailmap template function
Connor Sheehan <sheehan@mozilla.com>
parents:
diff changeset
53 Proper Name 2 <commit2@m.c>
2a2ce93e12f4 templatefuncs: add mailmap template function
Connor Sheehan <sheehan@mozilla.com>
parents:
diff changeset
54 Proper Name 3 <proper@m.c>
2a2ce93e12f4 templatefuncs: add mailmap template function
Connor Sheehan <sheehan@mozilla.com>
parents:
diff changeset
55 Proper Name 4 <proper@m.c>
2a2ce93e12f4 templatefuncs: add mailmap template function
Connor Sheehan <sheehan@mozilla.com>
parents:
diff changeset
56 Testuser <newmmentry@m.c>
2a2ce93e12f4 templatefuncs: add mailmap template function
Connor Sheehan <sheehan@mozilla.com>
parents:
diff changeset
57
2a2ce93e12f4 templatefuncs: add mailmap template function
Connor Sheehan <sheehan@mozilla.com>
parents:
diff changeset
58 A commit with improperly formatted user field should not break the filter
2a2ce93e12f4 templatefuncs: add mailmap template function
Connor Sheehan <sheehan@mozilla.com>
parents:
diff changeset
59 $ echo "some more test content" > testfile1
2a2ce93e12f4 templatefuncs: add mailmap template function
Connor Sheehan <sheehan@mozilla.com>
parents:
diff changeset
60 $ hg commit -m "Commit with improper user field" -u "Improper user"
2a2ce93e12f4 templatefuncs: add mailmap template function
Connor Sheehan <sheehan@mozilla.com>
parents:
diff changeset
61 $ hg log -T "{mailmap(author)}\n" -r "all()"
2a2ce93e12f4 templatefuncs: add mailmap template function
Connor Sheehan <sheehan@mozilla.com>
parents:
diff changeset
62 Proper <proper@m.c>
2a2ce93e12f4 templatefuncs: add mailmap template function
Connor Sheehan <sheehan@mozilla.com>
parents:
diff changeset
63 Proper Name 2 <commit2@m.c>
2a2ce93e12f4 templatefuncs: add mailmap template function
Connor Sheehan <sheehan@mozilla.com>
parents:
diff changeset
64 Proper Name 3 <proper@m.c>
2a2ce93e12f4 templatefuncs: add mailmap template function
Connor Sheehan <sheehan@mozilla.com>
parents:
diff changeset
65 Proper Name 4 <proper@m.c>
2a2ce93e12f4 templatefuncs: add mailmap template function
Connor Sheehan <sheehan@mozilla.com>
parents:
diff changeset
66 Testuser <newmmentry@m.c>
2a2ce93e12f4 templatefuncs: add mailmap template function
Connor Sheehan <sheehan@mozilla.com>
parents:
diff changeset
67 Improper user
37260
8e57c3b0dce4 templatefuncs: do not crash because of invalid value fed to mailmap()
Yuya Nishihara <yuya@tcha.org>
parents: 37210
diff changeset
68
8e57c3b0dce4 templatefuncs: do not crash because of invalid value fed to mailmap()
Yuya Nishihara <yuya@tcha.org>
parents: 37210
diff changeset
69 No TypeError beacause of invalid input
8e57c3b0dce4 templatefuncs: do not crash because of invalid value fed to mailmap()
Yuya Nishihara <yuya@tcha.org>
parents: 37210
diff changeset
70
8e57c3b0dce4 templatefuncs: do not crash because of invalid value fed to mailmap()
Yuya Nishihara <yuya@tcha.org>
parents: 37210
diff changeset
71 $ hg log -T '{mailmap(termwidth)}\n' -r0
8e57c3b0dce4 templatefuncs: do not crash because of invalid value fed to mailmap()
Yuya Nishihara <yuya@tcha.org>
parents: 37210
diff changeset
72 80