58 lines
1.8 KiB
Go
58 lines
1.8 KiB
Go
//go:build !remote
|
|
|
|
package libimage
|
|
|
|
import (
|
|
"context"
|
|
"os"
|
|
"testing"
|
|
|
|
"github.com/containers/common/pkg/config"
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func TestRemoveImages(t *testing.T) {
|
|
// Note: this will resolve pull from the GCR registry (see
|
|
// testdata/registries.conf).
|
|
busyboxLatest := "quay.io/libpod/busybox:latest"
|
|
|
|
runtime := testNewRuntime(t)
|
|
ctx := context.Background()
|
|
|
|
pullOptions := &PullOptions{}
|
|
pullOptions.Writer = os.Stdout
|
|
pulledImages, err := runtime.Pull(ctx, busyboxLatest, config.PullPolicyAlways, pullOptions)
|
|
require.NoError(t, err)
|
|
require.Len(t, pulledImages, 1)
|
|
|
|
err = pulledImages[0].Tag("foobar")
|
|
require.NoError(t, err)
|
|
|
|
// containers/podman/issues/10685 - force removal on image with
|
|
// multiple tags will only untag but not remove all tags including the
|
|
// image.
|
|
rmReports, rmErrors := runtime.RemoveImages(ctx, []string{"foobar"}, &RemoveImagesOptions{Force: true})
|
|
require.Nil(t, rmErrors)
|
|
require.Len(t, rmReports, 1)
|
|
require.Equal(t, pulledImages[0].ID(), rmReports[0].ID)
|
|
require.False(t, rmReports[0].Removed)
|
|
require.Equal(t, []string{"localhost/foobar:latest"}, rmReports[0].Untagged)
|
|
|
|
// "foobar" has already been removed, so we'd get an error
|
|
_, rmErrors = runtime.RemoveImages(ctx, []string{"foobar"}, nil)
|
|
require.NotNil(t, rmErrors)
|
|
// ... unless we set Ignore=true
|
|
rmReports, rmErrors = runtime.RemoveImages(ctx, []string{"foobar"}, &RemoveImagesOptions{Ignore: true})
|
|
require.Nil(t, rmErrors)
|
|
require.Len(t, rmReports, 0)
|
|
|
|
// The busybox image is still present even if foobar was force removed.
|
|
exists, err := runtime.Exists(busyboxLatest)
|
|
require.NoError(t, err)
|
|
require.True(t, exists)
|
|
|
|
rmReports, rmErrors = runtime.RemoveImages(ctx, []string{"foobar", "busybox"}, &RemoveImagesOptions{Ignore: true})
|
|
require.Nil(t, rmErrors)
|
|
require.Len(t, rmReports, 1)
|
|
}
|