Skip to content

Commit 758d6a6

Browse files
committed
Use unittest.mock if possible
Signed-off-by: Sebastian Ramacher <sebastian+dev@ramacher.at>
1 parent 3310325 commit 758d6a6

7 files changed

+46
-40
lines changed

.travis.install.sh

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,12 @@ if [[ $RUN == nosetests ]]; then
1717
if [[ $TRAVIS_PYTHON_VERSION == 2.6 ]]; then
1818
pip install unittest2
1919
fi
20-
# dependencies for crasher tests
2120
case $TRAVIS_PYTHON_VERSION in
2221
2*)
22+
# dependencies for crasher tests
2323
pip install Twisted urwid
24+
# test specific dependencies
25+
pip install mock
2426
;;
2527
esac
2628
# build and install

bpython/test/__init__.py

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,10 @@
55
except ImportError:
66
import unittest
77

8-
from mock import MagicMock, Mock
8+
try:
9+
from unittest import mock
10+
except ImportError:
11+
import mock
912

1013
from bpython.translations import init
1114
from bpython._py3compat import py3
@@ -18,9 +21,9 @@ def setUpClass(cls):
1821
init(languages=['en'])
1922

2023

21-
class MagicIterMock(MagicMock):
24+
class MagicIterMock(mock.MagicMock):
2225

2326
if py3:
24-
__next__ = Mock(return_value=None)
27+
__next__ = mock.Mock(return_value=None)
2528
else:
26-
next = Mock(return_value=None)
29+
next = mock.Mock(return_value=None)

bpython/test/test_autocomplete.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
from collections import namedtuple
2-
from bpython import autocomplete
32

4-
import mock
53
try:
64
import unittest2 as unittest
75
except ImportError:
@@ -13,6 +11,9 @@
1311
except ImportError:
1412
has_jedi = False
1513

14+
from bpython import autocomplete
15+
from bpython.test import mock
16+
1617

1718
class TestSafeEval(unittest.TestCase):
1819
def test_catches_syntax_error(self):

bpython/test/test_curtsies_repl.py

Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66
import sys
77
import tempfile
88
from contextlib import contextmanager
9-
from mock import Mock, patch
109
from six.moves import StringIO
1110

1211
try:
@@ -20,7 +19,7 @@
2019
from bpython import config
2120
from bpython import args
2221
from bpython._py3compat import py3
23-
from bpython.test import FixLanguageTestCase as TestCase, MagicIterMock
22+
from bpython.test import FixLanguageTestCase as TestCase, MagicIterMock, mock
2423

2524

2625
def setup_config(conf):
@@ -106,8 +105,8 @@ def setUp(self):
106105
def add_matches(*args, **kwargs):
107106
self.repl.matches_iter.matches = ['aaa', 'aab', 'aac']
108107

109-
self.repl.complete = Mock(side_effect=add_matches,
110-
return_value=True)
108+
self.repl.complete = mock.Mock(side_effect=add_matches,
109+
return_value=True)
111110

112111
def test_tab_with_no_matches_triggers_completion(self):
113112
self.repl._current_line = ' asdf'
@@ -171,9 +170,9 @@ def setUp(self):
171170
def test_list_win_visible_match_selected_on_tab_multiple_options(self):
172171
self.repl._current_line = " './'"
173172
self.repl._cursor_offset = 2
174-
with patch('bpython.autocomplete.get_completer_bpython') as mock:
175-
mock.return_value = (['./abc', './abcd', './bcd'],
176-
autocomplete.FilenameCompletion())
173+
with mock.patch('bpython.autocomplete.get_completer_bpython') as m:
174+
m.return_value = (['./abc', './abcd', './bcd'],
175+
autocomplete.FilenameCompletion())
177176
self.repl.update_completion()
178177
self.assertEqual(self.repl.list_win_visible, False)
179178
self.repl.on_tab()
@@ -183,9 +182,9 @@ def test_list_win_visible_match_selected_on_tab_multiple_options(self):
183182
def test_list_win_not_visible_and_cseq_if_cseq(self):
184183
self.repl._current_line = " './a'"
185184
self.repl._cursor_offset = 5
186-
with patch('bpython.autocomplete.get_completer_bpython') as mock:
187-
mock.return_value = (['./abcd', './abce'],
188-
autocomplete.FilenameCompletion())
185+
with mock.patch('bpython.autocomplete.get_completer_bpython') as m:
186+
m.return_value = (['./abcd', './abce'],
187+
autocomplete.FilenameCompletion())
189188
self.repl.update_completion()
190189
self.assertEqual(self.repl.list_win_visible, False)
191190
self.repl.on_tab()
@@ -196,8 +195,8 @@ def test_list_win_not_visible_and_cseq_if_cseq(self):
196195
def test_list_win_not_visible_and_match_selected_if_one_option(self):
197196
self.repl._current_line = " './a'"
198197
self.repl._cursor_offset = 5
199-
with patch('bpython.autocomplete.get_completer_bpython') as mock:
200-
mock.return_value = (['./abcd'], autocomplete.FilenameCompletion())
198+
with mock.patch('bpython.autocomplete.get_completer_bpython') as m:
199+
m.return_value = (['./abcd'], autocomplete.FilenameCompletion())
201200
self.repl.update_completion()
202201
self.assertEqual(self.repl.list_win_visible, False)
203202
self.repl.on_tab()

bpython/test/test_filewatch.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
import mock
21
import os
32

43
try:
@@ -13,6 +12,7 @@
1312
except ImportError:
1413
has_watchdog = False
1514

15+
from bpython.test import mock
1616

1717
@unittest.skipIf(not has_watchdog, "watchdog not available")
1818
class TestModuleChangeEventHandler(unittest.TestCase):

bpython/test/test_repl.py

Lines changed: 17 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -4,16 +4,14 @@
44
import socket
55
from six.moves import range
66

7-
from mock import Mock
8-
97
try:
108
import unittest2 as unittest
119
except ImportError:
1210
import unittest
1311

1412
from bpython._py3compat import py3
1513
from bpython import config, repl, cli, autocomplete
16-
from bpython.test import MagicIterMock
14+
from bpython.test import MagicIterMock, mock
1715

1816

1917
def setup_config(conf):
@@ -99,7 +97,7 @@ def test_update(self):
9997
self.assertEqual(list(slice), self.matches)
10098

10199
newmatches = ['string', 'str', 'set']
102-
completer = Mock()
100+
completer = mock.Mock()
103101
completer.locate.return_value = (0, 1, 's')
104102
self.matches_iterator.update(1, 's', newmatches, completer)
105103

@@ -108,7 +106,7 @@ def test_update(self):
108106
self.assertEqual(list(newslice), newmatches)
109107

110108
def test_cur_line(self):
111-
completer = Mock()
109+
completer = mock.Mock()
112110
completer.locate.return_value = (
113111
0,
114112
self.matches_iterator.orig_cursor_offset,
@@ -363,7 +361,7 @@ def test_atbol(self):
363361
self.assertFalse(self.repl.atbol())
364362

365363
def test_addstr(self):
366-
self.repl.complete = Mock(True)
364+
self.repl.complete = mock.Mock(True)
367365

368366
self.repl.s = "foo"
369367
self.repl.addstr("bar")
@@ -386,11 +384,11 @@ def test_simple_tab_complete(self):
386384
self.repl.matches_iter.__bool__.return_value = False
387385
else:
388386
self.repl.matches_iter.__nonzero__.return_value = False
389-
self.repl.complete = Mock()
390-
self.repl.print_line = Mock()
387+
self.repl.complete = mock.Mock()
388+
self.repl.print_line = mock.Mock()
391389
self.repl.matches_iter.is_cseq.return_value = False
392-
self.repl.show_list = Mock()
393-
self.repl.argspec = Mock()
390+
self.repl.show_list = mock.Mock()
391+
self.repl.argspec = mock.Mock()
394392
self.repl.matches_iter.cur_line.return_value = (None, "foobar")
395393

396394
self.repl.s = "foo"
@@ -420,22 +418,22 @@ def test_normal_tab(self):
420418
"""make sure pressing the tab key will
421419
still in some cases add a tab"""
422420
self.repl.s = ""
423-
self.repl.config = Mock()
421+
self.repl.config = mock.Mock()
424422
self.repl.config.tab_length = 4
425-
self.repl.complete = Mock()
426-
self.repl.print_line = Mock()
423+
self.repl.complete = mock.Mock()
424+
self.repl.print_line = mock.Mock()
427425
self.repl.tab()
428426
self.assertEqual(self.repl.s, " ")
429427

430428
def test_back_parameter(self):
431-
self.repl.matches_iter = Mock()
429+
self.repl.matches_iter = mock.Mock()
432430
self.repl.matches_iter.matches = True
433431
self.repl.matches_iter.previous.return_value = "previtem"
434432
self.repl.matches_iter.is_cseq.return_value = False
435-
self.repl.show_list = Mock()
436-
self.repl.argspec = Mock()
433+
self.repl.show_list = mock.Mock()
434+
self.repl.argspec = mock.Mock()
437435
self.repl.matches_iter.cur_line.return_value = (None, "previtem")
438-
self.repl.print_line = Mock()
436+
self.repl.print_line = mock.Mock()
439437
self.repl.s = "foo"
440438
self.repl.cpos = 0
441439
self.repl.tab(back=True)
@@ -465,10 +463,10 @@ def test_fuzzy_attribute_tab_complete2(self):
465463
def test_simple_expand(self):
466464
self.repl.s = "f"
467465
self.cpos = 0
468-
self.repl.matches_iter = Mock()
466+
self.repl.matches_iter = mock.Mock()
469467
self.repl.matches_iter.is_cseq.return_value = True
470468
self.repl.matches_iter.substitute_cseq.return_value = (3, "foo")
471-
self.repl.print_line = Mock()
469+
self.repl.print_line = mock.Mock()
472470
self.repl.tab()
473471
self.assertEqual(self.repl.s, "foo")
474472

setup.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -204,9 +204,12 @@ def initialize_options(self):
204204
install_requires.append('ndg-httpsclient')
205205
install_requires.append('pyasn1')
206206

207-
tests_require = ['mock']
207+
tests_require = []
208208
if sys.version_info[0] == 2 and sys.version_info[1] < 7:
209209
tests_require.append('unittest2')
210+
if (sys.version_info[0] == 2 or
211+
(sys.version_info[0] == 3 and sys.version_info[0] < 3)):
212+
tests_require.append('mock')
210213

211214
# translations
212215
mo_files = list()

0 commit comments

Comments
 (0)