#!/usr/bin/env bats # # Copyright © 2021 – 2022 Red Hat, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # load 'libs/bats-support/load' load 'libs/bats-assert/load' load 'libs/helpers' setup() { _setup_environment cleanup_all } teardown() { cleanup_all } @test "rmi: '--all' without any images" { local num_of_images num_of_images="$(list_images)" assert_equal "$num_of_images" 0 run --keep-empty-lines --separate-stderr "$TOOLBOX" rmi --all assert_success assert_output "" output="$stderr" assert_output "" if check_bats_version 1.7.0; then assert [ ${#lines[@]} -eq 0 ] assert [ ${#stderr_lines[@]} -eq 0 ] fi num_of_images="$(list_images)" assert_equal "$num_of_images" 0 } @test "rmi: Remove all images with the default image present" { num_of_images=$(list_images) assert_equal "$num_of_images" 0 pull_default_image run --keep-empty-lines $TOOLBOX rmi --all assert_success assert_output "" new_num_of_images=$(list_images) assert_equal "$new_num_of_images" "$num_of_images" } @test "rmi: An image by name" { local num_of_images num_of_images="$(list_images)" assert_equal "$num_of_images" 0 local default_image default_image="$(get_default_image)" pull_default_image num_of_images="$(list_images)" assert_equal "$num_of_images" 1 run --keep-empty-lines --separate-stderr "$TOOLBOX" rmi "$default_image" assert_success assert_output "" output="$stderr" assert_output "" if check_bats_version 1.7.0; then assert [ ${#lines[@]} -eq 0 ] assert [ ${#stderr_lines[@]} -eq 0 ] fi num_of_images="$(list_images)" assert_equal "$num_of_images" 0 } @test "rmi: '--all' with an image without a name" { local num_of_images num_of_images="$(list_images)" assert_equal "$num_of_images" 0 build_image_without_name >/dev/null num_of_images="$(list_images)" assert_equal "$num_of_images" 1 run --keep-empty-lines --separate-stderr "$TOOLBOX" rmi --all assert_success assert_output "" output="$stderr" assert_output "" if check_bats_version 1.7.0; then assert [ ${#lines[@]} -eq 0 ] assert [ ${#stderr_lines[@]} -eq 0 ] fi num_of_images="$(list_images)" assert_equal "$num_of_images" 0 } @test "rmi: An image without a name" { local num_of_images num_of_images="$(list_images)" assert_equal "$num_of_images" 0 image="$(build_image_without_name)" num_of_images="$(list_images)" assert_equal "$num_of_images" 1 run --keep-empty-lines --separate-stderr "$TOOLBOX" rmi "$image" assert_success assert_output "" output="$stderr" assert_output "" if check_bats_version 1.7.0; then assert [ ${#lines[@]} -eq 0 ] assert [ ${#stderr_lines[@]} -eq 0 ] fi num_of_images="$(list_images)" assert_equal "$num_of_images" 0 } @test "rmi: An image and its copy by name, separately" { local num_of_images num_of_images="$(list_images)" assert_equal "$num_of_images" 0 local default_image default_image="$(get_default_image)" pull_default_image_and_copy num_of_images="$(list_images)" assert_equal "$num_of_images" 2 run --keep-empty-lines --separate-stderr "$TOOLBOX" rmi "$default_image" assert_success assert_output "" output="$stderr" assert_output "" if check_bats_version 1.7.0; then assert [ ${#lines[@]} -eq 0 ] assert [ ${#stderr_lines[@]} -eq 0 ] fi run --keep-empty-lines --separate-stderr "$TOOLBOX" rmi "$default_image-copy" assert_success assert_output "" output="$stderr" assert_output "" if check_bats_version 1.7.0; then assert [ ${#lines[@]} -eq 0 ] assert [ ${#stderr_lines[@]} -eq 0 ] fi num_of_images="$(list_images)" assert_equal "$num_of_images" 0 } @test "rmi: An image and its copy by name, separately (reverse order)" { local num_of_images num_of_images="$(list_images)" assert_equal "$num_of_images" 0 local default_image default_image="$(get_default_image)" pull_default_image_and_copy num_of_images="$(list_images)" assert_equal "$num_of_images" 2 run --keep-empty-lines --separate-stderr "$TOOLBOX" rmi "$default_image-copy" assert_success assert_output "" output="$stderr" assert_output "" if check_bats_version 1.7.0; then assert [ ${#lines[@]} -eq 0 ] assert [ ${#stderr_lines[@]} -eq 0 ] fi run --keep-empty-lines --separate-stderr "$TOOLBOX" rmi "$default_image" assert_success assert_output "" output="$stderr" assert_output "" if check_bats_version 1.7.0; then assert [ ${#lines[@]} -eq 0 ] assert [ ${#stderr_lines[@]} -eq 0 ] fi num_of_images="$(list_images)" assert_equal "$num_of_images" 0 } @test "rmi: An image and its copy by name, together" { local num_of_images num_of_images="$(list_images)" assert_equal "$num_of_images" 0 local default_image default_image="$(get_default_image)" pull_default_image_and_copy num_of_images="$(list_images)" assert_equal "$num_of_images" 2 run --keep-empty-lines --separate-stderr "$TOOLBOX" rmi "$default_image" "$default_image-copy" assert_success assert_output "" output="$stderr" assert_output "" if check_bats_version 1.7.0; then assert [ ${#lines[@]} -eq 0 ] assert [ ${#stderr_lines[@]} -eq 0 ] fi num_of_images="$(list_images)" assert_equal "$num_of_images" 0 } @test "rmi: An image and its copy by name, together (reverse order)" { local num_of_images num_of_images="$(list_images)" assert_equal "$num_of_images" 0 local default_image default_image="$(get_default_image)" pull_default_image_and_copy num_of_images="$(list_images)" assert_equal "$num_of_images" 2 run --keep-empty-lines --separate-stderr "$TOOLBOX" rmi "$default_image-copy" "$default_image" assert_success assert_output "" output="$stderr" assert_output "" if check_bats_version 1.7.0; then assert [ ${#lines[@]} -eq 0 ] assert [ ${#stderr_lines[@]} -eq 0 ] fi num_of_images="$(list_images)" assert_equal "$num_of_images" 0 } @test "rmi: Try to remove all images with a container present and running" { skip "Bug: Fail in 'toolbox rmi' does not return non-zero value" num_of_images=$(list_images) assert_equal "$num_of_images" 0 create_container foo start_container foo run --keep-empty-lines --separate-stderr $TOOLBOX rmi --all assert_failure lines=("${stderr_lines[@]}") assert_line --index 0 --regexp "Error: image .* has dependent children" new_num_of_images=$(list_images) assert_equal "$new_num_of_images" "$num_of_images" } @test "rmi: Force remove all images with a container present and running" { num_of_images=$(list_images) assert_equal "$num_of_images" 0 create_container foo start_container foo run --keep-empty-lines $TOOLBOX rmi --all --force assert_success assert_output "" new_num_of_images=$(list_images) assert_equal "$new_num_of_images" "$num_of_images" }