]>
git.proxmox.com Git - ceph.git/blob - ceph/src/ceph-volume/ceph_volume/tests/util/test_arg_validators.py
3 from ceph_volume
import exceptions
4 from ceph_volume
.util
import arg_validators
8 '', 'lv_name', '/lv_name', 'lv_name/',
9 '/dev/lv_group/lv_name'
13 class TestLVPath(object):
16 self
.validator
= arg_validators
.LVPath()
18 @pytest.mark
.parametrize('path', invalid_lv_paths
)
19 def test_no_slash_is_an_error(self
, path
):
20 with pytest
.raises(argparse
.ArgumentError
):
23 def test_is_valid(self
):
25 assert self
.validator(path
) == path
27 def test_abspath_is_valid(self
):
29 assert self
.validator(path
) == path
32 class TestOSDPath(object):
35 self
.validator
= arg_validators
.OSDPath()
37 def test_is_not_root(self
):
38 with pytest
.raises(exceptions
.SuperUserError
):
41 def test_path_is_not_a_directory(self
, is_root
, tmpfile
, monkeypatch
):
42 monkeypatch
.setattr(arg_validators
.disk
, 'is_partition', lambda x
: False)
43 validator
= arg_validators
.OSDPath()
44 with pytest
.raises(argparse
.ArgumentError
):
47 def test_files_are_missing(self
, is_root
, tmpdir
, monkeypatch
):
49 monkeypatch
.setattr(arg_validators
.disk
, 'is_partition', lambda x
: False)
50 validator
= arg_validators
.OSDPath()
51 with pytest
.raises(argparse
.ArgumentError
) as error
:
53 assert 'Required file (ceph_fsid) was not found in OSD' in str(error
)
56 class TestExcludeGroupOptions(object):
59 self
.parser
= argparse
.ArgumentParser()
61 def test_flags_in_one_group(self
):
62 argv
= ['<prog>', '--filestore', '--bar']
63 filestore_group
= self
.parser
.add_argument_group('filestore')
64 bluestore_group
= self
.parser
.add_argument_group('bluestore')
65 filestore_group
.add_argument('--filestore')
66 bluestore_group
.add_argument('--bluestore')
67 result
= arg_validators
.exclude_group_options(
69 ['filestore', 'bluestore'],
74 def test_flags_in_no_group(self
):
75 argv
= ['<prog>', '--foo', '--bar']
76 filestore_group
= self
.parser
.add_argument_group('filestore')
77 bluestore_group
= self
.parser
.add_argument_group('bluestore')
78 filestore_group
.add_argument('--filestore')
79 bluestore_group
.add_argument('--bluestore')
80 result
= arg_validators
.exclude_group_options(
82 ['filestore', 'bluestore'],
87 def test_flags_conflict(self
, capsys
):
88 argv
= ['<prog>', '--filestore', '--bluestore']
89 filestore_group
= self
.parser
.add_argument_group('filestore')
90 bluestore_group
= self
.parser
.add_argument_group('bluestore')
91 filestore_group
.add_argument('--filestore')
92 bluestore_group
.add_argument('--bluestore')
94 arg_validators
.exclude_group_options(
95 self
.parser
, ['filestore', 'bluestore'], argv
=argv
97 stdout
, stderr
= capsys
.readouterr()
98 assert 'Cannot use --filestore (filestore) with --bluestore (bluestore)' in stdout
101 class TestValidDevice(object):
104 self
.validator
= arg_validators
.ValidDevice()
106 def test_path_is_valid(self
, fake_call
):
107 result
= self
.validator('/')
108 assert result
.abspath
== '/'
110 def test_path_is_invalid(self
, fake_call
):
111 with pytest
.raises(argparse
.ArgumentError
):
112 self
.validator('/device/does/not/exist')