diff options
author | baude <bbaude@redhat.com> | 2019-08-29 14:07:02 -0500 |
---|---|---|
committer | baude <bbaude@redhat.com> | 2019-08-29 14:08:29 -0500 |
commit | 2fb6cc2ceac680350b403e6173926331d7904722 (patch) | |
tree | d6ae928885837db3570a4b0fe9422a5a34f093b3 /test/endpoint | |
parent | 4e209fc10a55560ca181207cf43dae0cb0ec9be0 (diff) | |
download | podman-2fb6cc2ceac680350b403e6173926331d7904722.tar.gz podman-2fb6cc2ceac680350b403e6173926331d7904722.tar.bz2 podman-2fb6cc2ceac680350b403e6173926331d7904722.zip |
dont panic when using varlink commit and uppercase image names
when using an upper case image name for container commit, we observed
panics due to a channel closing early.
Fixes: #3897
Signed-off-by: baude <bbaude@redhat.com>
Diffstat (limited to 'test/endpoint')
-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 |
3 files changed, 53 insertions, 1 deletions
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 |