From 2fb6cc2ceac680350b403e6173926331d7904722 Mon Sep 17 00:00:00 2001 From: baude Date: Thu, 29 Aug 2019 14:07:02 -0500 Subject: 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 --- test/endpoint/commit.go | 47 ++++++++++++++++++++++++++++++++++++++++++++ test/endpoint/endpoint.go | 5 +++++ test/endpoint/exists_test.go | 2 +- 3 files changed, 53 insertions(+), 1 deletion(-) create mode 100644 test/endpoint/commit.go (limited to 'test') 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 -- cgit v1.2.3-54-g00ecf