aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGuido Günther <agx@sigxcpu.org>2018-12-16 13:21:29 +0100
committerGuido Günther <agx@sigxcpu.org>2018-12-16 13:27:31 +0100
commit55edef25112ad4d42fbb90651d37e3b4862895e1 (patch)
treee2cf14dfa38f4a79e196cc6d291dde9146c53abf
parent5426d03571f37c11da198b5d9f8450b1f1f27cc8 (diff)
PatchSeries: Don't fail if there's only a patch end marker
If the patch only has '---' we pass empty data to git-mail-info otherwise. Thanks: James Cowgill for the detailed report Closes: #916545
-rw-r--r--gbp/patch_series.py22
-rw-r--r--tests/08_test_patch.py11
-rw-r--r--tests/08_test_patch_data/916545.patch5
3 files changed, 29 insertions, 9 deletions
diff --git a/gbp/patch_series.py b/gbp/patch_series.py
index ef373a8..c47f4b6 100644
--- a/gbp/patch_series.py
+++ b/gbp/patch_series.py
@@ -83,15 +83,19 @@ class Patch(object):
break
toparse.append(line)
- out, err, ret = GitRepository.git_inout(command='mailinfo',
- args=['-k', body.name, '/dev/null'],
- input=b''.join(toparse),
- extra_env=None,
- cwd=None,
- capture_stderr=True)
- if ret != 0:
- raise GbpError("Failed to read patch header of '%s': %s" %
- (self.path, err))
+ input = b''.join(toparse)
+ if input.strip():
+ out, err, ret = GitRepository.git_inout(command='mailinfo',
+ args=['-k', body.name, '/dev/null'],
+ input=input,
+ extra_env=None,
+ cwd=None,
+ capture_stderr=True)
+ if ret != 0:
+ raise GbpError("Failed to read patch header of '%s': %s" %
+ (self.path, err))
+ else:
+ out = b''
# Header
for line in out.decode().split('\n'):
diff --git a/tests/08_test_patch.py b/tests/08_test_patch.py
index 1567f01..9fe7f7f 100644
--- a/tests/08_test_patch.py
+++ b/tests/08_test_patch.py
@@ -126,3 +126,14 @@ reproducible build
Author: Alexis Bienvenüe <pado@passoire.fr>
""",
p.long_desc)
+
+
+class TestMarkerOnly(unittest.TestCase):
+ data_dir = os.path.splitext(__file__)[0] + '_data'
+
+ def test_parse(self):
+ """Don't fail on empty patch header"""
+ patchfile = os.path.join(self.data_dir, "916545.patch")
+ self.assertTrue(os.path.exists(patchfile))
+ p = Dep3Patch(patchfile)
+ self.assertEqual("916545", p.subject)
diff --git a/tests/08_test_patch_data/916545.patch b/tests/08_test_patch_data/916545.patch
new file mode 100644
index 0000000..4602955
--- /dev/null
+++ b/tests/08_test_patch_data/916545.patch
@@ -0,0 +1,5 @@
+---
+--- /dev/null
++++ b/foo
+@@ -0,0 +1,1 @@
++foo