Mercurial > hg-stable
annotate tests/test-rust-ancestor.py @ 47867:1e6cb23ce6da stable
packaging: reference proper output directory
9438e9b7321a changed the name of the PyOxidizer target, which changed
the name of the output directory. The code changed by this patch
wasn't properly updated by that changeset. This resulted in a run-time
failure due to trying to read from a non-existent directory.
This change should fix the building of Python 3 Inno installers.
Differential Revision: https://phab.mercurial-scm.org/D11356
author | Gregory Szorc <gregory.szorc@gmail.com> |
---|---|
date | Thu, 26 Aug 2021 17:39:11 -0700 |
parents | 59fa3890d40a |
children | 6000f5b25c9b |
rev | line source |
---|---|
40981
74f41329bf55
rust-cpython: testing the bindings from Python
Georges Racinet <gracinet@anybox.fr>
parents:
diff
changeset
|
1 from __future__ import absolute_import |
41056
d9f439fcdb4c
rust-cpython: binding for AncestorsIterator
Georges Racinet <gracinet@anybox.fr>
parents:
40981
diff
changeset
|
2 import sys |
40981
74f41329bf55
rust-cpython: testing the bindings from Python
Georges Racinet <gracinet@anybox.fr>
parents:
diff
changeset
|
3 import unittest |
74f41329bf55
rust-cpython: testing the bindings from Python
Georges Racinet <gracinet@anybox.fr>
parents:
diff
changeset
|
4 |
46114
59fa3890d40a
node: import symbols explicitly
Joerg Sonnenberger <joerg@bec.de>
parents:
43950
diff
changeset
|
5 from mercurial.node import wdirrev |
59fa3890d40a
node: import symbols explicitly
Joerg Sonnenberger <joerg@bec.de>
parents:
43950
diff
changeset
|
6 from mercurial import error |
41310
ab0d762d89ef
rust-cpython: raising error.WdirUnsupported
Georges Racinet <georges.racinet@octobus.net>
parents:
41246
diff
changeset
|
7 |
43950
8a8305f557d0
test: extract some generic data and utility from test-rust-ancestor.py
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
43076
diff
changeset
|
8 from mercurial.testing import revlog as revlogtesting |
8a8305f557d0
test: extract some generic data and utility from test-rust-ancestor.py
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
43076
diff
changeset
|
9 |
40981
74f41329bf55
rust-cpython: testing the bindings from Python
Georges Racinet <gracinet@anybox.fr>
parents:
diff
changeset
|
10 try: |
74f41329bf55
rust-cpython: testing the bindings from Python
Georges Racinet <gracinet@anybox.fr>
parents:
diff
changeset
|
11 from mercurial import rustext |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
41705
diff
changeset
|
12 |
41056
d9f439fcdb4c
rust-cpython: binding for AncestorsIterator
Georges Racinet <gracinet@anybox.fr>
parents:
40981
diff
changeset
|
13 rustext.__name__ # trigger immediate actual import |
40981
74f41329bf55
rust-cpython: testing the bindings from Python
Georges Racinet <gracinet@anybox.fr>
parents:
diff
changeset
|
14 except ImportError: |
74f41329bf55
rust-cpython: testing the bindings from Python
Georges Racinet <gracinet@anybox.fr>
parents:
diff
changeset
|
15 rustext = None |
41056
d9f439fcdb4c
rust-cpython: binding for AncestorsIterator
Georges Racinet <gracinet@anybox.fr>
parents:
40981
diff
changeset
|
16 else: |
d9f439fcdb4c
rust-cpython: binding for AncestorsIterator
Georges Racinet <gracinet@anybox.fr>
parents:
40981
diff
changeset
|
17 # this would fail already without appropriate ancestor.__package__ |
41117
b31a41f24864
rust-cpython: binding for LazyAncestors
Georges Racinet <gracinet@anybox.fr>
parents:
41056
diff
changeset
|
18 from mercurial.rustext.ancestor import ( |
b31a41f24864
rust-cpython: binding for LazyAncestors
Georges Racinet <gracinet@anybox.fr>
parents:
41056
diff
changeset
|
19 AncestorsIterator, |
41188
006c9ce486fa
rust-cpython: bindings for MissingAncestors
Georges Racinet <georges.racinet@octobus.net>
parents:
41117
diff
changeset
|
20 LazyAncestors, |
006c9ce486fa
rust-cpython: bindings for MissingAncestors
Georges Racinet <georges.racinet@octobus.net>
parents:
41117
diff
changeset
|
21 MissingAncestors, |
41117
b31a41f24864
rust-cpython: binding for LazyAncestors
Georges Racinet <gracinet@anybox.fr>
parents:
41056
diff
changeset
|
22 ) |
41705
0c7b353ce100
rust-cpython: binding for headrevs()
Georges Racinet <georges.racinet@octobus.net>
parents:
41310
diff
changeset
|
23 from mercurial.rustext import dagop |
40981
74f41329bf55
rust-cpython: testing the bindings from Python
Georges Racinet <gracinet@anybox.fr>
parents:
diff
changeset
|
24 |
74f41329bf55
rust-cpython: testing the bindings from Python
Georges Racinet <gracinet@anybox.fr>
parents:
diff
changeset
|
25 try: |
74f41329bf55
rust-cpython: testing the bindings from Python
Georges Racinet <gracinet@anybox.fr>
parents:
diff
changeset
|
26 from mercurial.cext import parsers as cparsers |
74f41329bf55
rust-cpython: testing the bindings from Python
Georges Racinet <gracinet@anybox.fr>
parents:
diff
changeset
|
27 except ImportError: |
74f41329bf55
rust-cpython: testing the bindings from Python
Georges Racinet <gracinet@anybox.fr>
parents:
diff
changeset
|
28 cparsers = None |
74f41329bf55
rust-cpython: testing the bindings from Python
Georges Racinet <gracinet@anybox.fr>
parents:
diff
changeset
|
29 |
41056
d9f439fcdb4c
rust-cpython: binding for AncestorsIterator
Georges Racinet <gracinet@anybox.fr>
parents:
40981
diff
changeset
|
30 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
41705
diff
changeset
|
31 @unittest.skipIf( |
43950
8a8305f557d0
test: extract some generic data and utility from test-rust-ancestor.py
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
43076
diff
changeset
|
32 rustext is None, |
8a8305f557d0
test: extract some generic data and utility from test-rust-ancestor.py
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
43076
diff
changeset
|
33 'The Rust version of the "ancestor" module is not available. It is needed' |
8a8305f557d0
test: extract some generic data and utility from test-rust-ancestor.py
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
43076
diff
changeset
|
34 ' for this test.', |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
41705
diff
changeset
|
35 ) |
43950
8a8305f557d0
test: extract some generic data and utility from test-rust-ancestor.py
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
43076
diff
changeset
|
36 @unittest.skipIf( |
8a8305f557d0
test: extract some generic data and utility from test-rust-ancestor.py
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
43076
diff
changeset
|
37 rustext is None, |
8a8305f557d0
test: extract some generic data and utility from test-rust-ancestor.py
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
43076
diff
changeset
|
38 'The Rust or C version of the "parsers" module, which the "ancestor" module' |
8a8305f557d0
test: extract some generic data and utility from test-rust-ancestor.py
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
43076
diff
changeset
|
39 ' relies on, is not available.', |
8a8305f557d0
test: extract some generic data and utility from test-rust-ancestor.py
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
43076
diff
changeset
|
40 ) |
8a8305f557d0
test: extract some generic data and utility from test-rust-ancestor.py
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
43076
diff
changeset
|
41 class rustancestorstest(revlogtesting.RevlogBasedTestBase): |
40981
74f41329bf55
rust-cpython: testing the bindings from Python
Georges Racinet <gracinet@anybox.fr>
parents:
diff
changeset
|
42 """Test the correctness of binding to Rust code. |
74f41329bf55
rust-cpython: testing the bindings from Python
Georges Racinet <gracinet@anybox.fr>
parents:
diff
changeset
|
43 |
74f41329bf55
rust-cpython: testing the bindings from Python
Georges Racinet <gracinet@anybox.fr>
parents:
diff
changeset
|
44 This test is merely for the binding to Rust itself: extraction of |
74f41329bf55
rust-cpython: testing the bindings from Python
Georges Racinet <gracinet@anybox.fr>
parents:
diff
changeset
|
45 Python variable, giving back the results etc. |
74f41329bf55
rust-cpython: testing the bindings from Python
Georges Racinet <gracinet@anybox.fr>
parents:
diff
changeset
|
46 |
74f41329bf55
rust-cpython: testing the bindings from Python
Georges Racinet <gracinet@anybox.fr>
parents:
diff
changeset
|
47 It is not meant to test the algorithmic correctness of the operations |
74f41329bf55
rust-cpython: testing the bindings from Python
Georges Racinet <gracinet@anybox.fr>
parents:
diff
changeset
|
48 on ancestors it provides. Hence the very simple embedded index data is |
74f41329bf55
rust-cpython: testing the bindings from Python
Georges Racinet <gracinet@anybox.fr>
parents:
diff
changeset
|
49 good enough. |
74f41329bf55
rust-cpython: testing the bindings from Python
Georges Racinet <gracinet@anybox.fr>
parents:
diff
changeset
|
50 |
74f41329bf55
rust-cpython: testing the bindings from Python
Georges Racinet <gracinet@anybox.fr>
parents:
diff
changeset
|
51 Algorithmic correctness is asserted by the Rust unit tests. |
74f41329bf55
rust-cpython: testing the bindings from Python
Georges Racinet <gracinet@anybox.fr>
parents:
diff
changeset
|
52 """ |
74f41329bf55
rust-cpython: testing the bindings from Python
Georges Racinet <gracinet@anybox.fr>
parents:
diff
changeset
|
53 |
41056
d9f439fcdb4c
rust-cpython: binding for AncestorsIterator
Georges Racinet <gracinet@anybox.fr>
parents:
40981
diff
changeset
|
54 def testiteratorrevlist(self): |
d9f439fcdb4c
rust-cpython: binding for AncestorsIterator
Georges Racinet <gracinet@anybox.fr>
parents:
40981
diff
changeset
|
55 idx = self.parseindex() |
d9f439fcdb4c
rust-cpython: binding for AncestorsIterator
Georges Racinet <gracinet@anybox.fr>
parents:
40981
diff
changeset
|
56 # checking test assumption about the index binary data: |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
41705
diff
changeset
|
57 self.assertEqual( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
41705
diff
changeset
|
58 {i: (r[5], r[6]) for i, r in enumerate(idx)}, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
41705
diff
changeset
|
59 {0: (-1, -1), 1: (0, -1), 2: (1, -1), 3: (2, -1)}, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
41705
diff
changeset
|
60 ) |
41056
d9f439fcdb4c
rust-cpython: binding for AncestorsIterator
Georges Racinet <gracinet@anybox.fr>
parents:
40981
diff
changeset
|
61 ait = AncestorsIterator(idx, [3], 0, True) |
d9f439fcdb4c
rust-cpython: binding for AncestorsIterator
Georges Racinet <gracinet@anybox.fr>
parents:
40981
diff
changeset
|
62 self.assertEqual([r for r in ait], [3, 2, 1, 0]) |
d9f439fcdb4c
rust-cpython: binding for AncestorsIterator
Georges Racinet <gracinet@anybox.fr>
parents:
40981
diff
changeset
|
63 |
d9f439fcdb4c
rust-cpython: binding for AncestorsIterator
Georges Racinet <gracinet@anybox.fr>
parents:
40981
diff
changeset
|
64 ait = AncestorsIterator(idx, [3], 0, False) |
d9f439fcdb4c
rust-cpython: binding for AncestorsIterator
Georges Racinet <gracinet@anybox.fr>
parents:
40981
diff
changeset
|
65 self.assertEqual([r for r in ait], [2, 1, 0]) |
d9f439fcdb4c
rust-cpython: binding for AncestorsIterator
Georges Racinet <gracinet@anybox.fr>
parents:
40981
diff
changeset
|
66 |
41117
b31a41f24864
rust-cpython: binding for LazyAncestors
Georges Racinet <gracinet@anybox.fr>
parents:
41056
diff
changeset
|
67 def testlazyancestors(self): |
b31a41f24864
rust-cpython: binding for LazyAncestors
Georges Racinet <gracinet@anybox.fr>
parents:
41056
diff
changeset
|
68 idx = self.parseindex() |
b31a41f24864
rust-cpython: binding for LazyAncestors
Georges Racinet <gracinet@anybox.fr>
parents:
41056
diff
changeset
|
69 start_count = sys.getrefcount(idx) # should be 2 (see Python doc) |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
41705
diff
changeset
|
70 self.assertEqual( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
41705
diff
changeset
|
71 {i: (r[5], r[6]) for i, r in enumerate(idx)}, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
41705
diff
changeset
|
72 {0: (-1, -1), 1: (0, -1), 2: (1, -1), 3: (2, -1)}, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
41705
diff
changeset
|
73 ) |
41117
b31a41f24864
rust-cpython: binding for LazyAncestors
Georges Racinet <gracinet@anybox.fr>
parents:
41056
diff
changeset
|
74 lazy = LazyAncestors(idx, [3], 0, True) |
b31a41f24864
rust-cpython: binding for LazyAncestors
Georges Racinet <gracinet@anybox.fr>
parents:
41056
diff
changeset
|
75 # we have two more references to the index: |
b31a41f24864
rust-cpython: binding for LazyAncestors
Georges Racinet <gracinet@anybox.fr>
parents:
41056
diff
changeset
|
76 # - in its inner iterator for __contains__ and __bool__ |
b31a41f24864
rust-cpython: binding for LazyAncestors
Georges Racinet <gracinet@anybox.fr>
parents:
41056
diff
changeset
|
77 # - in the LazyAncestors instance itself (to spawn new iterators) |
b31a41f24864
rust-cpython: binding for LazyAncestors
Georges Racinet <gracinet@anybox.fr>
parents:
41056
diff
changeset
|
78 self.assertEqual(sys.getrefcount(idx), start_count + 2) |
b31a41f24864
rust-cpython: binding for LazyAncestors
Georges Racinet <gracinet@anybox.fr>
parents:
41056
diff
changeset
|
79 |
b31a41f24864
rust-cpython: binding for LazyAncestors
Georges Racinet <gracinet@anybox.fr>
parents:
41056
diff
changeset
|
80 self.assertTrue(2 in lazy) |
b31a41f24864
rust-cpython: binding for LazyAncestors
Georges Racinet <gracinet@anybox.fr>
parents:
41056
diff
changeset
|
81 self.assertTrue(bool(lazy)) |
b31a41f24864
rust-cpython: binding for LazyAncestors
Georges Racinet <gracinet@anybox.fr>
parents:
41056
diff
changeset
|
82 self.assertEqual(list(lazy), [3, 2, 1, 0]) |
b31a41f24864
rust-cpython: binding for LazyAncestors
Georges Racinet <gracinet@anybox.fr>
parents:
41056
diff
changeset
|
83 # a second time to validate that we spawn new iterators |
b31a41f24864
rust-cpython: binding for LazyAncestors
Georges Racinet <gracinet@anybox.fr>
parents:
41056
diff
changeset
|
84 self.assertEqual(list(lazy), [3, 2, 1, 0]) |
b31a41f24864
rust-cpython: binding for LazyAncestors
Georges Racinet <gracinet@anybox.fr>
parents:
41056
diff
changeset
|
85 |
b31a41f24864
rust-cpython: binding for LazyAncestors
Georges Racinet <gracinet@anybox.fr>
parents:
41056
diff
changeset
|
86 # now let's watch the refcounts closer |
b31a41f24864
rust-cpython: binding for LazyAncestors
Georges Racinet <gracinet@anybox.fr>
parents:
41056
diff
changeset
|
87 ait = iter(lazy) |
b31a41f24864
rust-cpython: binding for LazyAncestors
Georges Racinet <gracinet@anybox.fr>
parents:
41056
diff
changeset
|
88 self.assertEqual(sys.getrefcount(idx), start_count + 3) |
b31a41f24864
rust-cpython: binding for LazyAncestors
Georges Racinet <gracinet@anybox.fr>
parents:
41056
diff
changeset
|
89 del ait |
b31a41f24864
rust-cpython: binding for LazyAncestors
Georges Racinet <gracinet@anybox.fr>
parents:
41056
diff
changeset
|
90 self.assertEqual(sys.getrefcount(idx), start_count + 2) |
b31a41f24864
rust-cpython: binding for LazyAncestors
Georges Racinet <gracinet@anybox.fr>
parents:
41056
diff
changeset
|
91 del lazy |
b31a41f24864
rust-cpython: binding for LazyAncestors
Georges Racinet <gracinet@anybox.fr>
parents:
41056
diff
changeset
|
92 self.assertEqual(sys.getrefcount(idx), start_count) |
b31a41f24864
rust-cpython: binding for LazyAncestors
Georges Racinet <gracinet@anybox.fr>
parents:
41056
diff
changeset
|
93 |
b31a41f24864
rust-cpython: binding for LazyAncestors
Georges Racinet <gracinet@anybox.fr>
parents:
41056
diff
changeset
|
94 # let's check bool for an empty one |
b31a41f24864
rust-cpython: binding for LazyAncestors
Georges Racinet <gracinet@anybox.fr>
parents:
41056
diff
changeset
|
95 self.assertFalse(LazyAncestors(idx, [0], 0, False)) |
b31a41f24864
rust-cpython: binding for LazyAncestors
Georges Racinet <gracinet@anybox.fr>
parents:
41056
diff
changeset
|
96 |
41188
006c9ce486fa
rust-cpython: bindings for MissingAncestors
Georges Racinet <georges.racinet@octobus.net>
parents:
41117
diff
changeset
|
97 def testmissingancestors(self): |
006c9ce486fa
rust-cpython: bindings for MissingAncestors
Georges Racinet <georges.racinet@octobus.net>
parents:
41117
diff
changeset
|
98 idx = self.parseindex() |
006c9ce486fa
rust-cpython: bindings for MissingAncestors
Georges Racinet <georges.racinet@octobus.net>
parents:
41117
diff
changeset
|
99 missanc = MissingAncestors(idx, [1]) |
006c9ce486fa
rust-cpython: bindings for MissingAncestors
Georges Racinet <georges.racinet@octobus.net>
parents:
41117
diff
changeset
|
100 self.assertTrue(missanc.hasbases()) |
006c9ce486fa
rust-cpython: bindings for MissingAncestors
Georges Racinet <georges.racinet@octobus.net>
parents:
41117
diff
changeset
|
101 self.assertEqual(missanc.missingancestors([3]), [2, 3]) |
006c9ce486fa
rust-cpython: bindings for MissingAncestors
Georges Racinet <georges.racinet@octobus.net>
parents:
41117
diff
changeset
|
102 missanc.addbases({2}) |
41243
5257e6299d4c
rust-cpython: set conversion for MissingAncestors.bases()
Georges Racinet <georges.racinet@octobus.net>
parents:
41188
diff
changeset
|
103 self.assertEqual(missanc.bases(), {1, 2}) |
41188
006c9ce486fa
rust-cpython: bindings for MissingAncestors
Georges Racinet <georges.racinet@octobus.net>
parents:
41117
diff
changeset
|
104 self.assertEqual(missanc.missingancestors([3]), [3]) |
41246
619ee4039bd4
rust: MissingAncestors.basesheads()
Georges Racinet <georges.racinet@octobus.net>
parents:
41243
diff
changeset
|
105 self.assertEqual(missanc.basesheads(), {2}) |
41188
006c9ce486fa
rust-cpython: bindings for MissingAncestors
Georges Racinet <georges.racinet@octobus.net>
parents:
41117
diff
changeset
|
106 |
006c9ce486fa
rust-cpython: bindings for MissingAncestors
Georges Racinet <georges.racinet@octobus.net>
parents:
41117
diff
changeset
|
107 def testmissingancestorsremove(self): |
006c9ce486fa
rust-cpython: bindings for MissingAncestors
Georges Racinet <georges.racinet@octobus.net>
parents:
41117
diff
changeset
|
108 idx = self.parseindex() |
006c9ce486fa
rust-cpython: bindings for MissingAncestors
Georges Racinet <georges.racinet@octobus.net>
parents:
41117
diff
changeset
|
109 missanc = MissingAncestors(idx, [1]) |
006c9ce486fa
rust-cpython: bindings for MissingAncestors
Georges Racinet <georges.racinet@octobus.net>
parents:
41117
diff
changeset
|
110 revs = {0, 1, 2, 3} |
006c9ce486fa
rust-cpython: bindings for MissingAncestors
Georges Racinet <georges.racinet@octobus.net>
parents:
41117
diff
changeset
|
111 missanc.removeancestorsfrom(revs) |
006c9ce486fa
rust-cpython: bindings for MissingAncestors
Georges Racinet <georges.racinet@octobus.net>
parents:
41117
diff
changeset
|
112 self.assertEqual(revs, {2, 3}) |
006c9ce486fa
rust-cpython: bindings for MissingAncestors
Georges Racinet <georges.racinet@octobus.net>
parents:
41117
diff
changeset
|
113 |
41056
d9f439fcdb4c
rust-cpython: binding for AncestorsIterator
Georges Racinet <gracinet@anybox.fr>
parents:
40981
diff
changeset
|
114 def testrefcount(self): |
d9f439fcdb4c
rust-cpython: binding for AncestorsIterator
Georges Racinet <gracinet@anybox.fr>
parents:
40981
diff
changeset
|
115 idx = self.parseindex() |
d9f439fcdb4c
rust-cpython: binding for AncestorsIterator
Georges Racinet <gracinet@anybox.fr>
parents:
40981
diff
changeset
|
116 start_count = sys.getrefcount(idx) |
d9f439fcdb4c
rust-cpython: binding for AncestorsIterator
Georges Racinet <gracinet@anybox.fr>
parents:
40981
diff
changeset
|
117 |
d9f439fcdb4c
rust-cpython: binding for AncestorsIterator
Georges Racinet <gracinet@anybox.fr>
parents:
40981
diff
changeset
|
118 # refcount increases upon iterator init... |
d9f439fcdb4c
rust-cpython: binding for AncestorsIterator
Georges Racinet <gracinet@anybox.fr>
parents:
40981
diff
changeset
|
119 ait = AncestorsIterator(idx, [3], 0, True) |
d9f439fcdb4c
rust-cpython: binding for AncestorsIterator
Georges Racinet <gracinet@anybox.fr>
parents:
40981
diff
changeset
|
120 self.assertEqual(sys.getrefcount(idx), start_count + 1) |
d9f439fcdb4c
rust-cpython: binding for AncestorsIterator
Georges Racinet <gracinet@anybox.fr>
parents:
40981
diff
changeset
|
121 self.assertEqual(next(ait), 3) |
d9f439fcdb4c
rust-cpython: binding for AncestorsIterator
Georges Racinet <gracinet@anybox.fr>
parents:
40981
diff
changeset
|
122 |
d9f439fcdb4c
rust-cpython: binding for AncestorsIterator
Georges Racinet <gracinet@anybox.fr>
parents:
40981
diff
changeset
|
123 # and decreases once the iterator is removed |
d9f439fcdb4c
rust-cpython: binding for AncestorsIterator
Georges Racinet <gracinet@anybox.fr>
parents:
40981
diff
changeset
|
124 del ait |
d9f439fcdb4c
rust-cpython: binding for AncestorsIterator
Georges Racinet <gracinet@anybox.fr>
parents:
40981
diff
changeset
|
125 self.assertEqual(sys.getrefcount(idx), start_count) |
d9f439fcdb4c
rust-cpython: binding for AncestorsIterator
Georges Racinet <gracinet@anybox.fr>
parents:
40981
diff
changeset
|
126 |
d9f439fcdb4c
rust-cpython: binding for AncestorsIterator
Georges Racinet <gracinet@anybox.fr>
parents:
40981
diff
changeset
|
127 # and removing ref to the index after iterator init is no issue |
d9f439fcdb4c
rust-cpython: binding for AncestorsIterator
Georges Racinet <gracinet@anybox.fr>
parents:
40981
diff
changeset
|
128 ait = AncestorsIterator(idx, [3], 0, True) |
d9f439fcdb4c
rust-cpython: binding for AncestorsIterator
Georges Racinet <gracinet@anybox.fr>
parents:
40981
diff
changeset
|
129 del idx |
41117
b31a41f24864
rust-cpython: binding for LazyAncestors
Georges Racinet <gracinet@anybox.fr>
parents:
41056
diff
changeset
|
130 self.assertEqual(list(ait), [3, 2, 1, 0]) |
40981
74f41329bf55
rust-cpython: testing the bindings from Python
Georges Racinet <gracinet@anybox.fr>
parents:
diff
changeset
|
131 |
74f41329bf55
rust-cpython: testing the bindings from Python
Georges Racinet <gracinet@anybox.fr>
parents:
diff
changeset
|
132 def testgrapherror(self): |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
41705
diff
changeset
|
133 data = ( |
43950
8a8305f557d0
test: extract some generic data and utility from test-rust-ancestor.py
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
43076
diff
changeset
|
134 revlogtesting.data_non_inlined[: 64 + 27] |
8a8305f557d0
test: extract some generic data and utility from test-rust-ancestor.py
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
43076
diff
changeset
|
135 + b'\xf2' |
8a8305f557d0
test: extract some generic data and utility from test-rust-ancestor.py
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
43076
diff
changeset
|
136 + revlogtesting.data_non_inlined[64 + 28 :] |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
41705
diff
changeset
|
137 ) |
41056
d9f439fcdb4c
rust-cpython: binding for AncestorsIterator
Georges Racinet <gracinet@anybox.fr>
parents:
40981
diff
changeset
|
138 idx = cparsers.parse_index2(data, False)[0] |
d9f439fcdb4c
rust-cpython: binding for AncestorsIterator
Georges Racinet <gracinet@anybox.fr>
parents:
40981
diff
changeset
|
139 with self.assertRaises(rustext.GraphError) as arc: |
d9f439fcdb4c
rust-cpython: binding for AncestorsIterator
Georges Racinet <gracinet@anybox.fr>
parents:
40981
diff
changeset
|
140 AncestorsIterator(idx, [1], -1, False) |
d9f439fcdb4c
rust-cpython: binding for AncestorsIterator
Georges Racinet <gracinet@anybox.fr>
parents:
40981
diff
changeset
|
141 exc = arc.exception |
d9f439fcdb4c
rust-cpython: binding for AncestorsIterator
Georges Racinet <gracinet@anybox.fr>
parents:
40981
diff
changeset
|
142 self.assertIsInstance(exc, ValueError) |
d9f439fcdb4c
rust-cpython: binding for AncestorsIterator
Georges Racinet <gracinet@anybox.fr>
parents:
40981
diff
changeset
|
143 # rust-cpython issues appropriate str instances for Python 2 and 3 |
d9f439fcdb4c
rust-cpython: binding for AncestorsIterator
Georges Racinet <gracinet@anybox.fr>
parents:
40981
diff
changeset
|
144 self.assertEqual(exc.args, ('ParentOutOfRange', 1)) |
40981
74f41329bf55
rust-cpython: testing the bindings from Python
Georges Racinet <gracinet@anybox.fr>
parents:
diff
changeset
|
145 |
41310
ab0d762d89ef
rust-cpython: raising error.WdirUnsupported
Georges Racinet <georges.racinet@octobus.net>
parents:
41246
diff
changeset
|
146 def testwdirunsupported(self): |
ab0d762d89ef
rust-cpython: raising error.WdirUnsupported
Georges Racinet <georges.racinet@octobus.net>
parents:
41246
diff
changeset
|
147 # trying to access ancestors of the working directory raises |
ab0d762d89ef
rust-cpython: raising error.WdirUnsupported
Georges Racinet <georges.racinet@octobus.net>
parents:
41246
diff
changeset
|
148 # WdirUnsupported directly |
ab0d762d89ef
rust-cpython: raising error.WdirUnsupported
Georges Racinet <georges.racinet@octobus.net>
parents:
41246
diff
changeset
|
149 idx = self.parseindex() |
ab0d762d89ef
rust-cpython: raising error.WdirUnsupported
Georges Racinet <georges.racinet@octobus.net>
parents:
41246
diff
changeset
|
150 with self.assertRaises(error.WdirUnsupported): |
46114
59fa3890d40a
node: import symbols explicitly
Joerg Sonnenberger <joerg@bec.de>
parents:
43950
diff
changeset
|
151 list(AncestorsIterator(idx, [wdirrev], -1, False)) |
40981
74f41329bf55
rust-cpython: testing the bindings from Python
Georges Racinet <gracinet@anybox.fr>
parents:
diff
changeset
|
152 |
41705
0c7b353ce100
rust-cpython: binding for headrevs()
Georges Racinet <georges.racinet@octobus.net>
parents:
41310
diff
changeset
|
153 def testheadrevs(self): |
0c7b353ce100
rust-cpython: binding for headrevs()
Georges Racinet <georges.racinet@octobus.net>
parents:
41310
diff
changeset
|
154 idx = self.parseindex() |
0c7b353ce100
rust-cpython: binding for headrevs()
Georges Racinet <georges.racinet@octobus.net>
parents:
41310
diff
changeset
|
155 self.assertEqual(dagop.headrevs(idx, [1, 2, 3]), {3}) |
0c7b353ce100
rust-cpython: binding for headrevs()
Georges Racinet <georges.racinet@octobus.net>
parents:
41310
diff
changeset
|
156 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
41705
diff
changeset
|
157 |
40981
74f41329bf55
rust-cpython: testing the bindings from Python
Georges Racinet <gracinet@anybox.fr>
parents:
diff
changeset
|
158 if __name__ == '__main__': |
74f41329bf55
rust-cpython: testing the bindings from Python
Georges Racinet <gracinet@anybox.fr>
parents:
diff
changeset
|
159 import silenttestrunner |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
41705
diff
changeset
|
160 |
40981
74f41329bf55
rust-cpython: testing the bindings from Python
Georges Racinet <gracinet@anybox.fr>
parents:
diff
changeset
|
161 silenttestrunner.main(__name__) |