diff options
author | OpenShift Merge Robot <openshift-merge-robot@users.noreply.github.com> | 2019-08-29 14:13:09 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-08-29 14:13:09 -0700 |
commit | d110998744e816895b0a9d9bb90a02cd5d12df7b (patch) | |
tree | cbad3096c7e35c939a5f60de4238c673ad33ad80 | |
parent | ab5f52c0d2ce617f875ef69c9ae67381841a6514 (diff) | |
parent | 2fb6cc2ceac680350b403e6173926331d7904722 (diff) | |
download | podman-d110998744e816895b0a9d9bb90a02cd5d12df7b.tar.gz podman-d110998744e816895b0a9d9bb90a02cd5d12df7b.tar.bz2 podman-d110998744e816895b0a9d9bb90a02cd5d12df7b.zip |
Merge pull request #3907 from baude/commitcaps
dont panic when using varlink commit and uppercase image names
-rw-r--r-- | pkg/varlinkapi/images.go | 2 | ||||
-rw-r--r-- | test/endpoint/commit.go | 47 | ||||
-rw-r--r-- | test/endpoint/endpoint.go | 5 | ||||
-rw-r--r-- | test/endpoint/exists_test.go | 2 |
4 files changed, 54 insertions, 2 deletions
diff --git a/pkg/varlinkapi/images.go b/pkg/varlinkapi/images.go index c184155a9..0bdbec177 100644 --- a/pkg/varlinkapi/images.go +++ b/pkg/varlinkapi/images.go @@ -563,7 +563,6 @@ func (i *LibpodAPI) Commit(call iopodman.VarlinkCall, name, imageName string, ch } c := make(chan error) - defer close(c) go func() { newImage, err = ctr.Commit(getContext(), imageName, options) @@ -571,6 +570,7 @@ func (i *LibpodAPI) Commit(call iopodman.VarlinkCall, name, imageName string, ch c <- err } c <- nil + close(c) }() // reply is the func being sent to the output forwarder. in this case it is replying diff --git a/test/endpoint/commit.go b/test/endpoint/commit.go new file mode 100644 index 000000000..476ac6ca3 --- /dev/null +++ b/test/endpoint/commit.go @@ -0,0 +1,47 @@ +package endpoint + +import ( + "encoding/json" + "os" + + . "github.com/containers/libpod/test/utils" + . "github.com/onsi/ginkgo" + . "github.com/onsi/gomega" +) + +var _ = Describe("Podman commit", func() { + var ( + tempdir string + err error + endpointTest *EndpointTestIntegration + ) + + BeforeEach(func() { + tempdir, err = CreateTempDirInTempDir() + if err != nil { + os.Exit(1) + } + endpointTest = Setup(tempdir) + endpointTest.StartVarlinkWithCache() + }) + + AfterEach(func() { + endpointTest.Cleanup() + + }) + + It("ensure commit with uppercase image name does not panic", func() { + body := make(map[string]string) + body["image_name"] = "FOO" + body["format"] = "oci" + body["name"] = "top" + b, err := json.Marshal(body) + Expect(err).To(BeNil()) + // run the container to be committed + _ = endpointTest.startTopContainer("top") + result := endpointTest.Varlink("Commit", string(b), false) + // This indicates an error occured + Expect(len(result.StdErrToString())).To(BeNumerically(">", 0)) + }) + +}) diff --git a/test/endpoint/endpoint.go b/test/endpoint/endpoint.go index 4f9e6055e..78aa957ab 100644 --- a/test/endpoint/endpoint.go +++ b/test/endpoint/endpoint.go @@ -189,6 +189,11 @@ func (p *EndpointTestIntegration) Varlink(endpoint, message string, more bool) * return &EndpointSession{session} } +func (s *EndpointSession) StdErrToString() string { + fields := strings.Fields(fmt.Sprintf("%s", s.Err.Contents())) + return strings.Join(fields, " ") +} + func (s *EndpointSession) OutputToString() string { fields := strings.Fields(fmt.Sprintf("%s", s.Out.Contents())) return strings.Join(fields, " ") diff --git a/test/endpoint/exists_test.go b/test/endpoint/exists_test.go index c8ab9e0f2..17e252a65 100644 --- a/test/endpoint/exists_test.go +++ b/test/endpoint/exists_test.go @@ -8,7 +8,7 @@ import ( . "github.com/onsi/gomega" ) -var _ = Describe("Podman pull", func() { +var _ = Describe("Podman exists", func() { var ( tempdir string err error |