|
import os |
|
import shutil |
|
from pathlib import Path |
|
from unittest.mock import MagicMock, mock_open, patch |
|
|
|
import pytest |
|
from _pytest.monkeypatch import MonkeyPatch |
|
|
|
from tests.unit_tests.oss.__mock.base import ( |
|
get_example_data, |
|
get_example_filename, |
|
get_example_filepath, |
|
get_example_folder, |
|
) |
|
|
|
|
|
class MockLocalFSClass: |
|
def write_bytes(self, data): |
|
assert data == get_example_data() |
|
|
|
def read_bytes(self): |
|
return get_example_data() |
|
|
|
@staticmethod |
|
def copyfile(src, dst): |
|
assert src == os.path.join(get_example_folder(), get_example_filename()) |
|
assert dst == get_example_filepath() |
|
|
|
@staticmethod |
|
def exists(path): |
|
assert path == os.path.join(get_example_folder(), get_example_filename()) |
|
return True |
|
|
|
@staticmethod |
|
def remove(path): |
|
assert path == os.path.join(get_example_folder(), get_example_filename()) |
|
|
|
|
|
MOCK = os.getenv("MOCK_SWITCH", "false").lower() == "true" |
|
|
|
|
|
@pytest.fixture |
|
def setup_local_fs_mock(monkeypatch: MonkeyPatch): |
|
if MOCK: |
|
monkeypatch.setattr(Path, "write_bytes", MockLocalFSClass.write_bytes) |
|
monkeypatch.setattr(Path, "read_bytes", MockLocalFSClass.read_bytes) |
|
monkeypatch.setattr(shutil, "copyfile", MockLocalFSClass.copyfile) |
|
monkeypatch.setattr(os.path, "exists", MockLocalFSClass.exists) |
|
monkeypatch.setattr(os, "remove", MockLocalFSClass.remove) |
|
|
|
os.makedirs = MagicMock() |
|
|
|
with patch("builtins.open", mock_open(read_data=get_example_data())): |
|
yield |
|
|
|
if MOCK: |
|
monkeypatch.undo() |
|
|