Mercurial > hg-stable
view tests/test-fix-pickle.t @ 48814:e3c75d65d589 stable
tests: demonstrate that copy info in changeset gets lost on amend
When copy information is stored in changesets, it gets lost on
amend. We didn't notice that until now because our users at Google
have the config set to `compatibility`, which means copy information
is stored in both changeset and filelogs.
Differential Revision: https://phab.mercurial-scm.org/D12386
author | Martin von Zweigbergk <martinvonz@google.com> |
---|---|
date | Fri, 18 Mar 2022 21:37:22 -0700 |
parents | 7d24201b6447 |
children |
line wrap: on
line source
A script that implements uppercasing all letters in a file. $ UPPERCASEPY="$TESTTMP/uppercase.py" $ cat > $UPPERCASEPY <<EOF > import sys > from mercurial.utils.procutil import setbinary > setbinary(sys.stdin) > setbinary(sys.stdout) > sys.stdout.write(sys.stdin.read().upper()) > EOF $ TESTLINES="foo\nbar\nbaz\n" $ printf $TESTLINES | "$PYTHON" $UPPERCASEPY FOO BAR BAZ This file attempts to test our workarounds for pickle's lack of support for short reads. $ cat >> $HGRCPATH <<EOF > [extensions] > fix = > [fix] > uppercase-whole-file:command="$PYTHON" $UPPERCASEPY > uppercase-whole-file:pattern=set:** > EOF $ hg init repo $ cd repo # Create a file that's large enough that it seems to not fit in # pickle's buffer, making it use the code path that expects our # _blockingreader's read() method to return bytes. $ echo "some stuff" > file $ for i in $($TESTDIR/seq.py 13); do > cat file file > tmp > mv -f tmp file > done $ hg commit -Am "add large file" adding file Check that we don't get a crash $ hg fix -r . saved backup bundle to $TESTTMP/repo/.hg/strip-backup/*-fix.hg (glob)