Skip to content

Commit

Permalink
Quadlet - fix trailing whitespaces handling
Browse files Browse the repository at this point in the history
Remove all trailing white spaces from all lines before the line by line
processing
Add test
Exclude the unit file used for the test from whitespace check

Signed-off-by: Ygal Blum <[email protected]>
  • Loading branch information
ygalblum committed Jan 2, 2024
1 parent 7dc7cbf commit 70a53cb
Show file tree
Hide file tree
Showing 4 changed files with 22 additions and 1 deletion.
2 changes: 1 addition & 1 deletion .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ repos:
- id: end-of-file-fixer
exclude: test/buildah-bud/buildah-tests.diff
- id: trailing-whitespace
exclude: test/buildah-bud/buildah-tests.diff|test/e2e/quadlet/remap-keep-id2.container
exclude: test/buildah-bud/buildah-tests.diff|test/e2e/quadlet/remap-keep-id2.container|test/e2e/quadlet/line-continuation-whitespace.container
- id: mixed-line-ending
- id: check-byte-order-marker
- id: check-executables-have-shebangs
Expand Down
11 changes: 11 additions & 0 deletions pkg/systemd/parser/unitfile.go
Original file line number Diff line number Diff line change
Expand Up @@ -378,12 +378,23 @@ func nextLine(data string, afterPos int) (string, string) {
return data, ""
}

func trimSpacesFromLines(data string) string {
lines := strings.Split(data, "\n")
for i, line := range lines {
lines[i] = strings.TrimSpace(line)
}
return strings.Join(lines, "\n")
}

// Parse an already loaded unit file (in the form of a string)
func (f *UnitFile) Parse(data string) error {
p := &UnitFileParser{
file: f,
lineNr: 1,
}

data = trimSpacesFromLines(data)

for len(data) > 0 {
origdata := data
nLines := 1
Expand Down
9 changes: 9 additions & 0 deletions test/e2e/quadlet/line-continuation-whitespace.container
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
## assert-podman-final-args localhost/imagename "/some/binary file" "--arg1" "arg 2"
## assert-podman-args "--publish" "80:80"

[Container]
Image=localhost/imagename
# Keep whitespace at the end of the following line
Exec="/some/binary file" --arg1 \
"arg 2"
PublishPort=80:80
1 change: 1 addition & 0 deletions test/e2e/quadlet_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -776,6 +776,7 @@ BOGUS=foo
Entry("install.container", "install.container", 0, ""),
Entry("ip.container", "ip.container", 0, ""),
Entry("label.container", "label.container", 0, ""),
Entry("line-continuation-whitespace.container", "line-continuation-whitespace.container", 0, ""),
Entry("logdriver.container", "logdriver.container", 0, ""),
Entry("mask.container", "mask.container", 0, ""),
Entry("mount.container", "mount.container", 0, ""),
Expand Down

0 comments on commit 70a53cb

Please sign in to comment.