Skip to content

Commit cd5982e

Browse files
committed
quadlet: Add tests for templates
Signed-off-by: Alexander Larsson <[email protected]>
1 parent dc94a10 commit cd5982e

File tree

5 files changed

+52
-7
lines changed

5 files changed

+52
-7
lines changed

test/e2e/quadlet/[email protected]

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
## assert-podman-final-args localhost/imagename
2+
## assert-podman-args "--name=systemd-%P_%I"
3+
## assert-symlink want.service.wants/[email protected] ../[email protected]
4+
## assert-podman-args --env "FOO=bar"
5+
6+
[Container]
7+
Image=localhost/imagename
8+
9+
[Install]
10+
WantedBy=want.service
11+
DefaultInstance=default
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
[Container]
2+
Environment=FOO=bar

test/e2e/quadlet/[email protected]

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
## assert-podman-final-args localhost/changed-image
2+
## assert-podman-args "--name=systemd-%P_%I"
3+
## assert-symlink want.service.wants/[email protected] ../[email protected]
4+
## assert-podman-args --env "FOO=bar"
5+
6+
[Container]
7+
# Will be changed by /[email protected]/10-image.conf
8+
Image=localhost/imagename
9+
10+
[Install]
11+
WantedBy=want.service
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
[Container]
2+
Image=localhost/changed-image

test/e2e/quadlet_test.go

Lines changed: 26 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,17 @@ type quadletTestcase struct {
2525
checks [][]string
2626
}
2727

28+
29+
func getGenericTemplateFile(fileName string) (bool, string) {
30+
extension := filepath.Ext(fileName)
31+
base := strings.TrimSuffix(fileName, extension)
32+
parts := strings.SplitN(base, "@", 2)
33+
if len(parts) == 2 && len(parts[1]) > 0 {
34+
return true, parts[0] + "@" + extension
35+
}
36+
return false, ""
37+
}
38+
2839
func loadQuadletTestcase(path string) *quadletTestcase {
2940
data, err := os.ReadFile(path)
3041
Expect(err).ToNot(HaveOccurred())
@@ -724,13 +735,19 @@ BOGUS=foo
724735
Expect(err).ToNot(HaveOccurred())
725736

726737
// Also copy any extra snippets
727-
dotdDir := filepath.Join("quadlet", fileName+".d")
728-
if s, err := os.Stat(dotdDir); err == nil && s.IsDir() {
729-
dotdDirDest := filepath.Join(quadletDir, fileName+".d")
730-
err = os.Mkdir(dotdDirDest, os.ModePerm)
731-
Expect(err).ToNot(HaveOccurred())
732-
err = CopyDirectory(dotdDir, dotdDirDest)
733-
Expect(err).ToNot(HaveOccurred())
738+
snippetdirs := []string{fileName + ".d"}
739+
if ok, genericFileName := getGenericTemplateFile(fileName); ok {
740+
snippetdirs = append(snippetdirs, genericFileName+".d")
741+
}
742+
for _, snippetdir := range snippetdirs {
743+
dotdDir := filepath.Join("quadlet", snippetdir)
744+
if s, err := os.Stat(dotdDir); err == nil && s.IsDir() {
745+
dotdDirDest := filepath.Join(quadletDir, snippetdir)
746+
err = os.Mkdir(dotdDirDest, os.ModePerm)
747+
Expect(err).ToNot(HaveOccurred())
748+
err = CopyDirectory(dotdDir, dotdDirDest)
749+
Expect(err).ToNot(HaveOccurred())
750+
}
734751
}
735752

736753
// Run quadlet to convert the file
@@ -825,6 +842,8 @@ BOGUS=foo
825842
Entry("Container - Containers Conf Modules", "containersconfmodule.container", 0, ""),
826843
Entry("merged.container", "merged.container", 0, ""),
827844
Entry("merged-override.container", "merged-override.container", 0, ""),
845+
846+
828847

829848
Entry("basic.volume", "basic.volume", 0, ""),
830849
Entry("device-copy.volume", "device-copy.volume", 0, ""),

0 commit comments

Comments
 (0)