]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
ceph-volume tests verify exclude_group_options works with groups of flags 20568/head
authorAlfredo Deza <adeza@redhat.com>
Tue, 20 Feb 2018 19:38:11 +0000 (14:38 -0500)
committerAndrew Schoen <aschoen@redhat.com>
Fri, 23 Feb 2018 15:33:11 +0000 (09:33 -0600)
Signed-off-by: Alfredo Deza <adeza@redhat.com>
(cherry picked from commit 11ba052010fe9a5c78c359bd05aa3042a69a575c)

src/ceph-volume/ceph_volume/tests/util/test_arg_validators.py

index 22b962b1d52d7f8f36e627d7e8e61269d27b9ae1..f989599c8b77297c132128246f3750bc0e6ff6c3 100644 (file)
@@ -1,5 +1,5 @@
-import pytest
 import argparse
+import pytest
 from ceph_volume import exceptions
 from ceph_volume.util import arg_validators
 
@@ -51,3 +51,48 @@ class TestOSDPath(object):
         with pytest.raises(argparse.ArgumentError) as error:
             validator(tmppath)
         assert 'Required file (ceph_fsid) was not found in OSD' in str(error)
+
+
+class TestExcludeGroupOptions(object):
+
+    def setup(self):
+        self.parser = argparse.ArgumentParser()
+
+    def test_flags_in_one_group(self):
+        argv = ['<prog>', '--filestore', '--bar']
+        filestore_group = self.parser.add_argument_group('filestore')
+        bluestore_group = self.parser.add_argument_group('bluestore')
+        filestore_group.add_argument('--filestore')
+        bluestore_group.add_argument('--bluestore')
+        result = arg_validators.exclude_group_options(
+            self.parser,
+            ['filestore', 'bluestore'],
+            argv=argv
+        )
+        assert result is None
+
+    def test_flags_in_no_group(self):
+        argv = ['<prog>', '--foo', '--bar']
+        filestore_group = self.parser.add_argument_group('filestore')
+        bluestore_group = self.parser.add_argument_group('bluestore')
+        filestore_group.add_argument('--filestore')
+        bluestore_group.add_argument('--bluestore')
+        result = arg_validators.exclude_group_options(
+            self.parser,
+            ['filestore', 'bluestore'],
+            argv=argv
+        )
+        assert result is None
+
+    def test_flags_conflict(self, capsys):
+        argv = ['<prog>', '--filestore', '--bluestore']
+        filestore_group = self.parser.add_argument_group('filestore')
+        bluestore_group = self.parser.add_argument_group('bluestore')
+        filestore_group.add_argument('--filestore')
+        bluestore_group.add_argument('--bluestore')
+
+        arg_validators.exclude_group_options(
+            self.parser, ['filestore', 'bluestore'], argv=argv
+        )
+        stdout, stderr = capsys.readouterr()
+        assert 'Cannot use --filestore (filestore) with --bluestore (bluestore)' in stdout