.PHONY: install test test-core test-django test-fastapi test-react test-afi test-integration docker-up docker-down clean CORE = cores/mizan-python DJANGO = backends/mizan-django FASTAPI = backends/mizan-fastapi REACT = frontends/mizan-react AFI = tests/afi # ─── Setup ─────────────────────────────────────────────────────────────────── install: cd $(CORE) && uv pip install -e . cd $(DJANGO) && uv pip install -e ".[dev,channels]" cd $(FASTAPI) && uv pip install -e ".[dev]" cd $(REACT) && npm install # ─── Unit Tests ────────────────────────────────────────────────────────────── test: test-core test-django test-fastapi test-react test-afi test-core: cd $(CORE) && uv run --extra dev pytest test-django: cd $(DJANGO) && uv run pytest test-fastapi: cd $(FASTAPI) && uv run pytest test-react: cd $(REACT) && npm test # AFI conformance — verifies mizan-django and mizan-fastapi emit equivalent # schemas for the same @client fixture. Substrate-level gate, not e2e. test-afi: cd $(AFI) && uv run pytest # ─── Integration Tests ────────────────────────────────────────────────────── test-integration: docker-up @echo "Waiting for backend..." @timeout 30 sh -c 'until curl -sf http://localhost:8000/api/mizan/session/ > /dev/null 2>&1; do sleep 1; done' cd $(REACT) && npm run test:integration @$(MAKE) docker-down # ─── Docker ────────────────────────────────────────────────────────────────── docker-up: docker compose -f examples/django-react-site/docker-compose.test.yml up -d --build @echo "Backend starting at http://localhost:8000" docker-down: docker compose -f examples/django-react-site/docker-compose.test.yml down # ─── All ───────────────────────────────────────────────────────────────────── test-all: test test-integration # ─── Cleanup ───────────────────────────────────────────────────────────────── clean: docker compose -f examples/django-react-site/docker-compose.test.yml down -v --remove-orphans 2>/dev/null || true rm -rf $(DJANGO)/src/mizan.egg-info $(DJANGO)/dist $(DJANGO)/build rm -rf $(REACT)/dist $(REACT)/node_modules rm -f examples/django-react-site/backend/db.sqlite3