From 75b4a1b2aa6c0440cfac61fcd38d70d57a9b1472 Mon Sep 17 00:00:00 2001 From: Ahmed Moalla Date: Thu, 9 Jan 2025 18:46:00 +0100 Subject: [PATCH] add support to `;` for comments in unit files as per systemd documentation Signed-off-by: Ahmed Moalla --- pkg/systemd/parser/unitfile.go | 2 +- pkg/systemd/parser/unitfile_test.go | 27 +++++++++++++++++++ .../comment-with-continuation.container | 3 +++ 3 files changed, 31 insertions(+), 1 deletion(-) diff --git a/pkg/systemd/parser/unitfile.go b/pkg/systemd/parser/unitfile.go index 0fefdb138d..9d0cb0114b 100644 --- a/pkg/systemd/parser/unitfile.go +++ b/pkg/systemd/parser/unitfile.go @@ -204,7 +204,7 @@ func (f *UnitFile) Dup() *UnitFile { } func lineIsComment(line string) bool { - return len(line) == 0 || line[0] == '#' || line[0] == ':' + return len(line) == 0 || line[0] == '#' || line[0] == ';' } func lineIsGroup(line string) bool { diff --git a/pkg/systemd/parser/unitfile_test.go b/pkg/systemd/parser/unitfile_test.go index 72b5db65e2..708f12f56c 100644 --- a/pkg/systemd/parser/unitfile_test.go +++ b/pkg/systemd/parser/unitfile_test.go @@ -314,6 +314,33 @@ func TestUnitDropinPaths_Search(t *testing.T) { } } +func TestCommentsIgnored(t *testing.T) { + unitWithComments := `[Container] +# comment +Name=my-container +; another comment +` + f := NewUnitFile() + if e := f.Parse(unitWithComments); e != nil { + panic(e) + } + + groups := f.ListGroups() + assert.Len(t, groups, 1) + assert.Equal(t, "Container", groups[0]) + + comments := make([]string, 0, 2) + for _, line := range f.groups[0].lines { + if line.isComment { + comments = append(comments, line.value) + } + } + + assert.Len(t, comments, 2) + assert.Equal(t, "# comment", comments[0]) + assert.Equal(t, "; another comment", comments[1]) +} + func FuzzParser(f *testing.F) { for _, sample := range samples { f.Add([]byte(sample)) diff --git a/test/e2e/quadlet/comment-with-continuation.container b/test/e2e/quadlet/comment-with-continuation.container index 3782fab404..2d553735a4 100644 --- a/test/e2e/quadlet/comment-with-continuation.container +++ b/test/e2e/quadlet/comment-with-continuation.container @@ -11,11 +11,14 @@ After=network-online.target [Container] # Image=localhost/otherimagename:latest Image=localhost/imagename:latest +; Image=localhost/image:latest ContainerName=greatName +; ContainerName=otherName # HostName=my-hostname Label=io.containers.autoupdate=registry Environment=PUID=1000 PGID=100 SEED_RATIO=1.3 TZ=Europe/Prague Volume=./.config:/config Volume=./downloads:/downloads # -v /path/to/watch/folder:/watch \ +; -v /other/path/to/watch/folder:/watch \ PublishPort=9091:9091