]>
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
7 class TestOSDPath(object):
10 self
.validator
= arg_validators
.OSDPath()
12 def test_is_not_root(self
):
13 with pytest
.raises(exceptions
.SuperUserError
):
16 def test_path_is_not_a_directory(self
, is_root
, tmpfile
, monkeypatch
):
17 monkeypatch
.setattr(arg_validators
.disk
, 'is_partition', lambda x
: False)
18 validator
= arg_validators
.OSDPath()
19 with pytest
.raises(argparse
.ArgumentError
):
22 def test_files_are_missing(self
, is_root
, tmpdir
, monkeypatch
):
24 monkeypatch
.setattr(arg_validators
.disk
, 'is_partition', lambda x
: False)
25 validator
= arg_validators
.OSDPath()
26 with pytest
.raises(argparse
.ArgumentError
) as error
:
28 assert 'Required file (ceph_fsid) was not found in OSD' in str(error
.value
)
31 class TestExcludeGroupOptions(object):
34 self
.parser
= argparse
.ArgumentParser()
36 def test_flags_in_one_group(self
):
37 argv
= ['<prog>', '--filestore', '--bar']
38 filestore_group
= self
.parser
.add_argument_group('filestore')
39 bluestore_group
= self
.parser
.add_argument_group('bluestore')
40 filestore_group
.add_argument('--filestore')
41 bluestore_group
.add_argument('--bluestore')
42 result
= arg_validators
.exclude_group_options(
44 ['filestore', 'bluestore'],
49 def test_flags_in_no_group(self
):
50 argv
= ['<prog>', '--foo', '--bar']
51 filestore_group
= self
.parser
.add_argument_group('filestore')
52 bluestore_group
= self
.parser
.add_argument_group('bluestore')
53 filestore_group
.add_argument('--filestore')
54 bluestore_group
.add_argument('--bluestore')
55 result
= arg_validators
.exclude_group_options(
57 ['filestore', 'bluestore'],
62 def test_flags_conflict(self
, capsys
):
63 argv
= ['<prog>', '--filestore', '--bluestore']
64 filestore_group
= self
.parser
.add_argument_group('filestore')
65 bluestore_group
= self
.parser
.add_argument_group('bluestore')
66 filestore_group
.add_argument('--filestore')
67 bluestore_group
.add_argument('--bluestore')
69 arg_validators
.exclude_group_options(
70 self
.parser
, ['filestore', 'bluestore'], argv
=argv
72 stdout
, stderr
= capsys
.readouterr()
73 assert 'Cannot use --filestore (filestore) with --bluestore (bluestore)' in stderr
76 class TestValidDevice(object):
79 self
.validator
= arg_validators
.ValidDevice()
81 def test_path_is_valid(self
, fake_call
):
82 result
= self
.validator('/')
83 assert result
.abspath
== '/'
85 def test_path_is_invalid(self
, fake_call
):
86 with pytest
.raises(argparse
.ArgumentError
):
87 self
.validator('/device/does/not/exist')