Mercurial > hg
annotate tests/test-debugindexdot.t @ 24710:909ee6b2a024
lazymanifest: prevent leak when updating an entry more than once
__setitem__ on the lazymanifest C type wasn't checking to see if a
line had previously been malloced before replacing it, leading to
leaks if files got updated multiple times in the course of a task.
I was able to reproduce the leak with this change to test-manifest.py:
diff --git a/tests/test-manifest.py b/tests/test-manifest.py
--- a/tests/test-manifest.py
+++ b/tests/test-manifest.py
@@ -456,6 +456,16 @@ class basemanifesttests(object):
['a/b/c/bar.txt', 'a/b/c/foo.txt', 'a/b/d/ten.txt'],
m2.keys())
+ def testManifestSetItem(self):
+ m = self.parsemanifest('')
+ for x in range(3):
+ m['file%d' % x] = BIN_HASH_1
+ for x in range(3):
+ m['file%d' % x] = BIN_HASH_2
+ import time
+ time.sleep(4)
+
+
along with the commands:
$ make local
$ PYTHONPATH=. SILENT_BE_NOISY=1 python tests/test-manifest.py testmanifestdict.testManifestSetItem &
$ sleep 4
$ leaks $(jobs -p | tee /dev/stderr | awk '{print $3}')
$ wait
in an interactive shell on OS X. As far as I can tell, it had to be an
interactive shell so that I could get the pid of the test run using
the jobs builtin. Prior to this change, I was leaking several strings,
and after this change leaks reports no leaks.
I thought there was a bug filed for this in bugzilla, but I can't find
it either in bugzilla or by searching my email.
author | Augie Fackler <augie@google.com> |
---|---|
date | Sat, 11 Apr 2015 11:56:21 -0400 |
parents | a03c3ba3e4b5 |
children | 435481393198 |
rev | line source |
---|---|
17490 | 1 Just exercise debugindexdot |
11923
be74ba87acaf
tests: unify tests-debugindexdot
Pradeepkumar Gayam <in3xes@gmail.com>
parents:
5346
diff
changeset
|
2 Create a short file history including a merge. |
be74ba87acaf
tests: unify tests-debugindexdot
Pradeepkumar Gayam <in3xes@gmail.com>
parents:
5346
diff
changeset
|
3 $ hg init t |
be74ba87acaf
tests: unify tests-debugindexdot
Pradeepkumar Gayam <in3xes@gmail.com>
parents:
5346
diff
changeset
|
4 $ cd t |
be74ba87acaf
tests: unify tests-debugindexdot
Pradeepkumar Gayam <in3xes@gmail.com>
parents:
5346
diff
changeset
|
5 $ echo a > a |
be74ba87acaf
tests: unify tests-debugindexdot
Pradeepkumar Gayam <in3xes@gmail.com>
parents:
5346
diff
changeset
|
6 $ hg ci -qAm t1 -d '0 0' |
be74ba87acaf
tests: unify tests-debugindexdot
Pradeepkumar Gayam <in3xes@gmail.com>
parents:
5346
diff
changeset
|
7 $ echo a >> a |
be74ba87acaf
tests: unify tests-debugindexdot
Pradeepkumar Gayam <in3xes@gmail.com>
parents:
5346
diff
changeset
|
8 $ hg ci -m t2 -d '1 0' |
be74ba87acaf
tests: unify tests-debugindexdot
Pradeepkumar Gayam <in3xes@gmail.com>
parents:
5346
diff
changeset
|
9 $ hg up -qC 0 |
be74ba87acaf
tests: unify tests-debugindexdot
Pradeepkumar Gayam <in3xes@gmail.com>
parents:
5346
diff
changeset
|
10 $ echo b >> a |
be74ba87acaf
tests: unify tests-debugindexdot
Pradeepkumar Gayam <in3xes@gmail.com>
parents:
5346
diff
changeset
|
11 $ hg ci -m t3 -d '2 0' |
be74ba87acaf
tests: unify tests-debugindexdot
Pradeepkumar Gayam <in3xes@gmail.com>
parents:
5346
diff
changeset
|
12 created new head |
be74ba87acaf
tests: unify tests-debugindexdot
Pradeepkumar Gayam <in3xes@gmail.com>
parents:
5346
diff
changeset
|
13 $ HGMERGE=true hg merge -q |
be74ba87acaf
tests: unify tests-debugindexdot
Pradeepkumar Gayam <in3xes@gmail.com>
parents:
5346
diff
changeset
|
14 $ hg ci -m merge -d '3 0' |
5346 | 15 |
11923
be74ba87acaf
tests: unify tests-debugindexdot
Pradeepkumar Gayam <in3xes@gmail.com>
parents:
5346
diff
changeset
|
16 $ hg debugindexdot .hg/store/data/a.i |
be74ba87acaf
tests: unify tests-debugindexdot
Pradeepkumar Gayam <in3xes@gmail.com>
parents:
5346
diff
changeset
|
17 digraph G { |
be74ba87acaf
tests: unify tests-debugindexdot
Pradeepkumar Gayam <in3xes@gmail.com>
parents:
5346
diff
changeset
|
18 -1 -> 0 |
be74ba87acaf
tests: unify tests-debugindexdot
Pradeepkumar Gayam <in3xes@gmail.com>
parents:
5346
diff
changeset
|
19 0 -> 1 |
be74ba87acaf
tests: unify tests-debugindexdot
Pradeepkumar Gayam <in3xes@gmail.com>
parents:
5346
diff
changeset
|
20 0 -> 2 |
be74ba87acaf
tests: unify tests-debugindexdot
Pradeepkumar Gayam <in3xes@gmail.com>
parents:
5346
diff
changeset
|
21 2 -> 3 |
be74ba87acaf
tests: unify tests-debugindexdot
Pradeepkumar Gayam <in3xes@gmail.com>
parents:
5346
diff
changeset
|
22 1 -> 3 |
be74ba87acaf
tests: unify tests-debugindexdot
Pradeepkumar Gayam <in3xes@gmail.com>
parents:
5346
diff
changeset
|
23 } |
16913
f2719b387380
tests: add missing trailing 'cd ..'
Mads Kiilerich <mads@kiilerich.com>
parents:
11923
diff
changeset
|
24 |
f2719b387380
tests: add missing trailing 'cd ..'
Mads Kiilerich <mads@kiilerich.com>
parents:
11923
diff
changeset
|
25 $ cd .. |