From dcdf82e94313c16888e4011ebe444fac0af15c5b Mon Sep 17 00:00:00 2001 From: Paul Holzinger Date: Mon, 3 Feb 2025 19:23:08 +0100 Subject: [PATCH] test/e2e: improve write/removeConf() First use proper ginkgo error handling to ensure errors are actually reported and fail the test. Mark it as helper function to have better stack traces. Then use a atomic write function to prevent issues with partial written files. I think this is causing CI flakes[1]. Lastly fix the file permissions, do not make it world writable and do not set the executable bit on the file. [1] https://api.cirrus-ci.com/v1/artifact/task/5985244932734976/html/int-podman-fedora-41-root-host-sqlite.log.html#t--Podman-network-podman-network-ID-test--1 Signed-off-by: Paul Holzinger --- test/e2e/common_test.go | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/test/e2e/common_test.go b/test/e2e/common_test.go index 898efbc889..af9d523be7 100644 --- a/test/e2e/common_test.go +++ b/test/e2e/common_test.go @@ -28,6 +28,7 @@ import ( "github.com/containers/podman/v5/pkg/inspect" . "github.com/containers/podman/v5/test/utils" "github.com/containers/podman/v5/utils" + "github.com/containers/storage/pkg/ioutils" "github.com/containers/storage/pkg/lockfile" "github.com/containers/storage/pkg/reexec" "github.com/containers/storage/pkg/stringid" @@ -1187,19 +1188,21 @@ func (p *PodmanTestIntegration) makeOptions(args []string, options PodmanExecOpt } func writeConf(conf []byte, confPath string) { - if _, err := os.Stat(filepath.Dir(confPath)); os.IsNotExist(err) { - if err := os.MkdirAll(filepath.Dir(confPath), 0o777); err != nil { - GinkgoWriter.Println(err) - } - } - if err := os.WriteFile(confPath, conf, 0o777); err != nil { - GinkgoWriter.Println(err) - } + GinkgoHelper() + err := os.MkdirAll(filepath.Dir(confPath), 0o755) + Expect(err).ToNot(HaveOccurred()) + + err = ioutils.AtomicWriteFile(confPath, conf, 0o644) + Expect(err).ToNot(HaveOccurred()) } func removeConf(confPath string) { - if err := os.Remove(confPath); err != nil { - GinkgoWriter.Println(err) + GinkgoHelper() + err := os.Remove(confPath) + // Network remove test will remove the config and then this can fail. + // If the config does not exists no reason to hard error here. + if !errors.Is(err, os.ErrNotExist) { + Expect(err).ToNot(HaveOccurred()) } }