diff --git a/daemon/remove.go b/daemon/remove.go index 88e168ecaf28994180622dccb76dcbd1a4d8f79f..420c2aff23c67c454dc3aa110f0d8cdaa36bff0d 100644 --- a/daemon/remove.go +++ b/daemon/remove.go @@ -36,6 +36,7 @@ func (b *Backend) Remove(req *pb.RemoveRequest, stream pb.Control_RemoveServer) var ( rmImageIDs []string err error + rmFailed bool ) s := b.daemon.localStore @@ -50,6 +51,7 @@ func (b *Backend) Remove(req *pb.RemoveRequest, stream pb.Control_RemoveServer) for _, imageID := range rmImageIDs { _, img, err := image.FindImage(s, imageID) if err != nil { + rmFailed = true errMsg := fmt.Sprintf("Find local image %s error: %v", imageID, err.Error()) logrus.Error(errMsg) if err = stream.Send(&pb.RemoveResponse{LayerMessage: errMsg}); err != nil { @@ -62,6 +64,7 @@ func (b *Backend) Remove(req *pb.RemoveRequest, stream pb.Control_RemoveServer) if len(img.Names) > 1 { removed, uerr := untagImage(imageID, s, img) if uerr != nil { + rmFailed = true errMsg := fmt.Sprintf("Untag image %s error: %v", imageID, uerr.Error()) logrus.Error(errMsg) if err = stream.Send(&pb.RemoveResponse{LayerMessage: errMsg}); err != nil { @@ -83,6 +86,7 @@ func (b *Backend) Remove(req *pb.RemoveRequest, stream pb.Control_RemoveServer) layers, err := s.DeleteImage(img.ID, true) if err != nil { // if delete failed, print out message and continue deleting the rest images + rmFailed = true errMsg := fmt.Sprintf("Remove image %s failed: %v", imageID, err.Error()) logrus.Error(errMsg) if err = stream.Send(&pb.RemoveResponse{LayerMessage: errMsg}); err != nil { @@ -107,6 +111,9 @@ func (b *Backend) Remove(req *pb.RemoveRequest, stream pb.Control_RemoveServer) } } + if rmFailed { + return errors.New("remove one or more images failed") + } return nil } diff --git a/tests/src/fuzz-test-builder.sh b/tests/src/fuzz_test_builder.sh similarity index 100% rename from tests/src/fuzz-test-builder.sh rename to tests/src/fuzz_test_builder.sh diff --git a/tests/src/fuzz-test-dockerignore.sh b/tests/src/fuzz_test_dockerignore.sh similarity index 100% rename from tests/src/fuzz-test-dockerignore.sh rename to tests/src/fuzz_test_dockerignore.sh diff --git a/tests/src/fuzz-test-parser.sh b/tests/src/fuzz_test_parser.sh similarity index 100% rename from tests/src/fuzz-test-parser.sh rename to tests/src/fuzz_test_parser.sh diff --git a/tests/src/fuzz-test-template.sh b/tests/src/fuzz_test_template.sh similarity index 100% rename from tests/src/fuzz-test-template.sh rename to tests/src/fuzz_test_template.sh diff --git a/tests/src/test-add-chown-basic.sh b/tests/src/test_add_chown_basic.sh similarity index 100% rename from tests/src/test-add-chown-basic.sh rename to tests/src/test_add_chown_basic.sh diff --git a/tests/src/test-build-from-scratch.sh b/tests/src/test_build_from_scratch.sh similarity index 100% rename from tests/src/test-build-from-scratch.sh rename to tests/src/test_build_from_scratch.sh diff --git a/tests/src/test_ctr_img_rm.sh b/tests/src/test_ctr_img_rm.sh new file mode 100755 index 0000000000000000000000000000000000000000..480e0747c2a96010fa3d8a47398f9be5e96268c1 --- /dev/null +++ b/tests/src/test_ctr_img_rm.sh @@ -0,0 +1,24 @@ +#!/bin/bash + +# Copyright (c) Huawei Technologies Co., Ltd. 2020. All rights reserved. +# isula-build licensed under the Mulan PSL v2. +# You can use this software according to the terms and conditions of the Mulan PSL v2. +# You may obtain a copy of Mulan PSL v2 at: +# http://license.coscl.org.cn/MulanPSL2 +# THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR +# PURPOSE. +# See the Mulan PSL v2 for more details. +# Author: Jingxiao Lu +# Create: 2020-09-07 +# Description: dockerfile test multi-stage-builds + +nonexistent_image="foo:bar" +# rm an nonexistent image +isula-build ctr-img rm ${nonexistent_image} > /dev/null 2>&1 +if [ $? -eq 0 ]; then + echo "FAIL" + exit 1 +fi + +echo "PASS" diff --git a/tests/src/test-multi-files-env.sh b/tests/src/test_multi_files_env.sh similarity index 100% rename from tests/src/test-multi-files-env.sh rename to tests/src/test_multi_files_env.sh diff --git a/tests/src/test-multi-stage-builds.sh b/tests/src/test_multi_stage_builds.sh similarity index 100% rename from tests/src/test-multi-stage-builds.sh rename to tests/src/test_multi_stage_builds.sh