tests/test-mailmap.t
author Gregory Szorc <gregory.szorc@gmail.com>
Thu, 05 Apr 2018 16:31:45 -0700
changeset 37443 65250a66b55c
parent 37260 8e57c3b0dce4
permissions -rw-r--r--
revlog: move censor logic into main revlog class Previously, the revlog class implemented dummy methods for various censor-related functionality. Revision censoring was (and will continue to be) only possible on filelog instances. So filelog implemented these methods to perform something reasonable. A problem with implementing censoring on filelog is that it assumes filelog is a revlog. Upcoming work to formalize the filelog interface will make this not true. Furthermore, the censoring logic is security-sensitive. I think action-at-a-distance with custom implementation of core revlog APIs in derived classes is a bit dangerous. I think at a minimum the censor logic should live in revlog.py. I was tempted to created a "censored revlog" class that basically pulled these methods out of filelog. But, I wasn't a huge fan of overriding core methods in child classes. A reason to do that would be performance. However, the censoring code only comes into play when: * hash verification fails * delta generation * applying deltas from changegroups The new code is conditional on an instance attribute. So the overhead for running the censored code when the revlog isn't censorable is an attribute lookup. All of these operations are at least a magnitude slower than a Python attribute lookup. So there shouldn't be a performance concern. Differential Revision: https://phab.mercurial-scm.org/D3151
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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