frappe_docker/tests/easy-docker/40_docker_checks.bats

147 lines
3 KiB
Bash
Executable file

#!/usr/bin/env bats
load 'test_helper.bash'
setup() {
easy_docker_test_begin
easy_docker_test_source_docker_modules
}
teardown() {
easy_docker_test_end
}
@test "format_missing_commands_list joins newline separated commands" {
run format_missing_commands_list $'docker exec\ndocker compose pull\ndocker compose logs'
[ "${status}" -eq 0 ]
[ "${output}" = "docker exec,docker compose pull,docker compose logs" ]
}
@test "get_missing_docker_commands reports missing docker and compose subcommands" {
docker_supports_command() {
case "$*" in
"exec" | "compose pull")
return 1
;;
*)
return 0
;;
esac
}
run get_missing_docker_commands
[ "${status}" -eq 1 ]
[ "${output}" = $'docker exec\ndocker compose pull' ]
}
@test "ensure_docker fails when docker is not installed" {
# shellcheck disable=SC2317
command_exists() {
return 1
}
run ensure_docker
[ "${status}" -eq 1 ]
[[ "${output}" == *"docker is not installed."* ]]
[[ "${output}" == *"Install Docker first:"* ]]
}
@test "ensure_docker fails when docker compose is unavailable" {
# shellcheck disable=SC2317
command_exists() {
[ "${1}" = "docker" ]
}
# shellcheck disable=SC2317
docker_compose_available() {
return 1
}
run ensure_docker
[ "${status}" -eq 1 ]
[[ "${output}" == *"docker compose (Compose v2 command) is not available."* ]]
[[ "${output}" == *"This script requires Docker Compose v2 via the 'docker compose' command."* ]]
}
@test "ensure_docker fails when the docker daemon is not running" {
# shellcheck disable=SC2317
command_exists() {
[ "${1}" = "docker" ]
}
# shellcheck disable=SC2317
docker_compose_available() {
return 0
}
# shellcheck disable=SC2317
docker_daemon_running() {
return 1
}
run ensure_docker
[ "${status}" -eq 1 ]
[[ "${output}" == *"docker daemon is not running."* ]]
[[ "${output}" == *"Start the Docker daemon/service and retry."* ]]
}
@test "ensure_docker reports missing required docker commands" {
# shellcheck disable=SC2317
command_exists() {
[ "${1}" = "docker" ]
}
# shellcheck disable=SC2317
docker_compose_available() {
return 0
}
# shellcheck disable=SC2317
docker_daemon_running() {
return 0
}
# shellcheck disable=SC2317
get_missing_docker_commands() {
printf '%s\n' "docker exec" "docker compose pull"
return 1
}
run ensure_docker
[ "${status}" -eq 1 ]
[[ "${output}" == *"Missing required docker commands: docker exec,docker compose pull"* ]]
[[ "${output}" == *"Standard 'docker' and 'docker compose' commands are required."* ]]
}
@test "ensure_docker succeeds when all prerequisites are satisfied" {
# shellcheck disable=SC2317
command_exists() {
[ "${1}" = "docker" ]
}
# shellcheck disable=SC2317
docker_compose_available() {
return 0
}
# shellcheck disable=SC2317
docker_daemon_running() {
return 0
}
# shellcheck disable=SC2317
get_missing_docker_commands() {
return 0
}
run ensure_docker
[ "${status}" -eq 0 ]
[ -z "${output}" ]
}