import pytest
import argparse
+from ceph_volume import exceptions
from ceph_volume.util import arg_validators
invalid_lv_paths = [
- '', 'lv_name', '///', '/lv_name', 'lv_name/',
+ '', 'lv_name', '/lv_name', 'lv_name/',
'/dev/lv_group/lv_name'
]
def test_is_valid(self):
path = 'vg/lv'
assert self.validator(path) == path
+
+ def test_abspath_is_valid(self):
+ path = '/'
+ assert self.validator(path) == path
+
+
+class TestOSDPath(object):
+
+ def setup(self):
+ self.validator = arg_validators.OSDPath()
+
+ def test_is_not_root(self):
+ with pytest.raises(exceptions.SuperUserError):
+ self.validator('')
+
+ def test_path_is_not_a_directory(self, is_root, tmpfile, monkeypatch):
+ monkeypatch.setattr(arg_validators.disk, 'is_partition', lambda x: False)
+ validator = arg_validators.OSDPath()
+ with pytest.raises(argparse.ArgumentError):
+ validator(tmpfile())
+
+ def test_files_are_missing(self, is_root, tmpdir, monkeypatch):
+ tmppath = str(tmpdir)
+ monkeypatch.setattr(arg_validators.disk, 'is_partition', lambda x: False)
+ validator = arg_validators.OSDPath()
+ with pytest.raises(argparse.ArgumentError) as error:
+ validator(tmppath)
+ assert 'Required file (ceph_fsid) was not found in OSD' in str(error)