|
2 | 2 | import code |
3 | 3 | from contextlib import contextmanager |
4 | 4 | from functools import partial |
5 | | -from mock import Mock, patch |
| 5 | +from mock import Mock, patch, MagicMock |
6 | 6 | import os |
7 | 7 | from StringIO import StringIO |
8 | 8 | import sys |
@@ -86,12 +86,17 @@ def test_get_last_word_with_prev_line(self): |
86 | 86 | self.repl.up_one_line() |
87 | 87 | self.assertEqual(self.repl.current_line,'2 3') |
88 | 88 |
|
| 89 | +def mock_next(obj, return_value): |
| 90 | + if py3: |
| 91 | + obj.__next__.return_value = return_value |
| 92 | + else: |
| 93 | + obj.next.return_value = return_value |
89 | 94 |
|
90 | 95 | class TestCurtsiesReplTab(unittest.TestCase): |
91 | 96 |
|
92 | 97 | def setUp(self): |
93 | 98 | self.repl = create_repl() |
94 | | - self.repl.matches_iter = Mock() |
| 99 | + self.repl.matches_iter = MagicMock() |
95 | 100 | def add_matches(*args, **kwargs): |
96 | 101 | self.repl.matches_iter.matches = ['aaa', 'aab', 'aac'] |
97 | 102 | self.repl.complete = Mock(side_effect=add_matches, |
@@ -125,22 +130,21 @@ def test_tab_with_no_matches_selects_first(self): |
125 | 130 | self.repl._cursor_offset = 3 |
126 | 131 | self.repl.matches_iter.matches = [] |
127 | 132 | self.repl.matches_iter.is_cseq.return_value = False |
128 | | - self.repl.matches_iter.next.return_value = None |
| 133 | + |
| 134 | + mock_next(self.repl.matches_iter, None) |
129 | 135 | self.repl.matches_iter.cur_line.return_value = (None, None) |
130 | 136 | self.repl.on_tab() |
131 | 137 | self.repl.complete.assert_called_once_with(tab=True) |
132 | | - self.repl.matches_iter.next.assert_called_once_with() |
133 | 138 | self.repl.matches_iter.cur_line.assert_called_once_with() |
134 | 139 |
|
135 | 140 | def test_tab_with_matches_selects_next_match(self): |
136 | 141 | self.repl._current_line = ' aa' |
137 | 142 | self.repl._cursor_offset = 3 |
138 | 143 | self.repl.complete() |
139 | 144 | self.repl.matches_iter.is_cseq.return_value = False |
140 | | - self.repl.matches_iter.next.return_value = None |
| 145 | + mock_next(self.repl.matches_iter, None) |
141 | 146 | self.repl.matches_iter.cur_line.return_value = (None, None) |
142 | 147 | self.repl.on_tab() |
143 | | - self.repl.matches_iter.next.assert_called_once_with() |
144 | 148 | self.repl.matches_iter.cur_line.assert_called_once_with() |
145 | 149 |
|
146 | 150 | def test_tab_completes_common_sequence(self): |
|
0 commit comments