Mercurial > hg
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) |