Skip to content

Commit 3c98aa2

Browse files
authored
Merge pull request #1588 from aptly-dev/fix/source-package-list
fix empty line in Source PackageList
2 parents 4a19238 + be68b15 commit 3c98aa2

2 files changed

Lines changed: 34 additions & 2 deletions

File tree

deb/format.go

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -291,8 +291,11 @@ func (c *ControlFileReader) ReadStanza() (Stanza, error) {
291291
lastField = canonicalCase(parts[0])
292292
lastFieldMultiline = isMultilineField(lastField, c.isRelease)
293293
if lastFieldMultiline {
294-
stanza[lastField] = parts[1]
295-
if parts[1] != "" {
294+
// Trim trailing whitespace from the inline value so that
295+
// "Package-List: " does not add empty line
296+
inlineVal := strings.TrimRight(parts[1], " \t")
297+
stanza[lastField] = inlineVal
298+
if inlineVal != "" {
296299
stanza[lastField] += "\n"
297300
}
298301
} else {

deb/format_test.go

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,35 @@ func (s *ControlFileSuite) TestReadWriteStanza(c *C) {
128128
c.Assert(strings.HasPrefix(str, "Package: "), Equals, true)
129129
}
130130

131+
// Sources may contain "Package-List: " with a trailing space.
132+
// That trailing space must not be preserved and re-emitted
133+
// as a spurious blank continuation line when the stanza is written back out.
134+
func (s *ControlFileSuite) TestPackageListTrailingSpace(c *C) {
135+
input := "Package-List: \n" +
136+
" bash deb shells required arch=any\n" +
137+
" bash-doc deb doc optional arch=all\n"
138+
139+
r := NewControlFileReader(bytes.NewBufferString(input), false, false)
140+
stanza, err := r.ReadStanza()
141+
c.Assert(err, IsNil)
142+
143+
c.Check(stanza["Package-List"], Equals,
144+
" bash deb shells required arch=any\n"+
145+
" bash-doc deb doc optional arch=all\n")
146+
147+
buf := &bytes.Buffer{}
148+
w := bufio.NewWriter(buf)
149+
err = stanza.Copy().WriteTo(w, true, false, false)
150+
c.Assert(err, IsNil)
151+
c.Assert(w.Flush(), IsNil)
152+
153+
written := buf.String()
154+
c.Assert(strings.Contains(written, "Package-List:\n \n"), Equals, false,
155+
Commentf("spurious blank continuation line found in written output:\n%s", written))
156+
c.Assert(strings.Contains(written, "Package-List:\n bash"), Equals, true,
157+
Commentf("expected Package-List entries not found in written output:\n%s", written))
158+
}
159+
131160
func (s *ControlFileSuite) TestReadWriteInstallerStanza(c *C) {
132161
s.reader = bytes.NewBufferString(installerFile)
133162
r := NewControlFileReader(s.reader, false, true)

0 commit comments

Comments
 (0)