Mercurial > hg
diff 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 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/test-obsolete-bounds-checking.t Sun Oct 01 12:54:35 2017 +0100 @@ -0,0 +1,23 @@ +Create a repo, set the username to something more than 255 bytes, then run hg amend on it. + + $ unset HGUSER + $ cat >> $HGRCPATH << EOF + > [ui] + > username = aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa <very.long.name@example.com> + > [extensions] + > amend = + > [experimental] + > stabilization=createmarkers,exchange + > EOF + $ hg init tmpa + $ cd tmpa + $ echo a > a + $ hg add + adding a + $ hg commit -m "Initial commit" + $ echo a >> a + $ hg amend 2>&1 | egrep -v '^(\*\*| )' + transaction abort! + rollback completed + Traceback (most recent call last): + 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)