Mercurial > public > mercurial-scm > python-hglib
view tests/test-phase.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 |
line wrap: on
line source
from tests import common import hglib from hglib.util import b class test_phase(common.basetest): """test the different ways to use the phase command""" def test_phase(self): """test getting data from a single changeset""" self.append('a', 'a') rev, node0 = self.client.commit(b('first'), addremove=True) self.assertEqual([(0, b('draft'))], self.client.phase(node0)) ctx = self.client[rev] self.assertEqual(b('draft'), ctx.phase()) def test_phase_public(self): """test phase change from draft to public""" self.append('a', 'a') rev, node0 = self.client.commit(b('first'), addremove=True) self.client.phase(node0, public=True) self.assertEqual([(0, b('public'))], self.client.phase(node0)) ctx = self.client[rev] self.assertEqual(b('public'), ctx.phase()) def test_phase_secret(self): """test phase change from draft to secret""" self.append('a', 'a') rev, node0 = self.client.commit(b('first'), addremove=True) self.assertRaises(hglib.error.CommandError, self.client.phase, node0, secret=True) self.client.phase(node0, secret=True, force=True) self.assertEqual([(0, b('secret'))], self.client.phase(node0)) ctx = self.client[rev] self.assertEqual(b('secret'), ctx.phase()) def test_phase_multiple(self): """test phase changes and show the phases of the different changesets""" self.append('a', 'a') rev, node0 = self.client.commit(b('a'), addremove=True) self.client.phase(node0, public=True) self.append('b', 'b') rev, node1 = self.client.commit(b('b'), addremove=True) self.append('c', 'c') rev, node2 = self.client.commit(b('c'), addremove=True) self.client.phase(node2, secret=True, force=True) self.assertEqual([(0, b('public')), (2, b('secret')), (1, b('draft'))], self.client.phase([node0, node2, node1]))