We can't just change module attributes while testing. Use mock.patch.

This commit is contained in:
Pedro Algarvio 2020-08-26 12:42:23 +01:00
parent f7f5ad70dd
commit 9d8745162a
No known key found for this signature in database
GPG key ID: BB36BF6584A298FF

View file

@ -1,5 +1,3 @@
import os
import pytest
import salt.utils.msgpack
from tests.support.mock import MagicMock, patch
@ -14,17 +12,16 @@ def test_load_encoding(tmpdir):
https://github.com/msgpack/msgpack-python/blob/master/ChangeLog.rst
"""
fn_ = os.path.join(tmpdir, "test_load_encoding.txt")
salt.utils.msgpack.version = (1, 0, 0)
fname = tmpdir.join("test_load_encoding.txt")
kwargs = {"encoding": "utf-8"}
data = [1, 2, 3]
with salt.utils.files.fopen(fn_, "wb") as fh_:
salt.utils.msgpack.dump(data, fh_)
with salt.utils.files.fopen(fn_, "rb") as fh_:
ret = salt.utils.msgpack.load(fh_, **kwargs)
with patch.object(salt.utils.msgpack, "version", (1, 0, 0)):
with salt.utils.files.fopen(fname.strpath, "wb") as wfh:
salt.utils.msgpack.dump(data, wfh)
with salt.utils.files.fopen(fname.strpath, "rb") as rfh:
ret = salt.utils.msgpack.load(rfh, **kwargs)
assert ret == data
assert ret == data
@pytest.mark.parametrize(
@ -35,28 +32,28 @@ def test_load_multiple_versions(version, encoding, tmpdir):
test when using msgpack on multiple versions that
we only remove encoding on >= 1.0.0
"""
fn_ = os.path.join(tmpdir, "test_load_multipl_versions.txt")
salt.utils.msgpack.version = version
data = [1, 2, 3]
fname = tmpdir.join("test_load_multipl_versions.txt")
with patch.object(salt.utils.msgpack, "version", version):
data = [1, 2, 3]
mock_dump = MagicMock(return_value=data)
patch_dump = patch("msgpack.pack", mock_dump)
mock_dump = MagicMock(return_value=data)
patch_dump = patch("msgpack.pack", mock_dump)
mock_load = MagicMock(return_value=data)
patch_load = patch("msgpack.unpack", mock_load)
mock_load = MagicMock(return_value=data)
patch_load = patch("msgpack.unpack", mock_load)
kwargs = {"encoding": "utf-8"}
with patch_dump, patch_load:
with salt.utils.files.fopen(fn_, "wb") as fh_:
salt.utils.msgpack.dump(data, fh_, encoding="utf-8")
if encoding:
assert "encoding" in mock_dump.call_args.kwargs
else:
assert "encoding" not in mock_dump.call_args.kwargs
kwargs = {"encoding": "utf-8"}
with patch_dump, patch_load:
with salt.utils.files.fopen(fname.strpath, "wb") as wfh:
salt.utils.msgpack.dump(data, wfh, encoding="utf-8")
if encoding:
assert "encoding" in mock_dump.call_args.kwargs
else:
assert "encoding" not in mock_dump.call_args.kwargs
with salt.utils.files.fopen(fn_, "rb") as fh_:
salt.utils.msgpack.load(fh_, **kwargs)
if encoding:
assert "encoding" in mock_load.call_args.kwargs
else:
assert "encoding" not in mock_load.call_args.kwargs
with salt.utils.files.fopen(fname.strpath, "rb") as rfh:
salt.utils.msgpack.load(rfh, **kwargs)
if encoding:
assert "encoding" in mock_load.call_args.kwargs
else:
assert "encoding" not in mock_load.call_args.kwargs