mirror of
https://github.com/containers/podman.git
synced 2025-08-01 04:42:20 +08:00
quadlet: Add tests for templates
Signed-off-by: Alexander Larsson <alexl@redhat.com>
This commit is contained in:
test/e2e
quadlet
quadlet_test.go
11
test/e2e/quadlet/template@.container
Normal file
11
test/e2e/quadlet/template@.container
Normal file
@ -0,0 +1,11 @@
|
||||
## assert-podman-final-args localhost/imagename
|
||||
## assert-podman-args "--name=systemd-%P_%I"
|
||||
## assert-symlink want.service.wants/template@default.service ../template@.service
|
||||
## assert-podman-args --env "FOO=bar"
|
||||
|
||||
[Container]
|
||||
Image=localhost/imagename
|
||||
|
||||
[Install]
|
||||
WantedBy=want.service
|
||||
DefaultInstance=default
|
2
test/e2e/quadlet/template@.container.d/10-env.conf
Normal file
2
test/e2e/quadlet/template@.container.d/10-env.conf
Normal file
@ -0,0 +1,2 @@
|
||||
[Container]
|
||||
Environment=FOO=bar
|
11
test/e2e/quadlet/template@instance.container
Normal file
11
test/e2e/quadlet/template@instance.container
Normal file
@ -0,0 +1,11 @@
|
||||
## assert-podman-final-args localhost/changed-image
|
||||
## assert-podman-args "--name=systemd-%P_%I"
|
||||
## assert-symlink want.service.wants/template@instance.service ../template@instance.service
|
||||
## assert-podman-args --env "FOO=bar"
|
||||
|
||||
[Container]
|
||||
# Will be changed by /template@instance.container.d/10-image.conf
|
||||
Image=localhost/imagename
|
||||
|
||||
[Install]
|
||||
WantedBy=want.service
|
@ -0,0 +1,2 @@
|
||||
[Container]
|
||||
Image=localhost/changed-image
|
@ -25,6 +25,17 @@ type quadletTestcase struct {
|
||||
checks [][]string
|
||||
}
|
||||
|
||||
// Converts "foo@bar.container" to "foo@.container"
|
||||
func getGenericTemplateFile(fileName string) (bool, string) {
|
||||
extension := filepath.Ext(fileName)
|
||||
base := strings.TrimSuffix(fileName, extension)
|
||||
parts := strings.SplitN(base, "@", 2)
|
||||
if len(parts) == 2 && len(parts[1]) > 0 {
|
||||
return true, parts[0] + "@" + extension
|
||||
}
|
||||
return false, ""
|
||||
}
|
||||
|
||||
func loadQuadletTestcase(path string) *quadletTestcase {
|
||||
data, err := os.ReadFile(path)
|
||||
Expect(err).ToNot(HaveOccurred())
|
||||
@ -724,13 +735,19 @@ BOGUS=foo
|
||||
Expect(err).ToNot(HaveOccurred())
|
||||
|
||||
// Also copy any extra snippets
|
||||
dotdDir := filepath.Join("quadlet", fileName+".d")
|
||||
if s, err := os.Stat(dotdDir); err == nil && s.IsDir() {
|
||||
dotdDirDest := filepath.Join(quadletDir, fileName+".d")
|
||||
err = os.Mkdir(dotdDirDest, os.ModePerm)
|
||||
Expect(err).ToNot(HaveOccurred())
|
||||
err = CopyDirectory(dotdDir, dotdDirDest)
|
||||
Expect(err).ToNot(HaveOccurred())
|
||||
snippetdirs := []string{fileName + ".d"}
|
||||
if ok, genericFileName := getGenericTemplateFile(fileName); ok {
|
||||
snippetdirs = append(snippetdirs, genericFileName+".d")
|
||||
}
|
||||
for _, snippetdir := range snippetdirs {
|
||||
dotdDir := filepath.Join("quadlet", snippetdir)
|
||||
if s, err := os.Stat(dotdDir); err == nil && s.IsDir() {
|
||||
dotdDirDest := filepath.Join(quadletDir, snippetdir)
|
||||
err = os.Mkdir(dotdDirDest, os.ModePerm)
|
||||
Expect(err).ToNot(HaveOccurred())
|
||||
err = CopyDirectory(dotdDir, dotdDirDest)
|
||||
Expect(err).ToNot(HaveOccurred())
|
||||
}
|
||||
}
|
||||
|
||||
// Run quadlet to convert the file
|
||||
@ -825,6 +842,8 @@ BOGUS=foo
|
||||
Entry("Container - Containers Conf Modules", "containersconfmodule.container", 0, ""),
|
||||
Entry("merged.container", "merged.container", 0, ""),
|
||||
Entry("merged-override.container", "merged-override.container", 0, ""),
|
||||
Entry("template@.container", "template@.container", 0, ""),
|
||||
Entry("template@instance.container", "template@instance.container", 0, ""),
|
||||
|
||||
Entry("basic.volume", "basic.volume", 0, ""),
|
||||
Entry("device-copy.volume", "device-copy.volume", 0, ""),
|
||||
|
Reference in New Issue
Block a user