tests/test-revlog.t
author Pierre-Yves David <pierre-yves.david@octobus.net>
Mon, 03 May 2021 12:22:36 +0200
changeset 47164 8d3c2f9d4af7
parent 47089 4c041c71ec01
child 47171 3a9f3470922c
permissions -rw-r--r--
revlog: use a "radix" to address revlog Instead of pointing to the index directly and to derive the other file from that, we directly provide the radix and let the revlog determine the associated file path internally. This is more robust and will give us more flexibility for picking this file name in the future. Differential Revision: https://phab.mercurial-scm.org/D10576
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
32429
3ea1f1e71a0a tests: tests for revlog version and flags loading
Gregory Szorc <gregory.szorc@gmail.com>
parents: 32410
diff changeset
     1
  $ hg init empty-repo
3ea1f1e71a0a tests: tests for revlog version and flags loading
Gregory Szorc <gregory.szorc@gmail.com>
parents: 32410
diff changeset
     2
  $ cd empty-repo
3ea1f1e71a0a tests: tests for revlog version and flags loading
Gregory Szorc <gregory.szorc@gmail.com>
parents: 32410
diff changeset
     3
3ea1f1e71a0a tests: tests for revlog version and flags loading
Gregory Szorc <gregory.szorc@gmail.com>
parents: 32410
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: 32410
diff changeset
     5
3ea1f1e71a0a tests: tests for revlog version and flags loading
Gregory Szorc <gregory.szorc@gmail.com>
parents: 32410
diff changeset
     6
  >>> with open('.hg/store/00changelog.i', 'wb') as fh:
38113
0a10f142299d py3: suppress the output from .write() calls in few tests
Pulkit Goyal <7895pulkit@gmail.com>
parents: 37285
diff changeset
     7
  ...     fh.write(b'\x00\x01\x00\x00') and None
32429
3ea1f1e71a0a tests: tests for revlog version and flags loading
Gregory Szorc <gregory.szorc@gmail.com>
parents: 32410
diff changeset
     8
3ea1f1e71a0a tests: tests for revlog version and flags loading
Gregory Szorc <gregory.szorc@gmail.com>
parents: 32410
diff changeset
     9
  $ hg log
45921
95c4cca641f6 errors: remove trailing "!" from some error messages for consistency
Martin von Zweigbergk <martinvonz@google.com>
parents: 40281
diff changeset
    10
  abort: unknown flags (0x01) in version 0 revlog 00changelog.i
46117
17a695357270 errors: use detailed exit code 50 for StorageError
Martin von Zweigbergk <martinvonz@google.com>
parents: 45921
diff changeset
    11
  [50]
32429
3ea1f1e71a0a tests: tests for revlog version and flags loading
Gregory Szorc <gregory.szorc@gmail.com>
parents: 32410
diff changeset
    12
3ea1f1e71a0a tests: tests for revlog version and flags loading
Gregory Szorc <gregory.szorc@gmail.com>
parents: 32410
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: 32410
diff changeset
    14
3ea1f1e71a0a tests: tests for revlog version and flags loading
Gregory Szorc <gregory.szorc@gmail.com>
parents: 32410
diff changeset
    15
  >>> with open('.hg/store/00changelog.i', 'wb') as fh:
38113
0a10f142299d py3: suppress the output from .write() calls in few tests
Pulkit Goyal <7895pulkit@gmail.com>
parents: 37285
diff changeset
    16
  ...     fh.write(b'\x00\x04\x00\x01') and None
32429
3ea1f1e71a0a tests: tests for revlog version and flags loading
Gregory Szorc <gregory.szorc@gmail.com>
parents: 32410
diff changeset
    17
3ea1f1e71a0a tests: tests for revlog version and flags loading
Gregory Szorc <gregory.szorc@gmail.com>
parents: 32410
diff changeset
    18
  $ hg log
45921
95c4cca641f6 errors: remove trailing "!" from some error messages for consistency
Martin von Zweigbergk <martinvonz@google.com>
parents: 40281
diff changeset
    19
  abort: unknown flags (0x04) in version 1 revlog 00changelog.i
46117
17a695357270 errors: use detailed exit code 50 for StorageError
Martin von Zweigbergk <martinvonz@google.com>
parents: 45921
diff changeset
    20
  [50]
32429
3ea1f1e71a0a tests: tests for revlog version and flags loading
Gregory Szorc <gregory.szorc@gmail.com>
parents: 32410
diff changeset
    21
3ea1f1e71a0a tests: tests for revlog version and flags loading
Gregory Szorc <gregory.szorc@gmail.com>
parents: 32410
diff changeset
    22
Unknown version is rejected
3ea1f1e71a0a tests: tests for revlog version and flags loading
Gregory Szorc <gregory.szorc@gmail.com>
parents: 32410
diff changeset
    23
3ea1f1e71a0a tests: tests for revlog version and flags loading
Gregory Szorc <gregory.szorc@gmail.com>
parents: 32410
diff changeset
    24
  >>> with open('.hg/store/00changelog.i', 'wb') as fh:
46717
913485776542 revlog: introduce v2 format
Raphaël Gomès <rgomes@octobus.net>
parents: 46117
diff changeset
    25
  ...     fh.write(b'\x00\x00\xbe\xef') and None
32429
3ea1f1e71a0a tests: tests for revlog version and flags loading
Gregory Szorc <gregory.szorc@gmail.com>
parents: 32410
diff changeset
    26
3ea1f1e71a0a tests: tests for revlog version and flags loading
Gregory Szorc <gregory.szorc@gmail.com>
parents: 32410
diff changeset
    27
  $ hg log
46717
913485776542 revlog: introduce v2 format
Raphaël Gomès <rgomes@octobus.net>
parents: 46117
diff changeset
    28
  abort: unknown version (48879) in revlog 00changelog.i
46117
17a695357270 errors: use detailed exit code 50 for StorageError
Martin von Zweigbergk <martinvonz@google.com>
parents: 45921
diff changeset
    29
  [50]
32429
3ea1f1e71a0a tests: tests for revlog version and flags loading
Gregory Szorc <gregory.szorc@gmail.com>
parents: 32410
diff changeset
    30
3ea1f1e71a0a tests: tests for revlog version and flags loading
Gregory Szorc <gregory.szorc@gmail.com>
parents: 32410
diff changeset
    31
  $ cd ..
3ea1f1e71a0a tests: tests for revlog version and flags loading
Gregory Szorc <gregory.szorc@gmail.com>
parents: 32410
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
40281
29b0e9cd02f4 py3: fix test-revlog.t
Mark Thomas <mbthomas@fb.com>
parents: 39908
diff changeset
    37
  >>> import codecs
29b0e9cd02f4 py3: fix test-revlog.t
Mark Thomas <mbthomas@fb.com>
parents: 39908
diff changeset
    38
  >>> open("a.i", "wb").write(codecs.decode(codecs.decode(
36514
71d1bbf1617e py3: add b'' prefixes in tests/test-revlog.t
Pulkit Goyal <7895pulkit@gmail.com>
parents: 32430
diff changeset
    39
  ... b"""eJxjYGZgZIAAYQYGxhgom+k/FMx8YKx9ZUaKSOyqo4cnuKb8mbqHV5cBCVTMWb1Cwqkhe4Gsg9AD
40281
29b0e9cd02f4 py3: fix test-revlog.t
Mark Thomas <mbthomas@fb.com>
parents: 39908
diff changeset
    40
  ... Joa3dYtcYYYBAQ8Qr4OqZAYRICPTSr5WKd/42rV36d+8/VmrNpv7NP1jQAXrQE4BqQUARngwVA==""",
29b0e9cd02f4 py3: fix test-revlog.t
Mark Thomas <mbthomas@fb.com>
parents: 39908
diff changeset
    41
  ... "base64"), "zlib")) and None
28656
b6ed2505d6cf parsers: fix list sizing rounding error (SEC)
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
    42
39309
828a45233036 debugcommands: introduce debugrevlogindex (BC)
Gregory Szorc <gregory.szorc@gmail.com>
parents: 39307
diff changeset
    43
  $ hg debugrevlogindex a.i
37285
d4e62df1c73d debugcommands: drop offset and length from debugindex by default
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37284
diff changeset
    44
     rev linkrev nodeid       p1           p2
d4e62df1c73d debugcommands: drop offset and length from debugindex by default
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37284
diff changeset
    45
       0       2 99e0332bd498 000000000000 000000000000
d4e62df1c73d debugcommands: drop offset and length from debugindex by default
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37284
diff changeset
    46
       1       3 6674f57a23d8 99e0332bd498 000000000000
39307
da459d426c20 tests: use inline Python for revlog test
Gregory Szorc <gregory.szorc@gmail.com>
parents: 38113
diff changeset
    47
47089
4c041c71ec01 revlog: introduce an explicit tracking of what the revlog is about
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46717
diff changeset
    48
  >>> from mercurial.revlogutils.constants import KIND_OTHER
39307
da459d426c20 tests: use inline Python for revlog test
Gregory Szorc <gregory.szorc@gmail.com>
parents: 38113
diff changeset
    49
  >>> from mercurial import revlog, vfs
da459d426c20 tests: use inline Python for revlog test
Gregory Szorc <gregory.szorc@gmail.com>
parents: 38113
diff changeset
    50
  >>> tvfs = vfs.vfs(b'.')
da459d426c20 tests: use inline Python for revlog test
Gregory Szorc <gregory.szorc@gmail.com>
parents: 38113
diff changeset
    51
  >>> tvfs.options = {b'revlogv1': True}
47164
8d3c2f9d4af7 revlog: use a "radix" to address revlog
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47089
diff changeset
    52
  >>> rl = revlog.revlog(tvfs, target=(KIND_OTHER, b'test'), radix=b'a')
39307
da459d426c20 tests: use inline Python for revlog test
Gregory Szorc <gregory.szorc@gmail.com>
parents: 38113
diff changeset
    53
  >>> rl.revision(1)
40281
29b0e9cd02f4 py3: fix test-revlog.t
Mark Thomas <mbthomas@fb.com>
parents: 39908
diff changeset
    54
  mpatchError(*'patch cannot be decoded'*) (glob)