awesome-compose/angular/test.bats
Chad Metcalf d8a95fadd8
Don't parse empty strings.
Signed-off-by: Chad Metcalf <chad@docker.com>
2020-08-09 15:09:03 -07:00

66 lines
1.7 KiB
Bash

#!/usr/bin/env bats
load '../lib/test_helper.bash'
load '../lib/bats-support/load.bash'
load '../lib/bats-assert/load.bash'
cd ${BATS_TEST_DIRNAME}
function setup_file() {
check_deps
compose_cleanup
}
function teardown_file() {
compose_cleanup
}
@test "$(basename ${BATS_TEST_DIRNAME}): pull check" {
run docker-compose pull
assert_success
}
@test "$(basename ${BATS_TEST_DIRNAME}): build check" {
run docker-compose build
assert_success
}
@test "$(basename ${BATS_TEST_DIRNAME}): up check" {
run docker-compose up -d
assert_success
}
@test "$(basename ${BATS_TEST_DIRNAME}): ports check" {
for service in $(docker-compose ps -q); do
# simple test to check that any exposed port has something actually listening
# assumes format 22/tcp, 0.0.0.0:3000->3000/tcp
ports_string=$(docker ps --filter="ID=${service}" --format "{{.Ports}}")
if [[ ! -z ${ports_string} ]]; then
OIFS=${IFS}; IFS=','; service_port=("$ports_string"); IFS=${OIFS}; unset OIFS;
for i in "${service_port[@]}"; do
protocol=$(expr "${i}" : '.*\(...$\)')
# the || true here just makes sure bats doesn't fail the test because a
# port wasn't matched. We will check for empty ports later
port=$(expr "${i}" : '.*:\([0-9]*\)->' || true)
if [[ ${protocol} == "tcp" ]] && [[ ! -z ${port} ]]; then
run nc -z -v localhost "${port}"
assert_success
elif [[ "${protocol}" = "udp" ]] && [[ ! -z ${port} ]]; then
run nc -z -v -u localhost "${port}"
assert_success
fi
done
fi
done
}