import os import pytest from ceph_volume.api import lvm as lvm_api class Capture(object): def __init__(self, *a, **kw): self.a = a self.kw = kw self.calls = [] def __call__(self, *a, **kw): self.calls.append({'args': a, 'kwargs': kw}) class Factory(object): def __init__(self, **kw): for k, v in kw.items(): setattr(self, k, v) @pytest.fixture def factory(): return Factory @pytest.fixture def capture(): return Capture() @pytest.fixture def volumes(monkeypatch): monkeypatch.setattr('ceph_volume.process.call', lambda x: ('', '', 0)) volumes = lvm_api.Volumes() volumes._purge() return volumes @pytest.fixture def volume_groups(monkeypatch): monkeypatch.setattr('ceph_volume.process.call', lambda x: ('', '', 0)) vgs = lvm_api.VolumeGroups() vgs._purge() return vgs @pytest.fixture def is_root(monkeypatch): """ Patch ``os.getuid()`` so that ceph-volume's decorators that ensure a user is root (or is sudoing to superuser) can continue as-is """ monkeypatch.setattr('os.getuid', lambda: 0) @pytest.fixture def tmpfile(tmpdir): """ Create a temporary file, optionally filling it with contents, returns an absolute path to the file when called """ def generate_file(name='file', contents=''): path = os.path.join(str(tmpdir), name) with open(path, 'w') as fp: fp.write(contents) return path return generate_file