summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorValentin Rothberg <rothberg@redhat.com>2021-10-27 17:30:37 +0200
committerValentin Rothberg <rothberg@redhat.com>2021-10-28 16:37:33 +0200
commitc5f0a5d788dafd94ea609b82d94cd089b30a7073 (patch)
tree0a4c36dcf48028fc2ee45125a403c7b3dcab0d26 /test
parent979b6312286b4bd993d7be0413e1e95c4a0bad56 (diff)
downloadpodman-c5f0a5d788dafd94ea609b82d94cd089b30a7073.tar.gz
podman-c5f0a5d788dafd94ea609b82d94cd089b30a7073.tar.bz2
podman-c5f0a5d788dafd94ea609b82d94cd089b30a7073.zip
volumes: be more tolerant and fix infinite loop
Make Podman more tolerant when parsing image volumes during container creation and further fix an infinite loop when checking them. Consider `VOLUME ['/etc/foo', '/etc/bar']` in a Containerfile. While it looks correct to the human eye, the single quotes are wrong and yield the two volumes to be `[/etc/foo,` and `/etc/bar]` in Podman and Docker. When running the container, it'll create a directory `bar]` in `/etc` and a directory `[` in `/` with two subdirectories `etc/foo,`. This behavior is surprising to me but how Docker behaves. We may improve on that in the future. Note that the correct way to syntax for volumes in a Containerfile is `VOLUME /A /B /C` or `VOLUME ["/A", "/B", "/C"]`; single quotes are not supported. This change restores this behavior without breaking container creation or ending up in an infinite loop. BZ: https://bugzilla.redhat.com/show_bug.cgi?id=2014149 Signed-off-by: Valentin Rothberg <rothberg@redhat.com>
Diffstat (limited to 'test')
-rw-r--r--test/system/070-build.bats9
1 files changed, 9 insertions, 0 deletions
diff --git a/test/system/070-build.bats b/test/system/070-build.bats
index d3dc14d81..1d24eef15 100644
--- a/test/system/070-build.bats
+++ b/test/system/070-build.bats
@@ -39,6 +39,7 @@ EOF
cat >$dockerfile <<EOF
FROM $IMAGE
RUN echo $rand_content > /$rand_filename
+VOLUME ['/etc/foo', '/etc/bar']
EOF
run_podman buildx build --load -t build_test --format=docker $tmpdir
@@ -47,6 +48,14 @@ EOF
run_podman run --rm build_test cat /$rand_filename
is "$output" "$rand_content" "reading generated file in image"
+ # Make sure the volumes are created at surprising yet Docker-compatible
+ # destinations (see bugzilla.redhat.com/show_bug.cgi?id=2014149).
+ run_podman run --rm build_test find /[ /etc/bar\] -print
+ is "$output" "/\[
+/\[/etc
+/\[/etc/foo,
+/etc/bar]" "weird VOLUME gets converted to directories with brackets and comma"
+
run_podman rmi -f build_test
}