github.com/coreos/docker@v1.13.1/daemon/delete_test.go (about) 1 package daemon 2 3 import ( 4 "fmt" 5 "io/ioutil" 6 "os" 7 "testing" 8 9 "github.com/docker/docker/api/types" 10 containertypes "github.com/docker/docker/api/types/container" 11 "github.com/docker/docker/container" 12 ) 13 14 func TestContainerDoubleDelete(t *testing.T) { 15 tmp, err := ioutil.TempDir("", "docker-daemon-unix-test-") 16 if err != nil { 17 t.Fatal(err) 18 } 19 defer os.RemoveAll(tmp) 20 daemon := &Daemon{ 21 repository: tmp, 22 root: tmp, 23 } 24 daemon.containers = container.NewMemoryStore() 25 26 container := &container.Container{ 27 CommonContainer: container.CommonContainer{ 28 ID: "test", 29 State: container.NewState(), 30 Config: &containertypes.Config{}, 31 }, 32 } 33 daemon.containers.Add(container.ID, container) 34 35 // Mark the container as having a delete in progress 36 container.SetRemovalInProgress() 37 38 // Try to remove the container when its state is removalInProgress. 39 // It should return an error indicating it is under removal progress. 40 if err := daemon.ContainerRm(container.ID, &types.ContainerRmConfig{ForceRemove: true}); err == nil { 41 t.Fatalf("expected err: %v, got nil", fmt.Sprintf("removal of container %s is already in progress", container.ID)) 42 } 43 }