Handle merging None into lists/dicts
Signed-off-by: martin f. krafft <madduck@madduck.net>
diff --git a/mergers/list/base.py b/mergers/list/base.py
index a7bbc17..ea73cdd 100644
--- a/mergers/list/base.py
+++ b/mergers/list/base.py
@@ -12,5 +12,7 @@
def merge(self, first, second):
first = [first] if not isinstance(first, list) else first[:]
+ if second is None:
+ return first
second = [second] if not isinstance(second, list) else second[:]
return self._combine(first, second)
diff --git a/mergers/list/extend.py b/mergers/list/extend.py
index f4acc35..5c44ac5 100644
--- a/mergers/list/extend.py
+++ b/mergers/list/extend.py
@@ -11,8 +11,9 @@
class ListExtend(BaseListMerger):
def _combine(self, first, second):
- if isinstance(second, list):
- first.extend(second)
- else:
- first.append(second)
+ if second is not None:
+ if isinstance(second, list):
+ first.extend(second)
+ else:
+ first.append(second)
return first
diff --git a/mergers/list/set.py b/mergers/list/set.py
index ddb0eb4..54770a3 100644
--- a/mergers/list/set.py
+++ b/mergers/list/set.py
@@ -11,7 +11,8 @@
class SetExtend(BaseListMerger):
def _combine(self, first, second):
- for i in second:
- if i not in first:
- first.append(i)
+ if second is not None:
+ for i in second:
+ if i not in first:
+ first.append(i)
return first
diff --git a/mergers/list/tests/test_extend.py b/mergers/list/tests/test_extend.py
index bdc40ca..7484e8e 100644
--- a/mergers/list/tests/test_extend.py
+++ b/mergers/list/tests/test_extend.py
@@ -64,3 +64,8 @@
l2 = [3,2,1]
target = l1 + l2
assert self._test_merge(l1, l2, target)
+
+ def test_merge_with_none(self):
+ first = [1,2,3]
+ ret = self.merger.merge(first, None)
+ assert ret == first
diff --git a/mergers/list/tests/test_set.py b/mergers/list/tests/test_set.py
index d3e8183..fa0e118 100644
--- a/mergers/list/tests/test_set.py
+++ b/mergers/list/tests/test_set.py
@@ -25,3 +25,8 @@
l2 = [3,2,1]
target = l1
assert self._test_merge(l1, l2, target)
+
+ def test_merge_with_none(self):
+ first = [1,2,3]
+ ret = self.merger.merge(first, None)
+ assert ret == first