tests/test-revlog.t
author Martin von Zweigbergk <martinvonz@google.com>
Tue, 15 Aug 2017 23:23:55 -0700
branchstable
changeset 33862 fb672eac2702
parent 32392 36d3559c69a6
child 36484 71d1bbf1617e
permissions -rw-r--r--
templatekw: choose {latesttag} by len(changes), not date (issue5659) As Augie reported in the bug, the current heuristic of choosing the best tag of a merge commit by taking the one with newest tag (in terms of tagging date) currently fails in the Mercurial repo itself. Copying the example from Yuya: $ hg glog -T '{node|short} {latesttag}+{latesttagdistance}\n' \ -r '4.2.3: & (merge() + parents(merge()) + tag())' o 02a745c20121 4.2.3+5 |\ | o 86aca74a063b 4.2.3+4 | |\ | | o e6d8ee3c9ec3 4.3-rc+109 | | | | | ~ o | a3ce07e2dde5 4.3.1+2 : | o | 3fee7f7d2da0 4.3.1+0 |/ o 98e990bb7330 4.2.3+3 |\ | ~ o 506d7e48fbe6 4.2.3+2 : o 943c91326b23 4.2.3+0 | ~ It seems to me like the best choice is the tag with the smallest number of changes since it (across all paths, not the longest single path). So that's what this patch does, even though it's costly. Best-of-5 timings for Yuya's command above shows a slowdown from 1.293s to 1.610s. We can optimize it later. Differential Revision: https://phab.mercurial-scm.org/D447
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
32391
3ea1f1e71a0a tests: tests for revlog version and flags loading
Gregory Szorc <gregory.szorc@gmail.com>
parents: 32371
diff changeset
     1
  $ hg init empty-repo
3ea1f1e71a0a tests: tests for revlog version and flags loading
Gregory Szorc <gregory.szorc@gmail.com>
parents: 32371
diff changeset
     2
  $ cd empty-repo
3ea1f1e71a0a tests: tests for revlog version and flags loading
Gregory Szorc <gregory.szorc@gmail.com>
parents: 32371
diff changeset
     3
3ea1f1e71a0a tests: tests for revlog version and flags loading
Gregory Szorc <gregory.szorc@gmail.com>
parents: 32371
diff changeset
     4
Flags on revlog version 0 are rejected
3ea1f1e71a0a tests: tests for revlog version and flags loading
Gregory Szorc <gregory.szorc@gmail.com>
parents: 32371
diff changeset
     5
3ea1f1e71a0a tests: tests for revlog version and flags loading
Gregory Szorc <gregory.szorc@gmail.com>
parents: 32371
diff changeset
     6
  >>> with open('.hg/store/00changelog.i', 'wb') as fh:
3ea1f1e71a0a tests: tests for revlog version and flags loading
Gregory Szorc <gregory.szorc@gmail.com>
parents: 32371
diff changeset
     7
  ...     fh.write('\x00\x01\x00\x00')
3ea1f1e71a0a tests: tests for revlog version and flags loading
Gregory Szorc <gregory.szorc@gmail.com>
parents: 32371
diff changeset
     8
3ea1f1e71a0a tests: tests for revlog version and flags loading
Gregory Szorc <gregory.szorc@gmail.com>
parents: 32371
diff changeset
     9
  $ hg log
32392
36d3559c69a6 revlog: tweak wording and logic for flags validation
Gregory Szorc <gregory.szorc@gmail.com>
parents: 32391
diff changeset
    10
  abort: unknown flags (0x01) in version 0 revlog 00changelog.i!
32391
3ea1f1e71a0a tests: tests for revlog version and flags loading
Gregory Szorc <gregory.szorc@gmail.com>
parents: 32371
diff changeset
    11
  [255]
3ea1f1e71a0a tests: tests for revlog version and flags loading
Gregory Szorc <gregory.szorc@gmail.com>
parents: 32371
diff changeset
    12
3ea1f1e71a0a tests: tests for revlog version and flags loading
Gregory Szorc <gregory.szorc@gmail.com>
parents: 32371
diff changeset
    13
Unknown flags on revlog version 1 are rejected
3ea1f1e71a0a tests: tests for revlog version and flags loading
Gregory Szorc <gregory.szorc@gmail.com>
parents: 32371
diff changeset
    14
3ea1f1e71a0a tests: tests for revlog version and flags loading
Gregory Szorc <gregory.szorc@gmail.com>
parents: 32371
diff changeset
    15
  >>> with open('.hg/store/00changelog.i', 'wb') as fh:
3ea1f1e71a0a tests: tests for revlog version and flags loading
Gregory Szorc <gregory.szorc@gmail.com>
parents: 32371
diff changeset
    16
  ...     fh.write('\x00\x04\x00\x01')
3ea1f1e71a0a tests: tests for revlog version and flags loading
Gregory Szorc <gregory.szorc@gmail.com>
parents: 32371
diff changeset
    17
3ea1f1e71a0a tests: tests for revlog version and flags loading
Gregory Szorc <gregory.szorc@gmail.com>
parents: 32371
diff changeset
    18
  $ hg log
32392
36d3559c69a6 revlog: tweak wording and logic for flags validation
Gregory Szorc <gregory.szorc@gmail.com>
parents: 32391
diff changeset
    19
  abort: unknown flags (0x04) in version 1 revlog 00changelog.i!
32391
3ea1f1e71a0a tests: tests for revlog version and flags loading
Gregory Szorc <gregory.szorc@gmail.com>
parents: 32371
diff changeset
    20
  [255]
3ea1f1e71a0a tests: tests for revlog version and flags loading
Gregory Szorc <gregory.szorc@gmail.com>
parents: 32371
diff changeset
    21
3ea1f1e71a0a tests: tests for revlog version and flags loading
Gregory Szorc <gregory.szorc@gmail.com>
parents: 32371
diff changeset
    22
Unknown version is rejected
3ea1f1e71a0a tests: tests for revlog version and flags loading
Gregory Szorc <gregory.szorc@gmail.com>
parents: 32371
diff changeset
    23
3ea1f1e71a0a tests: tests for revlog version and flags loading
Gregory Szorc <gregory.szorc@gmail.com>
parents: 32371
diff changeset
    24
  >>> with open('.hg/store/00changelog.i', 'wb') as fh:
3ea1f1e71a0a tests: tests for revlog version and flags loading
Gregory Szorc <gregory.szorc@gmail.com>
parents: 32371
diff changeset
    25
  ...     fh.write('\x00\x00\x00\x02')
3ea1f1e71a0a tests: tests for revlog version and flags loading
Gregory Szorc <gregory.szorc@gmail.com>
parents: 32371
diff changeset
    26
3ea1f1e71a0a tests: tests for revlog version and flags loading
Gregory Szorc <gregory.szorc@gmail.com>
parents: 32371
diff changeset
    27
  $ hg log
32392
36d3559c69a6 revlog: tweak wording and logic for flags validation
Gregory Szorc <gregory.szorc@gmail.com>
parents: 32391
diff changeset
    28
  abort: unknown version (2) in revlog 00changelog.i!
32391
3ea1f1e71a0a tests: tests for revlog version and flags loading
Gregory Szorc <gregory.szorc@gmail.com>
parents: 32371
diff changeset
    29
  [255]
3ea1f1e71a0a tests: tests for revlog version and flags loading
Gregory Szorc <gregory.szorc@gmail.com>
parents: 32371
diff changeset
    30
3ea1f1e71a0a tests: tests for revlog version and flags loading
Gregory Szorc <gregory.szorc@gmail.com>
parents: 32371
diff changeset
    31
  $ cd ..
3ea1f1e71a0a tests: tests for revlog version and flags loading
Gregory Szorc <gregory.szorc@gmail.com>
parents: 32371
diff changeset
    32
28656
b6ed2505d6cf parsers: fix list sizing rounding error (SEC)
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
    33
Test for CVE-2016-3630
b6ed2505d6cf parsers: fix list sizing rounding error (SEC)
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
    34
b6ed2505d6cf parsers: fix list sizing rounding error (SEC)
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
    35
  $ hg init
b6ed2505d6cf parsers: fix list sizing rounding error (SEC)
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
    36
b6ed2505d6cf parsers: fix list sizing rounding error (SEC)
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
    37
  >>> open("a.i", "w").write(
b6ed2505d6cf parsers: fix list sizing rounding error (SEC)
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
    38
  ... """eJxjYGZgZIAAYQYGxhgom+k/FMx8YKx9ZUaKSOyqo4cnuKb8mbqHV5cBCVTMWb1Cwqkhe4Gsg9AD
b6ed2505d6cf parsers: fix list sizing rounding error (SEC)
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
    39
  ... Joa3dYtcYYYBAQ8Qr4OqZAYRICPTSr5WKd/42rV36d+8/VmrNpv7NP1jQAXrQE4BqQUARngwVA=="""
b6ed2505d6cf parsers: fix list sizing rounding error (SEC)
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
    40
  ... .decode("base64").decode("zlib"))
b6ed2505d6cf parsers: fix list sizing rounding error (SEC)
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
    41
b6ed2505d6cf parsers: fix list sizing rounding error (SEC)
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
    42
  $ hg debugindex a.i
b6ed2505d6cf parsers: fix list sizing rounding error (SEC)
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
    43
     rev    offset  length  delta linkrev nodeid       p1           p2
b6ed2505d6cf parsers: fix list sizing rounding error (SEC)
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
    44
       0         0      19     -1       2 99e0332bd498 000000000000 000000000000
b6ed2505d6cf parsers: fix list sizing rounding error (SEC)
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
    45
       1        19      12      0       3 6674f57a23d8 99e0332bd498 000000000000
28782
f736f98e16ca mpatch: unify mpatchError (issue5182)
timeless <timeless@mozdev.org>
parents: 28656
diff changeset
    46
  $ hg debugdata a.i 1 2>&1 | egrep 'Error:.*decoded'
32371
151cc3b3d799 mpatch: switch to policy importer
Yuya Nishihara <yuya@tcha.org>
parents: 28783
diff changeset
    47
  (mercurial\.\w+\.mpatch\.)?mpatchError: patch cannot be decoded (re)