From c6a06115466ec4c8b2abaaf26458e498e3eff49a Mon Sep 17 00:00:00 2001 From: John Davis Date: Mon, 23 Oct 2023 16:46:35 -0400 Subject: [PATCH] Add new munge_lists function + unit test --- lib/galaxy/util/__init__.py | 11 +++++++++++ test/unit/util/test_utils.py | 17 +++++++++++++++++ 2 files changed, 28 insertions(+) diff --git a/lib/galaxy/util/__init__.py b/lib/galaxy/util/__init__.py index afeb7307e54..451895fc981 100644 --- a/lib/galaxy/util/__init__.py +++ b/lib/galaxy/util/__init__.py @@ -1882,3 +1882,14 @@ def enum_values(enum_class): Values are in member definition order. """ return [value.value for value in enum_class.__members__.values()] + + +def munge_lists(listA: Any, listB: Any) -> List: + """ + Combine two lists into a single list. + + Arguments can be None, non-lists, or lists. If an argument is None, it will + not be included in the returned list. If both arguments are None, an empty + list will be returned. + """ + return listify(listA) + listify(listB) diff --git a/test/unit/util/test_utils.py b/test/unit/util/test_utils.py index 34d7cb95093..a6ea82dcdb2 100644 --- a/test/unit/util/test_utils.py +++ b/test/unit/util/test_utils.py @@ -149,3 +149,20 @@ def test_enum_values(): B = "b" assert util.enum_values(Stuff) == ["a", "c", "b"] + + +class NotFalsy: + """Class requires explicit check for None""" + + def __bool__(self): + raise Exception("not implemented") + + +def test_munge_lists(): + foo, bar = NotFalsy(), NotFalsy() + assert util.munge_lists(foo, None) == [foo] + assert util.munge_lists(None, foo) == [foo] + assert util.munge_lists(foo, bar) == [foo, bar] + assert util.munge_lists([foo, bar], None) == [foo, bar] + assert util.munge_lists(None, [foo, bar]) == [foo, bar] + assert util.munge_lists(None, None) == []