Skip to content

Commit d4059d1

Browse files
Benjamin Toornstrascanny
authored andcommitted
rfctr: upgrade mock helpers to autospec by default
1 parent a13848b commit d4059d1

File tree

3 files changed

+75
-86
lines changed

3 files changed

+75
-86
lines changed

tests/image/test_tiff.py

Lines changed: 70 additions & 79 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,6 @@
3535

3636

3737
class DescribeTiff(object):
38-
3938
def it_can_construct_from_a_tiff_stream(
4039
self, stream_, _TiffParser_, tiff_parser_, Tiff__init_
4140
):
@@ -60,7 +59,7 @@ def it_knows_its_content_type(self):
6059

6160
def it_knows_its_default_ext(self):
6261
tiff = Tiff(None, None, None, None)
63-
assert tiff.default_ext == 'tiff'
62+
assert tiff.default_ext == "tiff"
6463

6564
# fixtures -------------------------------------------------------
6665

@@ -70,7 +69,7 @@ def Tiff__init_(self, request):
7069

7170
@pytest.fixture
7271
def _TiffParser_(self, request, tiff_parser_):
73-
_TiffParser_ = class_mock(request, 'docx.image.tiff._TiffParser')
72+
_TiffParser_ = class_mock(request, "docx.image.tiff._TiffParser")
7473
_TiffParser_.parse.return_value = tiff_parser_
7574
return _TiffParser_
7675

@@ -84,7 +83,6 @@ def stream_(self, request):
8483

8584

8685
class Describe_TiffParser(object):
87-
8886
def it_can_parse_the_properties_from_a_tiff_stream(
8987
self,
9088
stream_,
@@ -98,9 +96,7 @@ def it_can_parse_the_properties_from_a_tiff_stream(
9896
tiff_parser = _TiffParser.parse(stream_)
9997

10098
_make_stream_reader_.assert_called_once_with(stream_)
101-
_IfdEntries_.from_stream.assert_called_once_with(
102-
stream_rdr_, ifd0_offset_
103-
)
99+
_IfdEntries_.from_stream.assert_called_once_with(stream_rdr_, ifd0_offset_)
104100
_TiffParser__init_.assert_called_once_with(ANY, ifd_entries_)
105101
assert isinstance(tiff_parser, _TiffParser)
106102

@@ -112,10 +108,7 @@ def it_makes_a_stream_reader_to_help_parse(self, mk_stream_rdr_fixture):
112108

113109
def it_knows_image_width_and_height_after_parsing(self):
114110
px_width, px_height = 42, 24
115-
entries = {
116-
TIFF_TAG.IMAGE_WIDTH: px_width,
117-
TIFF_TAG.IMAGE_LENGTH: px_height,
118-
}
111+
entries = {TIFF_TAG.IMAGE_WIDTH: px_width, TIFF_TAG.IMAGE_LENGTH: px_height}
119112
ifd_entries = _IfdEntries(entries)
120113
tiff_parser = _TiffParser(ifd_entries)
121114
assert tiff_parser.px_width == px_width
@@ -128,13 +121,15 @@ def it_knows_the_horz_and_vert_dpi_after_parsing(self, dpi_fixture):
128121

129122
# fixtures -------------------------------------------------------
130123

131-
@pytest.fixture(params=[
132-
(1, 150, 240, 72, 72),
133-
(2, 42, 24, 42, 24),
134-
(3, 100, 200, 254, 508),
135-
(2, None, None, 72, 72),
136-
(None, 96, 100, 96, 100),
137-
])
124+
@pytest.fixture(
125+
params=[
126+
(1, 150, 240, 72, 72),
127+
(2, 42, 24, 42, 24),
128+
(3, 100, 200, 254, 508),
129+
(2, None, None, 72, 72),
130+
(None, 96, 100, 96, 100),
131+
]
132+
)
138133
def dpi_fixture(self, request):
139134
resolution_unit, x_resolution, y_resolution = request.param[:3]
140135
expected_horz_dpi, expected_vert_dpi = request.param[3:]
@@ -152,7 +147,7 @@ def dpi_fixture(self, request):
152147

153148
@pytest.fixture
154149
def _IfdEntries_(self, request, ifd_entries_):
155-
_IfdEntries_ = class_mock(request, 'docx.image.tiff._IfdEntries')
150+
_IfdEntries_ = class_mock(request, "docx.image.tiff._IfdEntries")
156151
_IfdEntries_.from_stream.return_value = ifd_entries_
157152
return _IfdEntries_
158153

@@ -169,15 +164,12 @@ def _make_stream_reader_(self, request, stream_rdr_):
169164
return method_mock(
170165
request,
171166
_TiffParser,
172-
'_make_stream_reader',
167+
"_make_stream_reader",
173168
autospec=False,
174-
return_value=stream_rdr_
169+
return_value=stream_rdr_,
175170
)
176171

177-
@pytest.fixture(params=[
178-
(b'MM\x00*', BIG_ENDIAN),
179-
(b'II*\x00', LITTLE_ENDIAN),
180-
])
172+
@pytest.fixture(params=[(b"MM\x00*", BIG_ENDIAN), (b"II*\x00", LITTLE_ENDIAN)])
181173
def mk_stream_rdr_fixture(self, request, StreamReader_, stream_rdr_):
182174
bytes_, endian = request.param
183175
stream = BytesIO(bytes_)
@@ -190,7 +182,7 @@ def stream_(self, request):
190182
@pytest.fixture
191183
def StreamReader_(self, request, stream_rdr_):
192184
return class_mock(
193-
request, 'docx.image.tiff.StreamReader', return_value=stream_rdr_
185+
request, "docx.image.tiff.StreamReader", return_value=stream_rdr_
194186
)
195187

196188
@pytest.fixture
@@ -205,7 +197,6 @@ def _TiffParser__init_(self, request):
205197

206198

207199
class Describe_IfdEntries(object):
208-
209200
def it_can_construct_from_a_stream_and_offset(
210201
self,
211202
stream_,
@@ -226,7 +217,7 @@ def it_can_construct_from_a_stream_and_offset(
226217
assert isinstance(ifd_entries, _IfdEntries)
227218

228219
def it_has_basic_mapping_semantics(self):
229-
key, value = 1, 'foobar'
220+
key, value = 1, "foobar"
230221
entries = {key: value}
231222
ifd_entries = _IfdEntries(entries)
232223
assert key in ifd_entries
@@ -249,7 +240,7 @@ def _IfdEntries__init_(self, request):
249240
@pytest.fixture
250241
def _IfdParser_(self, request, ifd_parser_):
251242
return class_mock(
252-
request, 'docx.image.tiff._IfdParser', return_value=ifd_parser_
243+
request, "docx.image.tiff._IfdParser", return_value=ifd_parser_
253244
)
254245

255246
@pytest.fixture
@@ -266,11 +257,14 @@ def stream_(self, request):
266257

267258

268259
class Describe_IfdParser(object):
269-
270-
def it_can_iterate_through_the_directory_entries_in_an_IFD(
271-
self, iter_fixture):
272-
(ifd_parser, _IfdEntryFactory_, stream_rdr, offsets,
273-
expected_entries) = iter_fixture
260+
def it_can_iterate_through_the_directory_entries_in_an_IFD(self, iter_fixture):
261+
(
262+
ifd_parser,
263+
_IfdEntryFactory_,
264+
stream_rdr,
265+
offsets,
266+
expected_entries,
267+
) = iter_fixture
274268
entries = [e for e in ifd_parser.iter_entries()]
275269
assert _IfdEntryFactory_.call_args_list == [
276270
call(stream_rdr, offsets[0]),
@@ -291,24 +285,21 @@ def ifd_entry_2_(self, request):
291285
@pytest.fixture
292286
def _IfdEntryFactory_(self, request, ifd_entry_, ifd_entry_2_):
293287
return function_mock(
294-
request, 'docx.image.tiff._IfdEntryFactory',
295-
side_effect=[ifd_entry_, ifd_entry_2_]
288+
request,
289+
"docx.image.tiff._IfdEntryFactory",
290+
side_effect=[ifd_entry_, ifd_entry_2_],
296291
)
297292

298293
@pytest.fixture
299294
def iter_fixture(self, _IfdEntryFactory_, ifd_entry_, ifd_entry_2_):
300-
stream_rdr = StreamReader(BytesIO(b'\x00\x02'), BIG_ENDIAN)
295+
stream_rdr = StreamReader(BytesIO(b"\x00\x02"), BIG_ENDIAN)
301296
offsets = [2, 14]
302297
ifd_parser = _IfdParser(stream_rdr, offset=0)
303298
expected_entries = [ifd_entry_, ifd_entry_2_]
304-
return (
305-
ifd_parser, _IfdEntryFactory_, stream_rdr, offsets,
306-
expected_entries
307-
)
299+
return (ifd_parser, _IfdEntryFactory_, stream_rdr, offsets, expected_entries)
308300

309301

310302
class Describe_IfdEntryFactory(object):
311-
312303
def it_constructs_the_right_class_for_a_given_ifd_entry(self, fixture):
313304
stream_rdr, offset, entry_cls_, ifd_entry_ = fixture
314305
ifd_entry = _IfdEntryFactory(stream_rdr, offset)
@@ -317,25 +308,34 @@ def it_constructs_the_right_class_for_a_given_ifd_entry(self, fixture):
317308

318309
# fixtures -------------------------------------------------------
319310

320-
@pytest.fixture(params=[
321-
(b'\x66\x66\x00\x01', 'BYTE'),
322-
(b'\x66\x66\x00\x02', 'ASCII'),
323-
(b'\x66\x66\x00\x03', 'SHORT'),
324-
(b'\x66\x66\x00\x04', 'LONG'),
325-
(b'\x66\x66\x00\x05', 'RATIONAL'),
326-
(b'\x66\x66\x00\x06', 'CUSTOM'),
327-
])
311+
@pytest.fixture(
312+
params=[
313+
(b"\x66\x66\x00\x01", "BYTE"),
314+
(b"\x66\x66\x00\x02", "ASCII"),
315+
(b"\x66\x66\x00\x03", "SHORT"),
316+
(b"\x66\x66\x00\x04", "LONG"),
317+
(b"\x66\x66\x00\x05", "RATIONAL"),
318+
(b"\x66\x66\x00\x06", "CUSTOM"),
319+
]
320+
)
328321
def fixture(
329-
self, request, ifd_entry_, _IfdEntry_, _AsciiIfdEntry_,
330-
_ShortIfdEntry_, _LongIfdEntry_, _RationalIfdEntry_):
322+
self,
323+
request,
324+
ifd_entry_,
325+
_IfdEntry_,
326+
_AsciiIfdEntry_,
327+
_ShortIfdEntry_,
328+
_LongIfdEntry_,
329+
_RationalIfdEntry_,
330+
):
331331
bytes_, entry_type = request.param
332332
entry_cls_ = {
333-
'BYTE': _IfdEntry_,
334-
'ASCII': _AsciiIfdEntry_,
335-
'SHORT': _ShortIfdEntry_,
336-
'LONG': _LongIfdEntry_,
337-
'RATIONAL': _RationalIfdEntry_,
338-
'CUSTOM': _IfdEntry_,
333+
"BYTE": _IfdEntry_,
334+
"ASCII": _AsciiIfdEntry_,
335+
"SHORT": _ShortIfdEntry_,
336+
"LONG": _LongIfdEntry_,
337+
"RATIONAL": _RationalIfdEntry_,
338+
"CUSTOM": _IfdEntry_,
339339
}[entry_type]
340340
stream_rdr = StreamReader(BytesIO(bytes_), BIG_ENDIAN)
341341
offset = 0
@@ -347,35 +347,31 @@ def ifd_entry_(self, request):
347347

348348
@pytest.fixture
349349
def _IfdEntry_(self, request, ifd_entry_):
350-
_IfdEntry_ = class_mock(request, 'docx.image.tiff._IfdEntry')
350+
_IfdEntry_ = class_mock(request, "docx.image.tiff._IfdEntry")
351351
_IfdEntry_.from_stream.return_value = ifd_entry_
352352
return _IfdEntry_
353353

354354
@pytest.fixture
355355
def _AsciiIfdEntry_(self, request, ifd_entry_):
356-
_AsciiIfdEntry_ = class_mock(
357-
request, 'docx.image.tiff._AsciiIfdEntry')
356+
_AsciiIfdEntry_ = class_mock(request, "docx.image.tiff._AsciiIfdEntry")
358357
_AsciiIfdEntry_.from_stream.return_value = ifd_entry_
359358
return _AsciiIfdEntry_
360359

361360
@pytest.fixture
362361
def _ShortIfdEntry_(self, request, ifd_entry_):
363-
_ShortIfdEntry_ = class_mock(
364-
request, 'docx.image.tiff._ShortIfdEntry')
362+
_ShortIfdEntry_ = class_mock(request, "docx.image.tiff._ShortIfdEntry")
365363
_ShortIfdEntry_.from_stream.return_value = ifd_entry_
366364
return _ShortIfdEntry_
367365

368366
@pytest.fixture
369367
def _LongIfdEntry_(self, request, ifd_entry_):
370-
_LongIfdEntry_ = class_mock(
371-
request, 'docx.image.tiff._LongIfdEntry')
368+
_LongIfdEntry_ = class_mock(request, "docx.image.tiff._LongIfdEntry")
372369
_LongIfdEntry_.from_stream.return_value = ifd_entry_
373370
return _LongIfdEntry_
374371

375372
@pytest.fixture
376373
def _RationalIfdEntry_(self, request, ifd_entry_):
377-
_RationalIfdEntry_ = class_mock(
378-
request, 'docx.image.tiff._RationalIfdEntry')
374+
_RationalIfdEntry_ = class_mock(request, "docx.image.tiff._RationalIfdEntry")
379375
_RationalIfdEntry_.from_stream.return_value = ifd_entry_
380376
return _RationalIfdEntry_
381377

@@ -385,11 +381,10 @@ def offset_(self, request):
385381

386382

387383
class Describe_IfdEntry(object):
388-
389384
def it_can_construct_from_a_stream_and_offset(
390385
self, _parse_value_, _IfdEntry__init_, value_
391386
):
392-
bytes_ = b'\x00\x01\x66\x66\x00\x00\x00\x02\x00\x00\x00\x03'
387+
bytes_ = b"\x00\x01\x66\x66\x00\x00\x00\x02\x00\x00\x00\x03"
393388
stream_rdr = StreamReader(BytesIO(bytes_), BIG_ENDIAN)
394389
offset, tag_code, value_count, value_offset = 0, 1, 2, 3
395390
_parse_value_.return_value = value_
@@ -415,44 +410,40 @@ def _IfdEntry__init_(self, request):
415410

416411
@pytest.fixture
417412
def _parse_value_(self, request):
418-
return method_mock(request, _IfdEntry, '_parse_value', autospec=False)
413+
return method_mock(request, _IfdEntry, "_parse_value", autospec=False)
419414

420415
@pytest.fixture
421416
def value_(self, request):
422417
return loose_mock(request)
423418

424419

425420
class Describe_AsciiIfdEntry(object):
426-
427421
def it_can_parse_an_ascii_string_IFD_entry(self):
428-
bytes_ = b'foobar\x00'
422+
bytes_ = b"foobar\x00"
429423
stream_rdr = StreamReader(BytesIO(bytes_), BIG_ENDIAN)
430424
val = _AsciiIfdEntry._parse_value(stream_rdr, None, 7, 0)
431-
assert val == 'foobar'
425+
assert val == "foobar"
432426

433427

434428
class Describe_ShortIfdEntry(object):
435-
436429
def it_can_parse_a_short_int_IFD_entry(self):
437-
bytes_ = b'foobaroo\x00\x2A'
430+
bytes_ = b"foobaroo\x00\x2A"
438431
stream_rdr = StreamReader(BytesIO(bytes_), BIG_ENDIAN)
439432
val = _ShortIfdEntry._parse_value(stream_rdr, 0, 1, None)
440433
assert val == 42
441434

442435

443436
class Describe_LongIfdEntry(object):
444-
445437
def it_can_parse_a_long_int_IFD_entry(self):
446-
bytes_ = b'foobaroo\x00\x00\x00\x2A'
438+
bytes_ = b"foobaroo\x00\x00\x00\x2A"
447439
stream_rdr = StreamReader(BytesIO(bytes_), BIG_ENDIAN)
448440
val = _LongIfdEntry._parse_value(stream_rdr, 0, 1, None)
449441
assert val == 42
450442

451443

452444
class Describe_RationalIfdEntry(object):
453-
454445
def it_can_parse_a_rational_IFD_entry(self):
455-
bytes_ = b'\x00\x00\x00\x2A\x00\x00\x00\x54'
446+
bytes_ = b"\x00\x00\x00\x2A\x00\x00\x00\x54"
456447
stream_rdr = StreamReader(BytesIO(bytes_), BIG_ENDIAN)
457448
val = _RationalIfdEntry._parse_value(stream_rdr, None, 1, 0)
458449
assert val == 0.5

tests/opc/test_part.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -482,6 +482,8 @@ def reltype_2_(self, request):
482482

483483

484484
class DescribeXmlPart(object):
485+
"""Unit-test suite for `docx.opc.part.XmlPart` object."""
486+
485487
def it_can_be_constructed_by_PartFactory(
486488
self, partname_, content_type_, blob_, package_, element_, parse_xml_, __init_
487489
):

tests/unitutil/mock.py

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -70,9 +70,7 @@ def instance_mock(request, cls, name=None, spec_set=True, **kwargs):
7070
the Mock() call that creates the mock.
7171
"""
7272
name = name if name is not None else request.fixturename
73-
return create_autospec(
74-
cls, _name=name, spec_set=spec_set, instance=True, **kwargs
75-
)
73+
return create_autospec(cls, _name=name, spec_set=spec_set, instance=True, **kwargs)
7674

7775

7876
def loose_mock(request, name=None, **kwargs):
@@ -97,10 +95,8 @@ def method_mock(request, cls, method_name, autospec=True, **kwargs):
9795

9896

9997
def open_mock(request, module_name, **kwargs):
100-
"""
101-
Return a mock for the builtin `open()` method in *module_name*.
102-
"""
103-
target = '%s.open' % module_name
98+
"""Return a mock for the builtin `open()` method in *module_name*."""
99+
target = "%s.open" % module_name
104100
_patch = patch(target, mock_open(), create=True, **kwargs)
105101
request.addfinalizer(_patch.stop)
106102
return _patch.start()

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy