Mercurial > hg
view tests/test-extensions-afterloaded.t @ 35778:128dd940bedc
repair: invalidate volatile sets after stripping
Matt Harbison reported that some tests were broken on Windows after
1a09dad8b85a (evolution: report new unstable changesets,
2018-01-14). The failures were exactly as seen in this patch. The
failures actually seemed correct, which made me wonder why they didn't
fail the same way on Linux. It turned out to be a cache invalidation
problem.
The new orphan mentioned in the test case actually does get created
when we're re-applying the temporary bundle that's created while
stripping. However, without the invalidation, it appears that there
was already an orphan before applying the temporary bundle.
The warnings about unknown working parent appear because the
aformentioned changeset means that we're now accessing the dirstate
while it's invalid.
We may want to suppress these messages that happen in the intermediate
strip state, but they're technically correct (although confusing to
the user), so I think just fixing the cache invalidation is fine for
now.
I haven't figured out why the caches seemed to get correctly
invalidated on Windows.
Differential Revision: https://phab.mercurial-scm.org/D1933
author | Martin von Zweigbergk <martinvonz@google.com> |
---|---|
date | Sat, 20 Jan 2018 23:21:59 -0800 |
parents | 80a5d237a4ae |
children | d1a49a94c324 |
line wrap: on
line source
Test the extensions.afterloaded() function $ cat > foo.py <<EOF > from mercurial import extensions > def uisetup(ui): > ui.write("foo.uisetup\\n") > ui.flush() > def bar_loaded(loaded): > ui.write("foo: bar loaded: %r\\n" % (loaded,)) > ui.flush() > extensions.afterloaded('bar', bar_loaded) > EOF $ cat > bar.py <<EOF > def uisetup(ui): > ui.write("bar.uisetup\\n") > ui.flush() > EOF $ basepath=`pwd` $ hg init basic $ cd basic $ echo foo > file $ hg add file $ hg commit -m 'add file' $ echo '[extensions]' >> .hg/hgrc $ echo "foo = $basepath/foo.py" >> .hg/hgrc $ echo "bar = $basepath/bar.py" >> .hg/hgrc $ hg log -r. -T'{rev}\n' foo.uisetup foo: bar loaded: True bar.uisetup 0 Test afterloaded with the opposite extension load order $ cd .. $ hg init basic_reverse $ cd basic_reverse $ echo foo > file $ hg add file $ hg commit -m 'add file' $ echo '[extensions]' >> .hg/hgrc $ echo "bar = $basepath/bar.py" >> .hg/hgrc $ echo "foo = $basepath/foo.py" >> .hg/hgrc $ hg log -r. -T'{rev}\n' bar.uisetup foo.uisetup foo: bar loaded: True 0 Test the extensions.afterloaded() function when the requested extension is not loaded $ cd .. $ hg init notloaded $ cd notloaded $ echo foo > file $ hg add file $ hg commit -m 'add file' $ echo '[extensions]' >> .hg/hgrc $ echo "foo = $basepath/foo.py" >> .hg/hgrc $ hg log -r. -T'{rev}\n' foo.uisetup foo: bar loaded: False 0 Test the extensions.afterloaded() function when the requested extension is not configured but fails the minimum version check $ cd .. $ cat > minvers.py <<EOF > minimumhgversion = '9999.9999' > def uisetup(ui): > ui.write("minvers.uisetup\\n") > ui.flush() > EOF $ hg init minversion $ cd minversion $ echo foo > file $ hg add file $ hg commit -m 'add file' $ echo '[extensions]' >> .hg/hgrc $ echo "foo = $basepath/foo.py" >> .hg/hgrc $ echo "bar = $basepath/minvers.py" >> .hg/hgrc $ hg log -r. -T'{rev}\n' (third party extension bar requires version 9999.9999 or newer of Mercurial; disabling) foo.uisetup foo: bar loaded: False 0 Test the extensions.afterloaded() function when the requested extension is not configured but fails the minimum version check, using the opposite load order for the two extensions. $ cd .. $ hg init minversion_reverse $ cd minversion_reverse $ echo foo > file $ hg add file $ hg commit -m 'add file' $ echo '[extensions]' >> .hg/hgrc $ echo "bar = $basepath/minvers.py" >> .hg/hgrc $ echo "foo = $basepath/foo.py" >> .hg/hgrc $ hg log -r. -T'{rev}\n' (third party extension bar requires version 9999.9999 or newer of Mercurial; disabling) foo.uisetup foo: bar loaded: False 0