diff options
author | Matthew Heon <matthew.heon@pm.me> | 2020-02-16 18:16:26 -0500 |
---|---|---|
committer | Matthew Heon <mheon@redhat.com> | 2020-02-17 16:28:36 -0500 |
commit | 40fa7e99317a32046fec2442b61dc524f63e52cd (patch) | |
tree | 22f3474ae97ce14adf2e7a8643759cbd5d3a0312 /test | |
parent | 92dbcb8841abae35658e5da1bf6eddee7669ea75 (diff) | |
download | podman-40fa7e99317a32046fec2442b61dc524f63e52cd.tar.gz podman-40fa7e99317a32046fec2442b61dc524f63e52cd.tar.bz2 podman-40fa7e99317a32046fec2442b61dc524f63e52cd.zip |
Use cleaned destination path for indexing image volumes
We use filepath.Clean() to remove trailing slashes to ensure that
when we supercede image mounts with mounts from --volume and
--mount, paths are consistent when we compare. Unfortunately,
while we used the cleaned path for the destination in the mount,
it was accidentally not used to index the maps that we use to
identify what to supercede, so our comparisons might be thrown
off by trailing slashes and similar.
Fixes #5219
Signed-off-by: Matthew Heon <matthew.heon@pm.me>
Diffstat (limited to 'test')
-rw-r--r-- | test/e2e/run_volume_test.go | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/test/e2e/run_volume_test.go b/test/e2e/run_volume_test.go index 46c27dc2e..e31338dbc 100644 --- a/test/e2e/run_volume_test.go +++ b/test/e2e/run_volume_test.go @@ -15,6 +15,10 @@ import ( "github.com/onsi/gomega/gexec" ) +var VolumeTrailingSlashDockerfile = ` +FROM alpine:latest +VOLUME /test/` + var _ = Describe("Podman run with volumes", func() { var ( tempdir string @@ -421,4 +425,20 @@ var _ = Describe("Podman run with volumes", func() { Expect(len(outputArr)).To(Equal(1)) Expect(strings.Contains(outputArr[0], fileName)).To(BeTrue()) }) + + It("Podman mount over image volume with trailing /", func() { + image := "podman-volume-test:trailing" + podmanTest.BuildImage(VolumeTrailingSlashDockerfile, image, "false") + + ctrName := "testCtr" + create := podmanTest.Podman([]string{"create", "-v", "/tmp:/test", "--name", ctrName, image, "ls"}) + create.WaitWithDefaultTimeout() + Expect(create.ExitCode()).To(Equal(0)) + + data := podmanTest.InspectContainer(ctrName) + Expect(len(data)).To(Equal(1)) + Expect(len(data[0].Mounts)).To(Equal(1)) + Expect(data[0].Mounts[0].Source).To(Equal("/tmp")) + Expect(data[0].Mounts[0].Destination).To(Equal("/test")) + }) }) |