Mercurial > public > mercurial-scm > python-hglib
comparison tests/test-context.py @ 176:3f854e3bcdd1 2.2
client: raise KeyError from __getitem__ (BC)
object.__getitem__ is supposed to raise either IndexError or KeyError
(depending on whether the thing is a sequence or a mapping). Before,
we would raise ValueError because that's what the context constructor
raises.
I choose to raise KeyError because IndexError felt a bit too limiting.
This does sacrifice some magic with for loops handling IndexError.
However, iteration of this object should be handled by a custom
__iter__, so I don't think this is a problem.
author | Gregory Szorc <gregory.szorc@gmail.com> |
---|---|
date | Wed, 06 Jul 2016 14:14:22 -0700 |
parents | c1b966866ed7 |
children |
comparison
equal
deleted
inserted
replaced
175:c16e2087660f | 176:3f854e3bcdd1 |
---|---|
14 self.append('b', 'b') | 14 self.append('b', 'b') |
15 rev0, node0 = self.client.commit(b('first'), addremove=True) | 15 rev0, node0 = self.client.commit(b('first'), addremove=True) |
16 | 16 |
17 self.append('c', 'c') | 17 self.append('c', 'c') |
18 rev1, node1 = self.client.commit(b('second'), addremove=True) | 18 rev1, node1 = self.client.commit(b('second'), addremove=True) |
19 | |
20 self.assertRaises(KeyError, self.client.__getitem__, 'doesnotexist') | |
19 | 21 |
20 ctx = self.client[node0] | 22 ctx = self.client[node0] |
21 | 23 |
22 self.assertEquals(ctx.description(), b('first')) | 24 self.assertEquals(ctx.description(), b('first')) |
23 self.assertEquals(str(ctx), node0[:12].decode('latin-1')) | 25 self.assertEquals(str(ctx), node0[:12].decode('latin-1')) |