@@ -16,7 +16,7 @@ PROJECT_NAME ?= $(notdir $(abspath .))
1616INFRA_SERVICES ?= db_pg
1717INFRA_INIT_SERVICES ?=
1818MIGRATION_DB_SERVICE ?= db_pg
19- STAIRWAY_TEST ?= tests/integration/with_infra /test_stairway.py
19+ STAIRWAY_TEST ?= tests/integration/migrations /test_stairway.py
2020
2121# -----------------------------
2222# Internal vars / aliases
@@ -44,10 +44,12 @@ PYTEST_PATHS_LIGHT := \
4444 tests/sanity \
4545 tests/unit \
4646 tests/integration/no_infra
47- PYTEST_PATHS_ALL := \
47+ PYTEST_PATHS_APP_INFRA := \
4848 $(PYTEST_PATHS_LIGHT ) \
4949 tests/smoke \
5050 tests/integration/with_infra
51+ PYTEST_PATHS_MIGRATIONS := \
52+ tests/integration/migrations
5153
5254# Pytest args
5355PYTEST_ARGS_VERBOSE := -s -vv
@@ -130,14 +132,14 @@ stop-all:
130132# Migrations
131133.PHONY : migration
132134migration : local-env
133- PROJECT_NAME=$(PROJECT_NAME ) \
134135 MIGRATION_DB_SERVICE=$(MIGRATION_DB_SERVICE ) \
136+ INFRA_INIT_SERVICES=" $( INFRA_INIT_SERVICES) " \
135137 STAIRWAY_TEST=$(STAIRWAY_TEST ) \
136138 $(MIGRATION ) " $( msg) "
137139
138140# Tests (with infra)
139- .PHONY : test-docker
140- test-docker : docker-env
141+ .PHONY : test-docker test-docker-app test-docker-migrations
142+ test-docker-app : docker-env
141143 rc=0; \
142144 $(DC_TEST_DOCKER ) down -v --remove-orphans > /dev/null 2>&1 || true ; \
143145 if [ -n " $( strip $( INFRA_SERVICES) ) " ]; then \
@@ -150,16 +152,36 @@ test-docker: docker-env
150152 fi ; \
151153 $(DC_TEST_DOCKER ) run --build --name $(TEST_RUNNER ) app \
152154 pytest $(PYTEST_ARGS_VERBOSE ) \
153- $(PYTEST_PATHS_ALL ) \
155+ $(PYTEST_PATHS_APP_INFRA ) \
154156 $(PYTEST_ARGS_COV_DOCKER ) \
155157 || rc=$$? ; \
156158 docker cp $(TEST_RUNNER ) :/tmp/.coverage ./.coverage.docker 2> /dev/null || true ; \
157159 docker rm $(TEST_RUNNER ) > /dev/null 2>&1 || true ; \
158160 $(DC_TEST_DOCKER ) down -v --remove-orphans; \
159- coverage html --data-file=.coverage.docker -d htmlcov-docker && \
160- echo " Coverage HTML report: htmlcov-docker/index.html" || true ; \
161161 exit $$ rc
162162
163+ test-docker-migrations : docker-env
164+ if [ -z " $( strip $( PYTEST_PATHS_MIGRATIONS) ) " ] || [ -z " $( strip $( MIGRATION_DB_SERVICE) ) " ]; then \
165+ echo " PYTEST_PATHS_MIGRATIONS or MIGRATION_DB_SERVICE is empty, skipping migrations tests" ; \
166+ exit 0; \
167+ fi ; \
168+ rc=0; \
169+ $(DC_TEST_DOCKER ) down -v --remove-orphans > /dev/null 2>&1 || true ; \
170+ $(DC_TEST_DOCKER ) up -d --build --wait --wait-timeout 180 $(MIGRATION_DB_SERVICE ) ; \
171+ $(DC_TEST_DOCKER ) run --build --no-deps --name $(TEST_RUNNER ) app \
172+ pytest $(PYTEST_ARGS_VERBOSE ) \
173+ $(PYTEST_PATHS_MIGRATIONS ) \
174+ || rc=$$? ; \
175+ docker rm $(TEST_RUNNER ) > /dev/null 2>&1 || true ; \
176+ $(DC_TEST_DOCKER ) down -v --remove-orphans; \
177+ exit $$ rc
178+
179+ test-docker :
180+ $(MAKE ) test-docker-app
181+ $(MAKE ) test-docker-migrations
182+ coverage html --data-file=.coverage.docker -d htmlcov-docker && \
183+ echo " Coverage HTML report: htmlcov-docker/index.html" || true
184+
163185.PHONY : prune
164186prune :
165187 $(DOCKER_PRUNE )
0 commit comments