diff --git a/dokku b/dokku index 6b4d00306..905d90733 100755 --- a/dokku +++ b/dokku @@ -122,9 +122,9 @@ case "$1" in cleanup) # delete all non-running container - docker ps -a | grep 'Exit' | awk '{print $1}' | xargs docker rm &> /dev/null & + docker rm $(docker ps -a -f "status=exited" -q) &> /dev/null & # delete unused images - docker images | grep '' | awk '{print $3}' | xargs docker rmi &> /dev/null & + docker rmi $(docker images -f "dangling=true" -q) &> /dev/null & ;; plugins) diff --git a/tests/unit/cleanup.bats b/tests/unit/cleanup.bats new file mode 100644 index 000000000..3c21b490a --- /dev/null +++ b/tests/unit/cleanup.bats @@ -0,0 +1,35 @@ +#!/usr/bin/env bats + +load test_helper + +setup() { + deploy_app +} + +teardown() { + destroy_app +} + +@test "remove exited containers" { + run dokku run $TEST_APP hostname + echo "output: "$output + echo "status: "$status + container="$output" + assert_success + run bash -c "docker ps -a -f 'status=exited' -q --no-trunc=false | grep -q $container" + echo "output: "$output + echo "status: "$status + assert_success + run dokku cleanup + echo "output: "$output + echo "status: "$status + assert_success + run bash -c "docker ps -a -f 'status=exited' -q --no-trunc=false | grep -q $container" + echo "output: "$output + echo "status: "$status + assert_failure + run bash -c "docker ps -a -f 'status=exited' -q --no-trunc=false" + echo "output: "$output + echo "status: "$status + assert_output "" +}