make test → test_local, test_docker, test_dind

test_local: run `bats tests/`. Requires `bats`.

test_docker: run docker and install bats in it.

Both of these options require that your local Docker daemon is running
in swarm mode.

test_dind: starts a Docker daemon and runs tests in that. Requires sudo
This commit is contained in:
3wc 2020-12-31 22:10:52 +02:00
parent 406b9e374e
commit 81782bb5f0
2 changed files with 25 additions and 4 deletions

View File

@ -1,6 +1,21 @@
.PHONY: test shellcheck docopt kcov codecov .PHONY: test shellcheck docopt kcov codecov
test: test_dind:
@sudo DOCKER_CONTEXT=default docker run \
-v $$(pwd):/workdir \
--privileged \
-d \
--name=abra-test-dind \
-e DOCKER_TLS_CERTDIR="" \
docker:dind
@DOCKER_CONTEXT=default docker exec \
-it \
abra-test-dind \
sh -c "apk add bats git bash && cd /workdir && bats /workdir/tests"
@DOCKER_CONTEXT=default docker stop abra-test-dind
@DOCKER_CONTEXT=default docker rm abra-test-dind
test_docker:
@DOCKER_CONTEXT=default docker run \ @DOCKER_CONTEXT=default docker run \
-it \ -it \
--rm \ --rm \
@ -8,6 +23,9 @@ test:
docker:dind \ docker:dind \
sh -c "apk add bats git bash && cd /workdir && bats /workdir/tests" sh -c "apk add bats git bash && cd /workdir && bats /workdir/tests"
test_local:
bats tests
shellcheck: shellcheck:
@docker run \ @docker run \
-it \ -it \

View File

@ -9,7 +9,7 @@ teardown() {
rm -rf "$ABRA_DIR" rm -rf "$ABRA_DIR"
} }
@test "abra server add/rm works" { @test "abra server (add|rm)" {
./abra server add swarm.test.com ./abra server add swarm.test.com
docker context ls | grep swarm.test.com docker context ls | grep swarm.test.com
[ -d $ABRA_DIR/servers/swarm.test.com ] [ -d $ABRA_DIR/servers/swarm.test.com ]
@ -20,7 +20,11 @@ teardown() {
./abra server swarm.test.com rm ./abra server swarm.test.com rm
} }
@test "abra app new/rm works" { @test "abra server init" {
./abra server default init
}
@test "abra app (new|rm)" {
./abra app new --server default --domain traefik.test.com --app-name traefik_test_com traefik ./abra app new --server default --domain traefik.test.com --app-name traefik_test_com traefik
[ -f $ABRA_DIR/servers/default/traefik_test_com.env ] [ -f $ABRA_DIR/servers/default/traefik_test_com.env ]
@ -35,7 +39,6 @@ teardown() {
} }
@test "abra app <domain> secret (insert|generate|rm)" { @test "abra app <domain> secret (insert|generate|rm)" {
# TODO 3wc: mock `server new` so we don't endlessly re-test it
./abra app new --server default --domain traefik_test_com --app-name traefik_test_com traefik ./abra app new --server default --domain traefik_test_com --app-name traefik_test_com traefik
./abra app traefik_test_com secret insert foobar v1 "foobar" ./abra app traefik_test_com secret insert foobar v1 "foobar"