Skip to content

Commit e5aabc2

Browse files
committed
Deal with empty %changelog when converting
Fixes: #390 Related: rhbz#2448062 Signed-off-by: Nils Philippsen <nils@redhat.com>
1 parent a35c82d commit e5aabc2

File tree

2 files changed

+14
-9
lines changed

2 files changed

+14
-9
lines changed

rpmautospec/subcommands/convert.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -168,8 +168,8 @@ def convert_to_autochangelog(self):
168168
)
169169

170170
lineno = changelog_lines[0] + 1
171-
if autochangelog_re.match(self.spec_lines[lineno]):
172-
log.warning(f"'{self.specfile}' already uses %autochangelog")
171+
if lineno < len(self.spec_lines) and autochangelog_re.match(self.spec_lines[lineno]):
172+
log.warning("'%s' already uses %%autochangelog", self.specfile)
173173
return
174174
self.changelog_lines = [line.rstrip() for line in self.spec_lines[lineno:]]
175175
while self.changelog_lines and not self.changelog_lines[-1]:

tests/rpmautospec/subcommands/test_convert.py

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -213,20 +213,22 @@ def test_autorelease_invalid(specfile, expected):
213213

214214

215215
@pytest.mark.parametrize(
216-
"changelog",
216+
"changelog, is_empty",
217217
[
218-
"%changelog\n- log line",
219-
"%ChAnGeLoG\n- log line ", # trailing whitespace here
220-
"%changelog\n- log line\n\n\n", # trailing newlines here
218+
("%changelog\n- log line", False),
219+
("%ChAnGeLoG\n- log line ", False), # trailing whitespace here
220+
("%changelog\n- log line\n\n\n", False), # trailing newlines here
221+
("%changelog", True), # empty changelog, only a single newline character
221222
],
222223
ids=[
223224
"regular",
224225
"case+whitespace",
225226
"regular+newlines",
227+
"empty",
226228
],
227-
indirect=True,
229+
indirect=("changelog",),
228230
)
229-
def test_autochangelog(specfile):
231+
def test_autochangelog(is_empty, specfile):
230232
assert autochangelog_re.search(specfile.read_text()) is None
231233

232234
converter = convert.PkgConverter(specfile)
@@ -237,7 +239,10 @@ def test_autochangelog(specfile):
237239
assert autochangelog_re.search(specfile.read_text()) is not None
238240
changelog = specfile.parent / "changelog"
239241
assert changelog.exists()
240-
assert changelog.read_text() == "- log line\n"
242+
if is_empty:
243+
assert changelog.read_text() == "\n"
244+
else:
245+
assert changelog.read_text() == "- log line\n"
241246

242247

243248
def test_autochangelog_already_converted(specfile, caplog):

0 commit comments

Comments
 (0)