Mercurial > hg
annotate tests/test-gpg.t @ 29196:bf7b8157c483 stable
strip: invalidate phase cache after stripping changeset (issue5235)
When we remove a changeset from the changelog, the phase cache must be
invalidated, otherwise it could refer to changesets that are no longer in the
repo.
To reproduce the failure, I created an extension querying the phase cache after
the strip transaction is over.
To do that, I stripped two commits with a bookmark on one of them to force
another transaction (we open a transaction for moving bookmarks)
after the strip transaction.
Without the fix in this patch, the test leads to a stacktrace showing the issue:
repair.strip(ui, repo, revs, backup)
File "/Users/lcharignon/facebook-hg-rpms/hg-crew/mercurial/repair.py", line 205, in strip
tr.close()
File "/Users/lcharignon/facebook-hg-rpms/hg-crew/mercurial/transaction.py", line 44, in _active
return func(self, *args, **kwds)
File "/Users/lcharignon/facebook-hg-rpms/hg-crew/mercurial/transaction.py", line 490, in close
self._postclosecallback[cat](self)
File "$TESTTMP/crashstrip2.py", line 4, in test
[repo.changelog.node(r) for r in repo.revs("not public()")]
File "/Users/lcharignon/facebook-hg-rpms/hg-crew/mercurial/changelog.py", line 337, in node
return super(changelog, self).node(rev)
File "/Users/lcharignon/facebook-hg-rpms/hg-crew/mercurial/revlog.py", line 377, in node
return self.index[rev][7]
IndexError: revlog index out of range
The situation was encountered in inhibit (evolve's repo) where we would crash
following the volatile set invalidation submitted by Augie in
e6f490e328635312ee214a12bc7fd3c7d46bf9ce. Before his patch the issue was masked
as we were not accessing the phasecache after stripping a revision.
This bug uncovered another but in histedit (see explanation in issue5235).
I changed the histedit test accordingly to avoid fixing two things at once.
author | Laurent Charignon <lcharignon@fb.com> |
---|---|
date | Thu, 12 May 2016 06:13:59 -0700 |
parents | 4d2b9b304ad0 |
children | 66e038fb3c0d |
rev | line source |
---|---|
22046
7a9cbb315d84
tests: replace exit 80 with #require
Matt Mackall <mpm@selenic.com>
parents:
21711
diff
changeset
|
1 #require gpg |
7a9cbb315d84
tests: replace exit 80 with #require
Matt Mackall <mpm@selenic.com>
parents:
21711
diff
changeset
|
2 |
12428 | 3 Test the GPG extension |
8809 | 4 |
12428 | 5 $ cat <<EOF >> $HGRCPATH |
6 > [extensions] | |
7 > gpg= | |
8 > | |
9 > [gpg] | |
16350
4f795f5fbb0b
tests: make tests work if directory contains special characters
Thomas Arendsen Hein <thomas@intevation.de>
parents:
16349
diff
changeset
|
10 > cmd=gpg --no-permission-warning --no-secmem-warning --no-auto-check-trustdb --homedir "$TESTDIR/gpg" |
12428 | 11 > EOF |
12 $ hg init r | |
13 $ cd r | |
14 $ echo foo > foo | |
15 $ hg ci -Amfoo | |
16 adding foo | |
8809 | 17 |
12428 | 18 $ hg sigs |
19 | |
21711
0986af9e7006
gpg: accept '--edit' like other commands creating new changeset
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
20305
diff
changeset
|
20 $ HGEDITOR=cat hg sign -e 0 |
16927 | 21 signing 0:e63c23eaa88a |
21711
0986af9e7006
gpg: accept '--edit' like other commands creating new changeset
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
20305
diff
changeset
|
22 Added signature for changeset e63c23eaa88a |
0986af9e7006
gpg: accept '--edit' like other commands creating new changeset
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
20305
diff
changeset
|
23 |
0986af9e7006
gpg: accept '--edit' like other commands creating new changeset
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
20305
diff
changeset
|
24 |
0986af9e7006
gpg: accept '--edit' like other commands creating new changeset
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
20305
diff
changeset
|
25 HG: Enter commit message. Lines beginning with 'HG:' are removed. |
0986af9e7006
gpg: accept '--edit' like other commands creating new changeset
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
20305
diff
changeset
|
26 HG: Leave message empty to abort commit. |
0986af9e7006
gpg: accept '--edit' like other commands creating new changeset
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
20305
diff
changeset
|
27 HG: -- |
0986af9e7006
gpg: accept '--edit' like other commands creating new changeset
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
20305
diff
changeset
|
28 HG: user: test |
0986af9e7006
gpg: accept '--edit' like other commands creating new changeset
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
20305
diff
changeset
|
29 HG: branch 'default' |
0986af9e7006
gpg: accept '--edit' like other commands creating new changeset
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
20305
diff
changeset
|
30 HG: added .hgsigs |
8809 | 31 |
12428 | 32 $ hg sigs |
33 hgtest 0:e63c23eaa88ae77967edcf4ea194d31167c478b0 | |
8809 | 34 |
12428 | 35 $ hg sigcheck 0 |
36 e63c23eaa88a is signed by: | |
37 hgtest | |
16289
aae219a99a6e
test-gpg: make sure gpg does not modify the trustdb.gpg file
Greg Ward <greg@gerg.ca>
parents:
12428
diff
changeset
|
38 |
aae219a99a6e
test-gpg: make sure gpg does not modify the trustdb.gpg file
Greg Ward <greg@gerg.ca>
parents:
12428
diff
changeset
|
39 verify that this test has not modified the trustdb.gpg file back in |
aae219a99a6e
test-gpg: make sure gpg does not modify the trustdb.gpg file
Greg Ward <greg@gerg.ca>
parents:
12428
diff
changeset
|
40 the main hg working dir |
25472
4d2b9b304ad0
tests: drop explicit $TESTDIR from executables
Matt Mackall <mpm@selenic.com>
parents:
22046
diff
changeset
|
41 $ md5sum.py "$TESTDIR/gpg/trustdb.gpg" |
16349
425f1fbcfb94
test-gpg: replace 825565136235 by md5sum check
Thomas Arendsen Hein <thomas@intevation.de>
parents:
16345
diff
changeset
|
42 f6b9c78c65fa9536e7512bb2ceb338ae */gpg/trustdb.gpg (glob) |
16913
f2719b387380
tests: add missing trailing 'cd ..'
Mads Kiilerich <mads@kiilerich.com>
parents:
16350
diff
changeset
|
43 |
20305
e5a2177d97f0
tests: stop tracking tests/gpg/random_seed
Mads Kiilerich <madski@unity3d.com>
parents:
16927
diff
changeset
|
44 don't leak any state to next test run |
e5a2177d97f0
tests: stop tracking tests/gpg/random_seed
Mads Kiilerich <madski@unity3d.com>
parents:
16927
diff
changeset
|
45 $ rm -f "$TESTDIR/gpg/random_seed" |
e5a2177d97f0
tests: stop tracking tests/gpg/random_seed
Mads Kiilerich <madski@unity3d.com>
parents:
16927
diff
changeset
|
46 |
16913
f2719b387380
tests: add missing trailing 'cd ..'
Mads Kiilerich <mads@kiilerich.com>
parents:
16350
diff
changeset
|
47 $ cd .. |