Skip to content

Commit 5d59275

Browse files
committed
Mock next/__next__
It is not enough to add them to a MagicMock object, since the lookup is magic methods is special. Signed-off-by: Sebastian Ramacher <sebastian+dev@ramacher.at>
1 parent 76c0ae7 commit 5d59275

File tree

3 files changed

+21
-5
lines changed

3 files changed

+21
-5
lines changed

bpython/test/__init__.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,25 @@
1+
# -*- coding: utf-8 -*-
2+
13
try:
24
import unittest2 as unittest
35
except ImportError:
46
import unittest
57

8+
from mock import MagicMock, Mock
9+
610
from bpython.translations import init
11+
from bpython._py3compat import py3
712

813
class FixLanguageTestCase(unittest.TestCase):
914

1015
@classmethod
1116
def setUpClass(cls):
1217
init(languages=['en'])
18+
19+
20+
class MagicIterMock(MagicMock):
21+
22+
if py3:
23+
__next__ = Mock(return_value=None)
24+
else:
25+
next = Mock(return_value=None)

bpython/test/test_curtsies_repl.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
import sys
77
import tempfile
88
from contextlib import contextmanager
9-
from mock import Mock, patch, MagicMock
9+
from mock import Mock, patch
1010
from six.moves import StringIO
1111

1212
try:
@@ -20,7 +20,8 @@
2020
from bpython import config
2121
from bpython import args
2222
from bpython._py3compat import py3
23-
from bpython.test import FixLanguageTestCase as TestCase
23+
from bpython.test import FixLanguageTestCase as TestCase, MagicIterMock
24+
2425

2526
def setup_config(conf):
2627
config_struct = config.Struct()
@@ -86,6 +87,7 @@ def test_get_last_word_with_prev_line(self):
8687
self.repl.up_one_line()
8788
self.assertEqual(self.repl.current_line,'2 3')
8889

90+
8991
def mock_next(obj, return_value):
9092
if py3:
9193
obj.__next__.return_value = return_value
@@ -96,7 +98,7 @@ class TestCurtsiesReplTab(TestCase):
9698

9799
def setUp(self):
98100
self.repl = create_repl()
99-
self.repl.matches_iter = MagicMock()
101+
self.repl.matches_iter = MagicIterMock()
100102
def add_matches(*args, **kwargs):
101103
self.repl.matches_iter.matches = ['aaa', 'aab', 'aac']
102104
self.repl.complete = Mock(side_effect=add_matches,

bpython/test/test_repl.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
import os
44
import socket
55

6-
from mock import Mock, MagicMock
6+
from mock import Mock
77

88
try:
99
import unittest2 as unittest
@@ -12,6 +12,7 @@
1212

1313
from bpython._py3compat import py3
1414
from bpython import config, repl, cli, autocomplete
15+
from bpython.test import MagicIterMock
1516

1617

1718
def setup_config(conf):
@@ -373,7 +374,7 @@ def setUp(self):
373374

374375
# 3 Types of tab complete
375376
def test_simple_tab_complete(self):
376-
self.repl.matches_iter = MagicMock()
377+
self.repl.matches_iter = MagicIterMock()
377378
if py3:
378379
self.repl.matches_iter.__bool__.return_value = False
379380
else:

0 commit comments

Comments
 (0)