diff --git a/debian/changelog b/debian/changelog index 924450d3821242bc670f730052b7821694f2e9c3..469aae0963e43e72c52b4734c9df681bbe4d9b28 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,6 +1,8 @@ python-debian (0.1.45) UNRELEASED; urgency=medium * Add Deb822FileElement.remove method. + * RTS parser: don't add trailing whitespace when setting field values + that start with a newline. Closes: #1013485 -- Jelmer Vernooij <jelmer@debian.org> Sun, 05 Jun 2022 15:39:21 +0100 diff --git a/lib/debian/_deb822_repro/parsing.py b/lib/debian/_deb822_repro/parsing.py index c880245fe8acff6f1028409ff3a3e6c4aa52f982..6468a6f06081e85c1288dbca8415727e562f43e2 100644 --- a/lib/debian/_deb822_repro/parsing.py +++ b/lib/debian/_deb822_repro/parsing.py @@ -1450,7 +1450,10 @@ class Deb822ParagraphToStrWrapperMixin(AutoResolvingMixin[str], return # Regenerate the first line with normalized whitespace first_line, rest = value.split("\n", 1) - value = "".join((" ", first_line.strip(), "\n", rest)) + if first_line: + value = "".join((" ", first_line.strip(), "\n", rest)) + else: + value = "".join(("\n", rest)) if not value.endswith("\n"): if not self._auto_map_final_newline_in_multiline_values: raise ValueError("Values must end with a newline (or be single line" diff --git a/lib/debian/tests/test_repro_deb822.py b/lib/debian/tests/test_repro_deb822.py index 46df2eaa9a43a98f61824177b519ae493e5d7c5c..5721d1f666a53dcd0c52b36ec92180049431e38d 100644 --- a/lib/debian/tests/test_repro_deb822.py +++ b/lib/debian/tests/test_repro_deb822.py @@ -1761,3 +1761,17 @@ class FormatPreservingDeb822ParserTests(TestCase): expected_result) as bd_list: bd_list.append_newline() bd_list.append('bar (>= 1.0~)') + + def test_mutate_field_preserves_whitespace(self): + # type: () -> None + + original = textwrap.dedent('''\ + Package: foo + Build-Depends: + debhelper-compat (= 11), + uuid-dev + ''') + deb822_file = parse_deb822_file(original.splitlines(keepends=True)) + source_paragraph = next(iter(deb822_file)) + source_paragraph['Build-Depends'] = '\n debhelper-compat (= 11),\n uuid-dev' + self.assertEqual(original, deb822_file.convert_to_text())