diff options
author | Daniel J Walsh <dwalsh@redhat.com> | 2022-01-06 10:42:34 -0500 |
---|---|---|
committer | Daniel J Walsh <dwalsh@redhat.com> | 2022-01-06 10:42:34 -0500 |
commit | 13f3fd2555b1f02af4c183ef51d1707af1198eb9 (patch) | |
tree | 385b25f04df21cf41537227494fd2fb166eca62b /test/system | |
parent | c0b3df805999551db1da8ec2866457c555e627c7 (diff) | |
download | podman-13f3fd2555b1f02af4c183ef51d1707af1198eb9.tar.gz podman-13f3fd2555b1f02af4c183ef51d1707af1198eb9.tar.bz2 podman-13f3fd2555b1f02af4c183ef51d1707af1198eb9.zip |
Set volume NeedsCopyUp to false iff data was copied up
Currently Docker copies up the first volume on a mountpoint with
data.
Fixes: https://github.com/containers/podman/issues/12714
Also added NeedsCopyUP, NeedsChown and MountCount to the podman volume
inspect code.
Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
Diffstat (limited to 'test/system')
-rw-r--r-- | test/system/160-volumes.bats | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/test/system/160-volumes.bats b/test/system/160-volumes.bats index 1271b7c0b..b6030ba3c 100644 --- a/test/system/160-volumes.bats +++ b/test/system/160-volumes.bats @@ -345,4 +345,44 @@ EOF is "$output" "tmpfs" "volume should be tmpfs" } +# Named volumes copyup +@test "podman volume create copyup" { + myvolume=myvol$(random_string) + mylabel=$(random_string) + + # Create a named volume + run_podman volume create $myvolume + is "$output" "$myvolume" "output from volume create" + + # Confirm that it shows up in 'volume ls', and confirm values + run_podman volume ls --format json + tests=" +Name | $myvolume +Driver | local +NeedsCopyUp | true +NeedsChown | true +" + parse_table "$tests" | while read field expect; do + actual=$(jq -r ".[0].$field" <<<"$output") + is "$actual" "$expect" "volume ls .$field" + done + + run_podman run --rm --volume $myvolume:/vol $IMAGE true + run_podman volume inspect --format '{{ .NeedsCopyUp }}' $myvolume + is "${output}" "true" "If content in dest '/vol' empty NeedsCopyUP should still be true" + run_podman volume inspect --format '{{ .NeedsChown }}' $myvolume + is "${output}" "false" "After first use within a container NeedsChown should still be false" + + run_podman run --rm --volume $myvolume:/etc $IMAGE ls /etc/passwd + run_podman volume inspect --format '{{ .NeedsCopyUp }}' $myvolume + is "${output}" "false" "If content in dest '/etc' non-empty NeedsCopyUP should still have happend and be false" + + run_podman volume inspect --format '{{.Mountpoint}}' $myvolume + mountpoint="$output" + test -e "$mountpoint/passwd" + + # Clean up + run_podman volume rm $myvolume +} + # vim: filetype=sh |