summaryrefslogtreecommitdiff
path: root/gitlab/tests/test_cli.py
diff options
context:
space:
mode:
Diffstat (limited to 'gitlab/tests/test_cli.py')
-rw-r--r--gitlab/tests/test_cli.py220
1 files changed, 105 insertions, 115 deletions
diff --git a/gitlab/tests/test_cli.py b/gitlab/tests/test_cli.py
index 63a5793..2246369 100644
--- a/gitlab/tests/test_cli.py
+++ b/gitlab/tests/test_cli.py
@@ -19,128 +19,118 @@
import argparse
import os
import tempfile
-import unittest
import io
-try:
- from contextlib import redirect_stderr # noqa: H302
-except ImportError:
- from contextlib import contextmanager # noqa: H302
- import sys
-
- @contextmanager
- def redirect_stderr(new_target):
- old_target, sys.stderr = sys.stderr, new_target
- yield
- sys.stderr = old_target
+from contextlib import redirect_stderr # noqa: H302
+import pytest
from gitlab import cli
import gitlab.v4.cli
-import pytest
-class TestCLI(unittest.TestCase):
- def test_what_to_cls(self):
- assert "Foo" == cli.what_to_cls("foo")
- assert "FooBar" == cli.what_to_cls("foo-bar")
-
- def test_cls_to_what(self):
- class Class(object):
- pass
-
- class TestClass(object):
- pass
-
- assert "test-class" == cli.cls_to_what(TestClass)
- assert "class" == cli.cls_to_what(Class)
-
- def test_die(self):
- fl = io.StringIO()
- with redirect_stderr(fl):
- with pytest.raises(SystemExit) as test:
- cli.die("foobar")
- assert fl.getvalue() == "foobar\n"
- assert test.value.code == 1
-
- def test_parse_value(self):
- ret = cli._parse_value("foobar")
- assert ret == "foobar"
-
- ret = cli._parse_value(True)
- assert ret == True
-
- ret = cli._parse_value(1)
- assert ret == 1
-
- ret = cli._parse_value(None)
- assert ret == None
-
- fd, temp_path = tempfile.mkstemp()
- os.write(fd, b"content")
- os.close(fd)
- ret = cli._parse_value("@%s" % temp_path)
- assert ret == "content"
- os.unlink(temp_path)
-
- fl = io.StringIO()
- with redirect_stderr(fl):
- with pytest.raises(SystemExit) as exc:
- cli._parse_value("@/thisfileprobablydoesntexist")
- assert (
- fl.getvalue() == "[Errno 2] No such file or directory:"
- " '/thisfileprobablydoesntexist'\n"
- )
- assert exc.value.code == 1
-
- def test_base_parser(self):
- parser = cli._get_base_parser()
- args = parser.parse_args(
- ["-v", "-g", "gl_id", "-c", "foo.cfg", "-c", "bar.cfg"]
- )
- assert args.verbose
- assert args.gitlab == "gl_id"
- assert args.config_file == ["foo.cfg", "bar.cfg"]
-
-
-class TestV4CLI(unittest.TestCase):
- def test_parse_args(self):
- parser = cli._get_parser(gitlab.v4.cli)
- args = parser.parse_args(["project", "list"])
- assert args.what == "project"
- assert args.whaction == "list"
-
- def test_parser(self):
- parser = cli._get_parser(gitlab.v4.cli)
- subparsers = next(
- action
- for action in parser._actions
- if isinstance(action, argparse._SubParsersAction)
- )
- assert subparsers is not None
- assert "project" in subparsers.choices
+def test_what_to_cls():
+ assert "Foo" == cli.what_to_cls("foo")
+ assert "FooBar" == cli.what_to_cls("foo-bar")
- user_subparsers = next(
- action
- for action in subparsers.choices["project"]._actions
- if isinstance(action, argparse._SubParsersAction)
- )
- assert user_subparsers is not None
- assert "list" in user_subparsers.choices
- assert "get" in user_subparsers.choices
- assert "delete" in user_subparsers.choices
- assert "update" in user_subparsers.choices
- assert "create" in user_subparsers.choices
- assert "archive" in user_subparsers.choices
- assert "unarchive" in user_subparsers.choices
-
- actions = user_subparsers.choices["create"]._option_string_actions
- assert not actions["--description"].required
-
- user_subparsers = next(
- action
- for action in subparsers.choices["group"]._actions
- if isinstance(action, argparse._SubParsersAction)
+
+def test_cls_to_what():
+ class Class(object):
+ pass
+
+ class TestClass(object):
+ pass
+
+ assert "test-class" == cli.cls_to_what(TestClass)
+ assert "class" == cli.cls_to_what(Class)
+
+
+def test_die():
+ fl = io.StringIO()
+ with redirect_stderr(fl):
+ with pytest.raises(SystemExit) as test:
+ cli.die("foobar")
+ assert fl.getvalue() == "foobar\n"
+ assert test.value.code == 1
+
+
+def test_parse_value():
+ ret = cli._parse_value("foobar")
+ assert ret == "foobar"
+
+ ret = cli._parse_value(True)
+ assert ret is True
+
+ ret = cli._parse_value(1)
+ assert ret == 1
+
+ ret = cli._parse_value(None)
+ assert ret is None
+
+ fd, temp_path = tempfile.mkstemp()
+ os.write(fd, b"content")
+ os.close(fd)
+ ret = cli._parse_value("@%s" % temp_path)
+ assert ret == "content"
+ os.unlink(temp_path)
+
+ fl = io.StringIO()
+ with redirect_stderr(fl):
+ with pytest.raises(SystemExit) as exc:
+ cli._parse_value("@/thisfileprobablydoesntexist")
+ assert (
+ fl.getvalue() == "[Errno 2] No such file or directory:"
+ " '/thisfileprobablydoesntexist'\n"
)
- actions = user_subparsers.choices["create"]._option_string_actions
- assert actions["--name"].required
+ assert exc.value.code == 1
+
+
+def test_base_parser():
+ parser = cli._get_base_parser()
+ args = parser.parse_args(["-v", "-g", "gl_id", "-c", "foo.cfg", "-c", "bar.cfg"])
+ assert args.verbose
+ assert args.gitlab == "gl_id"
+ assert args.config_file == ["foo.cfg", "bar.cfg"]
+
+
+def test_v4_parse_args():
+ parser = cli._get_parser(gitlab.v4.cli)
+ args = parser.parse_args(["project", "list"])
+ assert args.what == "project"
+ assert args.whaction == "list"
+
+
+def test_v4_parser():
+ parser = cli._get_parser(gitlab.v4.cli)
+ subparsers = next(
+ action
+ for action in parser._actions
+ if isinstance(action, argparse._SubParsersAction)
+ )
+ assert subparsers is not None
+ assert "project" in subparsers.choices
+
+ user_subparsers = next(
+ action
+ for action in subparsers.choices["project"]._actions
+ if isinstance(action, argparse._SubParsersAction)
+ )
+ assert user_subparsers is not None
+ assert "list" in user_subparsers.choices
+ assert "get" in user_subparsers.choices
+ assert "delete" in user_subparsers.choices
+ assert "update" in user_subparsers.choices
+ assert "create" in user_subparsers.choices
+ assert "archive" in user_subparsers.choices
+ assert "unarchive" in user_subparsers.choices
+
+ actions = user_subparsers.choices["create"]._option_string_actions
+ assert not actions["--description"].required
+
+ user_subparsers = next(
+ action
+ for action in subparsers.choices["group"]._actions
+ if isinstance(action, argparse._SubParsersAction)
+ )
+ actions = user_subparsers.choices["create"]._option_string_actions
+ assert actions["--name"].required