# HG changeset patch # User Anton Shestakov # Date 1630236637 -10800 # Node ID 43bde39bbe659202cb149aec2d6b07d6d26fc107 # Parent bcdccdd48d99ad196901520e679fa2deedbe9741 tests: demonstrate how caching topic of memctx results in issue6500 diff -r bcdccdd48d99 -r 43bde39bbe65 tests/test-check-sdist.t --- a/tests/test-check-sdist.t Wed Aug 25 17:38:27 2021 +0300 +++ b/tests/test-check-sdist.t Sun Aug 29 14:30:37 2021 +0300 @@ -35,7 +35,7 @@ $ tar -tzf hg-evolve-*.tar.gz | sed 's|^hg-evolve-[^/]*/||' | sort > files $ wc -l files - 350 files + 351 files $ fgrep debian files tests/test-check-debian.t $ fgrep __init__.py files diff -r bcdccdd48d99 -r 43bde39bbe65 tests/test-topic-issue6500.t --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/test-topic-issue6500.t Sun Aug 29 14:30:37 2021 +0300 @@ -0,0 +1,45 @@ +KeyError: b'topic' on history-rewriting commands (issue6500) +https://bz.mercurial-scm.org/show_bug.cgi?id=6500 + + $ . $TESTDIR/testlib/common.sh + +Making sure we're not caching .topic() results for memctx or anything else that's not stored on-disk + + $ hg init issue6500-caching-memctx + $ cd issue6500-caching-memctx + + $ cat >> $HGRCPATH << EOF + > [extensions] + > evolve = + > topic = + > EOF + +for this test we need 2 changesets with amend_source, one with topic and one without + + $ hg topics foo + marked working directory as topic: foo + $ echo apple > a + $ hg ci -qAm 'apple' + $ echo apricot > a + $ hg ci --amend -m 'apricot' + +not using `hg topics --clear -r .` here because that would remove amend_source, see _changetopics() + + $ hg topics --clear + $ hg ci --amend -m 'no foo apricot' + + $ hg log --hidden -r 1+2 -T '{rev}: {join(extras, " ")}\n' + 1: amend_source=* branch=default topic=foo (glob) + 2: amend_source=* branch=default (glob) + +TODO: creating and handling 2 memctx instances (based on 1 and then 2) should work + + $ hg touch --hidden -r 1+2 --duplicate 2>&1 | tail -2 + del ctx.extra()[constants.extrakey] + KeyError: b'topic' + +TODO: make sure extras stay the same + + $ hg log --hidden -r 3+4 -T '{rev}: {join(extras, " ")}\n' + abort: unknown revision '3' (glob) + [255]