comparison tests/test_context.py @ 219:8341f2494b3f

hglib tests: migrate away from (unmaintained) nose
author Mathias De Mare <mathias.de_mare@nokia.com>
date Wed, 08 Mar 2023 17:04:58 +0100
parents tests/test-context.py@3f854e3bcdd1
children a2afbf236ca8
comparison
equal deleted inserted replaced
218:934608d4fcba 219:8341f2494b3f
1 import sys
2 from tests import common
3 from hglib.error import CommandError
4 import hglib
5 from hglib import context
6 from hglib.util import b
7
8 class test_context(common.basetest):
9 def test_non_existent(self):
10 self.assertRaises(ValueError, context.changectx, self.client, b('foo'))
11
12 def test_basic(self):
13 self.append('a', 'a')
14 self.append('b', 'b')
15 rev0, node0 = self.client.commit(b('first'), addremove=True)
16
17 self.append('c', 'c')
18 rev1, node1 = self.client.commit(b('second'), addremove=True)
19
20 self.assertRaises(KeyError, self.client.__getitem__, 'doesnotexist')
21
22 ctx = self.client[node0]
23
24 self.assertEquals(ctx.description(), b('first'))
25 self.assertEquals(str(ctx), node0[:12].decode('latin-1'))
26 self.assertEquals(ctx.node(), node0)
27 self.assertEquals(int(ctx), rev0)
28 self.assertEquals(ctx.rev(), rev0)
29 self.assertEquals(ctx.branch(), b('default'))
30
31 self.assertTrue(ctx)
32
33 self.assertTrue(b('a') in ctx and b('b') in ctx)
34 self.assertFalse(b('c') in ctx)
35 self.assertEquals(list(ctx), [b('a'), b('b')])
36 self.assertEquals(ctx.files(), [b('a'), b('b')])
37
38 self.assertEquals(ctx.modified(), [])
39 self.assertEquals(ctx.added(), [b('a'), b('b')])
40 self.assertEquals(ctx.removed(), [])
41 self.assertEquals(ctx.ignored(), [])
42 self.assertEquals(ctx.clean(), [])
43
44 man = {b('a') : b('047b75c6d7a3ef6a2243bd0e99f94f6ea6683597'),
45 b('b') : b('62452855512f5b81522aa3895892760bb8da9f3f')}
46 self.assertEquals(ctx.manifest(), man)
47
48 self.assertEquals([int(c) for c in ctx.parents()], [-1])
49 self.assertEquals(int(ctx.p1()), -1)
50 self.assertEquals(int(ctx.p2()), -1)
51
52 self.assertEquals([int(c) for c in ctx.children()], [1])
53 self.assertEquals([int(c) for c in ctx.descendants()], [0, 1])
54 self.assertEquals([int(c) for c in ctx.ancestors()], [0])
55
56 self.client.bookmark(b('bookmark'), inactive=True, rev=node0)
57 self.assertEquals(ctx.bookmarks(), [b('bookmark')])
58
59 self.client.tag(b('tag'), rev=node0)
60 # tags are read on construction
61 self.assertEquals(self.client[node0].tags(), [b('tag')])
62
63 def test_construction(self):
64 self.append('a', 'a')
65 rev0, node0 = self.client.commit(b('first'), addremove=True)
66 tip = self.client.tip()
67
68 # from client.revision
69 ctx = context.changectx(self.client, tip)
70 self.assertEquals(ctx.node(), tip.node)
71
72 # from revset
73 ctx = context.changectx(self.client, b('all()'))
74 self.assertEquals(ctx.node(), tip.node)
75
76 def test_in_keyword(self):
77 """
78 test the 'in' keyword using both revision numbers or changeset ids.
79 """
80 if sys.version_info < (2, 7):
81 return
82
83 self.append('a', 'a')
84 rev0, node0 = self.client.commit(b('first'), addremove=True)
85 self.append('a', 'a')
86 rev1, node1 = self.client.commit(b('second'))
87
88 self.assertIn(1, self.client)
89 hash_1 = self.client.log(0)[0][1]
90 self.assertIn(hash_1, self.client)
91 self.assertNotIn(2, self.client)
92 hash_2 = self.client.log(1)[0][1]
93 self.assertIn(hash_2, self.client)
94 hash_2 = b('deadbeef')
95 self.assertNotIn(hash_2, self.client)