comparison tests/test-obsolete-bounds-checking.t @ 34407:b6692ba7d5b0

obsmarker: crash more helpfully when metadata fields are >255bytes (issue5681) Various mutators fail when attempting to write obsmarkers with metadata fields longer than 255 bytes, since the length of mwetadata fields is stored in u8s. This change raises a more helpful error in such circumstances. Differential Revision: https://phab.mercurial-scm.org/D865
author Simon Whitaker <swhitaker@fb.com>
date Sun, 01 Oct 2017 12:54:35 +0100
parents
children 8197742362dd
comparison
equal deleted inserted replaced
34406:0133ca39c688 34407:b6692ba7d5b0
1 Create a repo, set the username to something more than 255 bytes, then run hg amend on it.
2
3 $ unset HGUSER
4 $ cat >> $HGRCPATH << EOF
5 > [ui]
6 > username = aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa <very.long.name@example.com>
7 > [extensions]
8 > amend =
9 > [experimental]
10 > stabilization=createmarkers,exchange
11 > EOF
12 $ hg init tmpa
13 $ cd tmpa
14 $ echo a > a
15 $ hg add
16 adding a
17 $ hg commit -m "Initial commit"
18 $ echo a >> a
19 $ hg amend 2>&1 | egrep -v '^(\*\*| )'
20 transaction abort!
21 rollback completed
22 Traceback (most recent call last):
23 mercurial.error.ProgrammingError: obsstore metadata value cannot be longer than 255 bytes (value "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa <very.long.name@example.com>" for key "user" is 285 bytes)