From d422799595f0c8b47a7ee022db73124a48c835d6 Mon Sep 17 00:00:00 2001
From: Qi Wang <qiwan@redhat.com>
Date: Wed, 1 Apr 2020 12:44:29 -0400
Subject: test rootless_storage_path from strorage.conf

test rootless_storage_path from strorage.conf. If user configured rootless_storage_path in storage.conf, podman info should suggest the change.

Signed-off-by: Qi Wang <qiwan@redhat.com>
---
 test/e2e/info_test.go | 42 ++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 42 insertions(+)

(limited to 'test/e2e')

diff --git a/test/e2e/info_test.go b/test/e2e/info_test.go
index ff3615dcd..7cb299e0f 100644
--- a/test/e2e/info_test.go
+++ b/test/e2e/info_test.go
@@ -1,8 +1,13 @@
 package integration
 
 import (
+	"fmt"
+	"io/ioutil"
 	"os"
+	"os/exec"
+	"path/filepath"
 
+	"github.com/containers/libpod/pkg/rootless"
 	. "github.com/containers/libpod/test/utils"
 	. "github.com/onsi/ginkgo"
 	. "github.com/onsi/gomega"
@@ -50,4 +55,41 @@ var _ = Describe("Podman Info", func() {
 		Expect(session.ExitCode()).To(Equal(0))
 		Expect(session.OutputToString()).To(ContainSubstring("registry"))
 	})
+
+	It("podman info rootless storage path", func() {
+		if !rootless.IsRootless() {
+			Skip("test of rootless_storage_path is only meaningful as rootless")
+		}
+		SkipIfRemote()
+		oldHOME, hasHOME := os.LookupEnv("HOME")
+		defer func() {
+			if hasHOME {
+				os.Setenv("HOME", oldHOME)
+			} else {
+				os.Unsetenv("HOME")
+			}
+		}()
+		os.Setenv("HOME", podmanTest.TempDir)
+		configPath := filepath.Join(os.Getenv("HOME"), ".config", "containers", "storage.conf")
+		err := os.RemoveAll(filepath.Dir(configPath))
+		Expect(err).To(BeNil())
+
+		err = os.MkdirAll(filepath.Dir(configPath), os.ModePerm)
+		Expect(err).To(BeNil())
+
+		rootlessStoragePath := `"/tmp/$HOME/$USER/$UID"`
+		driver := `"overlay"`
+		storageOpt := `"/usr/bin/fuse-overlayfs"`
+		storageConf := []byte(fmt.Sprintf("[storage]\ndriver=%s\nrootless_storage_path=%s\n[storage.options]\nmount_program=%s", driver, rootlessStoragePath, storageOpt))
+		err = ioutil.WriteFile(configPath, storageConf, os.ModePerm)
+		Expect(err).To(BeNil())
+
+		expect := filepath.Join("/tmp", os.Getenv("HOME"), os.Getenv("USER"), os.Getenv("UID"))
+		podmanPath := podmanTest.PodmanTest.PodmanBinary
+		cmd := exec.Command(podmanPath, "info", "--format", "{{.Store.GraphRoot}}")
+		out, err := cmd.CombinedOutput()
+		fmt.Println(string(out))
+		Expect(err).To(BeNil())
+		Expect(string(out)).To(ContainSubstring(expect))
+	})
 })
-- 
cgit v1.2.3-54-g00ecf