summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMax Wittig <max.wittig@siemens.com>2020-04-02 08:40:57 +0200
committerGitHub <noreply@github.com>2020-04-02 08:40:57 +0200
commit50fcd1237613645031410386e87b96b81ef5fb78 (patch)
tree84ab6c9ee695281235155f7ad2b138684fc8a322
parentc5904c4c2e79ec302ff0de20bcb2792be4924bbe (diff)
parenta26e58585b3d82cf1a3e60a3b7b3bfd7f51d77e5 (diff)
downloadgitlab-50fcd1237613645031410386e87b96b81ef5fb78.tar.gz
Merge pull request #1058 from python-gitlab/fix/listattribute-get-api-splits-string
Fix: ListAttribute get_for_api() splits strings
-rw-r--r--gitlab/tests/test_types.py10
-rw-r--r--gitlab/types.py4
-rw-r--r--tools/python_test_v4.py9
3 files changed, 21 insertions, 2 deletions
diff --git a/gitlab/tests/test_types.py b/gitlab/tests/test_types.py
index 5b9f2ca..3613383 100644
--- a/gitlab/tests/test_types.py
+++ b/gitlab/tests/test_types.py
@@ -51,11 +51,19 @@ class TestListAttribute(unittest.TestCase):
o.set_from_cli(" ")
self.assertEqual([], o.get())
- def test_get_for_api(self):
+ def test_get_for_api_from_cli(self):
o = types.ListAttribute()
o.set_from_cli("foo,bar,baz")
self.assertEqual("foo,bar,baz", o.get_for_api())
+ def test_get_for_api_from_list(self):
+ o = types.ListAttribute(["foo", "bar", "baz"])
+ self.assertEqual("foo,bar,baz", o.get_for_api())
+
+ def test_get_for_api_does_not_split_string(self):
+ o = types.ListAttribute("foo")
+ self.assertEqual("foo", o.get_for_api())
+
class TestLowercaseStringAttribute(unittest.TestCase):
def test_get_for_api(self):
diff --git a/gitlab/types.py b/gitlab/types.py
index 525dc30..e07d078 100644
--- a/gitlab/types.py
+++ b/gitlab/types.py
@@ -38,6 +38,10 @@ class ListAttribute(GitlabAttribute):
self._value = [item.strip() for item in cli_value.split(",")]
def get_for_api(self):
+ # Do not comma-split single value passed as string
+ if isinstance(self._value, str):
+ return self._value
+
return ",".join(self._value)
diff --git a/tools/python_test_v4.py b/tools/python_test_v4.py
index 69b0d31..e0cb3a6 100644
--- a/tools/python_test_v4.py
+++ b/tools/python_test_v4.py
@@ -677,10 +677,17 @@ assert issue1.participants()
assert type(issue1.closed_by()) == list
assert type(issue1.related_merge_requests()) == list
-# issues labels and events
+# issue labels
label2 = admin_project.labels.create({"name": "label2", "color": "#aabbcc"})
issue1.labels = ["label2"]
issue1.save()
+
+assert issue1 in admin_project.issues.list(labels=["label2"])
+assert issue1 in admin_project.issues.list(labels="label2")
+assert issue1 in admin_project.issues.list(labels="Any")
+assert issue1 not in admin_project.issues.list(labels="None")
+
+# issue events
events = issue1.resourcelabelevents.list()
assert events
event = issue1.resourcelabelevents.get(events[0].id)