Commit 9d206759 authored by tandrii's avatar tandrii Committed by Commit bot

git cl test framework: improve debuggability of expected calls.

R=phajdan.jr@chromium.org
BUG=

Review-Url: https://codereview.chromium.org/2074233002
parent 4a5ecbe6
...@@ -213,7 +213,7 @@ class TestGitCl(TestCase): ...@@ -213,7 +213,7 @@ class TestGitCl(TestCase):
def setUp(self): def setUp(self):
super(TestGitCl, self).setUp() super(TestGitCl, self).setUp()
self.calls = [] self.calls = []
self._calls_done = 0 self._calls_done = []
self.mock(subprocess2, 'call', self._mocked_call) self.mock(subprocess2, 'call', self._mocked_call)
self.mock(subprocess2, 'check_call', self._mocked_call) self.mock(subprocess2, 'check_call', self._mocked_call)
self.mock(subprocess2, 'check_output', self._mocked_call) self.mock(subprocess2, 'check_output', self._mocked_call)
...@@ -251,7 +251,7 @@ class TestGitCl(TestCase): ...@@ -251,7 +251,7 @@ class TestGitCl(TestCase):
def _mocked_call(self, *args, **_kwargs): def _mocked_call(self, *args, **_kwargs):
self.assertTrue( self.assertTrue(
self.calls, self.calls,
'@%d Expected: <Missing> Actual: %r' % (self._calls_done, args)) '@%d Expected: <Missing> Actual: %r' % (len(self._calls_done), args))
top = self.calls.pop(0) top = self.calls.pop(0)
if len(top) > 2 and top[2]: if len(top) > 2 and top[2]:
raise top[2] raise top[2]
...@@ -260,11 +260,26 @@ class TestGitCl(TestCase): ...@@ -260,11 +260,26 @@ class TestGitCl(TestCase):
# Also logs otherwise it could get caught in a try/finally and be hard to # Also logs otherwise it could get caught in a try/finally and be hard to
# diagnose. # diagnose.
if expected_args != args: if expected_args != args:
msg = '@%d Expected: %r Actual: %r' % ( N = 5
self._calls_done, expected_args, args) prior_calls = '\n '.join(
git_cl.logging.error(msg) '@%d: %r' % (len(self._calls_done) - N + i, c[0])
self.fail(msg) for i, c in enumerate(self._calls_done[-N:]))
self._calls_done += 1 following_calls = '\n '.join(
'@%d: %r' % (len(self._calls_done) + i + 1, c[0])
for i, c in enumerate(self.calls[:N]))
extended_msg = (
'A few prior calls:\n %s\n\n'
'This (expected):\n @%d: %r\n'
'This (actual):\n @%d: %r\n\n'
'A few following expected calls:\n %s' %
(prior_calls, len(self._calls_done), expected_args,
len(self._calls_done), args, following_calls))
git_cl.logging.error(extended_msg)
self.fail('@%d Expected: %r Actual: %r' % (
len(self._calls_done), expected_args, args))
self._calls_done.append(top)
return result return result
@classmethod @classmethod
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment