From f2eae0bde91b01f5501e64d2157c1e7770cb7196 Mon Sep 17 00:00:00 2001 From: Nalin Dahyabhai Date: Wed, 31 Mar 2021 17:48:28 -0400 Subject: [PATCH] COPY: treat sources named "" as "*" If a source for COPY is "", treat it as though it were "*". Signed-off-by: Nalin Dahyabhai --- dockerclient/client.go | 3 +++ dockerclient/conformance_test.go | 10 ++++++++++ dockerclient/testdata/copyempty/.script | 2 ++ dockerclient/testdata/copyempty/Dockerfile | 2 ++ dockerclient/testdata/copyempty/Dockerfile2 | 2 ++ dockerclient/testdata/copyempty/script1 | 2 ++ dockerclient/testdata/copyempty/script2 | 2 ++ 7 files changed, 23 insertions(+) create mode 100644 dockerclient/testdata/copyempty/.script create mode 100644 dockerclient/testdata/copyempty/Dockerfile create mode 100644 dockerclient/testdata/copyempty/Dockerfile2 create mode 100644 dockerclient/testdata/copyempty/script1 create mode 100644 dockerclient/testdata/copyempty/script2 diff --git a/dockerclient/client.go b/dockerclient/client.go index 0173b365b..803ec7148 100644 --- a/dockerclient/client.go +++ b/dockerclient/client.go @@ -936,6 +936,9 @@ func (e *ClientExecutor) CopyContainer(container *docker.Container, excludes []s } // TODO: reuse source for _, src := range c.Src { + if src == "" { + src = "*" + } klog.V(4).Infof("Archiving %s download=%t fromFS=%t from=%s", src, c.Download, c.FromFS, c.From) var r io.Reader var closer io.Closer diff --git a/dockerclient/conformance_test.go b/dockerclient/conformance_test.go index f7d890630..e20262d73 100644 --- a/dockerclient/conformance_test.go +++ b/dockerclient/conformance_test.go @@ -269,6 +269,16 @@ func TestConformanceInternal(t *testing.T) { Name: "copy chown", ContextDir: "testdata/copychown", }, + { + Name: "copy empty 1", + ContextDir: "testdata/copyempty", + Dockerfile: "Dockerfile", + }, + { + Name: "copy empty 2", + ContextDir: "testdata/copyempty", + Dockerfile: "Dockerfile2", + }, { Name: "copy dir", ContextDir: "testdata/copydir", diff --git a/dockerclient/testdata/copyempty/.script b/dockerclient/testdata/copyempty/.script new file mode 100644 index 000000000..f52d05771 --- /dev/null +++ b/dockerclient/testdata/copyempty/.script @@ -0,0 +1,2 @@ +#!/bin/bash +: \ No newline at end of file diff --git a/dockerclient/testdata/copyempty/Dockerfile b/dockerclient/testdata/copyempty/Dockerfile new file mode 100644 index 000000000..8b8c87ede --- /dev/null +++ b/dockerclient/testdata/copyempty/Dockerfile @@ -0,0 +1,2 @@ +FROM centos:7 +COPY "" /usr/local/tmp/ diff --git a/dockerclient/testdata/copyempty/Dockerfile2 b/dockerclient/testdata/copyempty/Dockerfile2 new file mode 100644 index 000000000..b99b8adc3 --- /dev/null +++ b/dockerclient/testdata/copyempty/Dockerfile2 @@ -0,0 +1,2 @@ +FROM centos:7 +COPY script1 "" script2 /usr/local/tmp/ diff --git a/dockerclient/testdata/copyempty/script1 b/dockerclient/testdata/copyempty/script1 new file mode 100644 index 000000000..c3c3f3f53 --- /dev/null +++ b/dockerclient/testdata/copyempty/script1 @@ -0,0 +1,2 @@ +#!/bin/bash +exit 0 \ No newline at end of file diff --git a/dockerclient/testdata/copyempty/script2 b/dockerclient/testdata/copyempty/script2 new file mode 100644 index 000000000..80f336a03 --- /dev/null +++ b/dockerclient/testdata/copyempty/script2 @@ -0,0 +1,2 @@ +#!/bin/bash +exit 1 \ No newline at end of file