github.com/moby/docker@v26.1.3+incompatible/integration/image/prune_test.go (about) 1 package image 2 3 import ( 4 "strings" 5 "testing" 6 7 "github.com/docker/docker/api/types/filters" 8 "github.com/docker/docker/integration/internal/container" 9 "github.com/docker/docker/internal/testutils/specialimage" 10 "github.com/docker/docker/testutil/daemon" 11 "gotest.tools/v3/assert" 12 "gotest.tools/v3/skip" 13 ) 14 15 // Regression test for: https://github.com/moby/moby/issues/45732 16 func TestPruneDontDeleteUsedDangling(t *testing.T) { 17 skip.If(t, testEnv.DaemonInfo.OSType == "windows", "cannot start multiple daemons on windows") 18 skip.If(t, testEnv.IsRemoteDaemon, "cannot run daemon when remote daemon") 19 20 ctx := setupTest(t) 21 22 d := daemon.New(t) 23 d.Start(t) 24 defer d.Stop(t) 25 26 client := d.NewClientT(t) 27 defer client.Close() 28 29 danglingID := specialimage.Load(ctx, t, client, specialimage.Dangling) 30 31 _, _, err := client.ImageInspectWithRaw(ctx, danglingID) 32 assert.NilError(t, err, "Test dangling image doesn't exist") 33 34 container.Create(ctx, t, client, 35 container.WithImage(danglingID), 36 container.WithCmd("sleep", "60")) 37 38 pruned, err := client.ImagesPrune(ctx, filters.NewArgs(filters.Arg("dangling", "true"))) 39 assert.NilError(t, err) 40 41 for _, deleted := range pruned.ImagesDeleted { 42 if strings.Contains(deleted.Deleted, danglingID) || strings.Contains(deleted.Untagged, danglingID) { 43 t.Errorf("used dangling image %s shouldn't be deleted", danglingID) 44 } 45 } 46 47 _, _, err = client.ImageInspectWithRaw(ctx, danglingID) 48 assert.NilError(t, err, "Test dangling image should still exist") 49 }